1 / 13

양승혁 Yang_ka@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.11.6

알 고 리 즘. Chap 8.4~8.5. 양승혁 Yang_ka@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.11.6. 목차. 행렬 곱셈 순서 ( Matrix-chain Multiplication) ( i ⅹ j ) 행렬 ⅹ ( j ⅹ k ) 행렬 문제 알고리즘 재귀적 구현 동적 프로그램 최장 공통 부분순서 ( LCS) 최장 공통 부분순서란 ? 알고리즘 재귀적 구현 동적 프로그램. 행렬 곱셈 순서 (1/5).

hallam
Download Presentation

양승혁 Yang_ka@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.11.6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 알 고 리 즘 Chap 8.4~8.5 양승혁 Yang_ka@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.11.6

  2. 목차 • 행렬 곱셈 순서(Matrix-chain Multiplication) • (iⅹj) 행렬 ⅹ (jⅹk) 행렬 문제 • 알고리즘 • 재귀적 구현 • 동적 프로그램 • 최장 공통 부분순서(LCS) • 최장 공통 부분순서란? • 알고리즘 • 재귀적 구현 • 동적 프로그램 IST (Information Sciences & Technology) Laboratory

  3. 행렬 곱셈 순서(1/5) • (iⅹj) 행렬ⅹ(j ⅹk) 행렬 문제 • iⅹ j ⅹ k • 29=1ⅹ7+2ⅹ2+3ⅹ6 이런 계산을 i ⅹ k번 수행 • 에 경우 IST (Information Sciences & Technology) Laboratory

  4. 행렬 곱셈 순서(2/5) • 알고리즘 • 가능한 모든 순서를 구한 후 그 중에 가장 최적인 순서를 선택 • n개의 행렬을 곱하기 위해 괄호로 묶는 방법 tn: n개의행렬(A1, A2, …, An)을 곱할 수 있는가능한모든순서의 수 tn-1: tn의 부분집합으로서A1을 맨 마지막으로곱하는경우 tn-1 : tn의부분집합으로서An을 맨 마지막으로곱하는경우 IST (Information Sciences & Technology) Laboratory

  5. 행렬 곱셈 순서(3/5) cij = i≤ k ≤ j-1 (Ai…Ak)와(Ak+1…Ai)를곱하는비용 (Ai…Ak)를위한최소비용 (Ak+1 …Aj)를위한최소비용 • 최적의 순서 • A1,A2,… An이 각각 p0ⅹp1, p1ⅹp2 ,…,pn-1ⅹpn행렬 • cij: 행렬 Ai, …, Aj의 곱 Ai…Aj를 계산하는 최소 비용 • Ak의 차원: pk-1ⅹpk 0 if i=j min {cik + ck+1, j+pi- 1pk pj} if i<j IST (Information Sciences & Technology) Laboratory

  6. 행렬 곱셈 순서(4/5) rMatrixChain(i, j) ▷행렬곱Ai…Aj를 구하는 최소 비용 구하기 { • if (i= j) then return 0;    ▷ 행렬이 하나뿐인 경우의 비용은 0 min ← ∞; • fork ← ito j-1 { • q ← rMatrixChain(i, k) + rMatrixChain(k+1, j) + pi-1pkpj ;  if (q < min) then min ← q; } return min; } • 재귀적 구현 • 엄청난 중복호출이 발생 IST (Information Sciences & Technology) Laboratory

  7. 행렬 곱셈 순서(5/5) matrixChain(i, j) { fori ← 1 ton m[i, i] ← 0; ▷ 행렬이 하나뿐인 경우의 비용은 0 forr ← 1 ton-1 ▷ r: 문제 크기를 결정하는 변수, 문제의 크기 = r+1 fori ← 1 ton-r { j ← i+r; m[i, j] ← min{m[i, k] + m[k+1, j] + pi-1pkpj}; } return m[1, n]; } • 동적 프로그램 • 시간 복잡도 IST (Information Sciences & Technology) Laboratory

  8. 최장 공통 부분순서(Longest Common Subsequence) • 정의 • 두 문자열에 공통적으로 존재하는 가장 긴 부분순서 • <bcdb>는 문자열 <abcbdab>의 부분순서 • <abcbdab>와 <bdcaba>에 대해서 <bcba>는 두 문자열에 존재하는 최장 공통 부분순서 • 최적 공통 부분구조 X={x1,x2,...,xm}Y=(y1,y2,...,yn} • xm=yn이면 Xm과 Yn의 LCS의 길이는 Xm-1과 Yn-1의 LCS의 길이 보다 1이 크다 • xm≠ yn이면 Xm과 Yn의 LCS의 길이는 Xm과 Yn-1의 LCS의 길이 와 Xm-1과 Yn의 LCS의 길이 중 큰 것과 같다 • (m,n) 크기의 문제의 해가 (m,n-1) 크기의문제와 (m-1,n)크기의 문제의 해를 포함 IST (Information Sciences & Technology) Laboratory

  9. 최장 공통 부분순서(2/5) 0 if m = 0 or n = 0 cm-1, n-1 + 1 if m, n > 0 and xm= yn max{cm-1, n,cm, n-1} if m, n > 0 and xm≠yn cnm= • 성질 X={x1,x2,...,xm}과 Y=(y1,y2,...,yn}, 그리고 Z={z1,z2,..,zk} • Xm= Yn이면Zk= Xm=Yn이고 Zk-1은 Xn-1과 Ym-1의 LCS • Xm!= Yn이고 Zk!= Xm이면 Zk 은 Xm-1과 Yn의 LCS • Xm!= Yn이고Zk!= Yn이면 Zk 은 Xm과 Yn-1의 LCS • Cnm:두문자열Xn= <x1x2…xn>과Ym= <y1y2…ym>의 LCS 길이 IST (Information Sciences & Technology) Laboratory

  10. 최장 공통 부분순서(3/5) LCS(m, n) ▷ 두 문자열Xm과 Yn의LCS길이 구하기 { if (m = 0 orn = 0) then return 0; else if (xm= yn) then return LCS(m-1, n-1) + 1; else return max(LCS(m-1, n), LCS(m, n-1)); } • 알고리즘 • 재귀적 구현 • 시간복잡도 • 지수 함수 이상 IST (Information Sciences & Technology) Laboratory

  11. 최장 공통 부분순서(4/5) • 엄청난 중복호출이 발생 IST (Information Sciences & Technology) Laboratory

  12. 최장 공통 부분순서(5/5) LCS(m, n) ▷ 두 문자열 Xm과 Yn의 LCS 길이 구하기 { fori ← 0 tom                 C[i, 0] ← 0; forj ← 0 ton                 C[0, j] ← 0; fori ← 1 tom forj ← 1 ton if (xm= yn) then C[i, j] ← C[i-1, j-1] + 1;   else C[i, j] ← max(C[i-1, j], C[i, j-1]); return C[m, n]; } • 동적 프로그램 • 시간 복잡도 IST (Information Sciences & Technology) Laboratory

  13. Thank you Yang_ka@kunsan.ac.kr 군산대학교 정보통계학과 정보과학기술 연구실 2012.01.03 양승혁 Yang_ka@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.11.6

More Related