Microsoft PowerPoint - 08_Dynamic_Prog_01.pptx

Similar documents
Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

Microsoft PowerPoint - ch03ysk2012.ppt [호환 모드]

Line (A) å j a k= i k #define max(a, b) (((a) >= (b))? (a) : (b)) long MaxSubseqSum0(int A[], unsigned Left, unsigned Right) { int Center, i; long Max

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

슬라이드 제목 없음

#Ȳ¿ë¼®

Chap 6: Graphs

public key private key Encryption Algorithm Decryption Algorithm 1

Chap 6: Graphs

chap 5: Trees

본문01

<3130C0E5>

슬라이드 제목 없음

歯kjmh2004v13n1.PDF

Chap 6: Graphs

- 2 -

I

04-다시_고속철도61~80p

Page 2 of 5 아니다 means to not be, and is therefore the opposite of 이다. While English simply turns words like to be or to exist negative by adding not,

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z)

2002년 2학기 자료구조

sna-node-ties


Microsoft PowerPoint - 27.pptx

大学4年生の正社員内定要因に関する実証分析

OR MS와 응용-03장

, ( ) 1) *.. I. (batch). (production planning). (downstream stage) (stockout).... (endangered). (utilization). *

<31342D3034C0E5C7FDBFB52E687770>

chap x: G입력

04 형사판례연구 hwp

chap01_time_complexity.key

Chapter 4. LISTS

09김정식.PDF

쉽게배우는알고리즘 8장. 동적프로그래밍 프로그래밍 Dynamic Programming (DP)

Gray level 변환 및 Arithmetic 연산을 사용한 영상 개선


6자료집최종(6.8))

0125_ 워크샵 발표자료_완성.key

Microsoft PowerPoint - 26.pptx

서강대학교공과대학컴퓨터공학과 (1/5) CSE3081 (2 반 ): 알고리즘설계와분석 < 프로그래밍숙제 2> (v_1.0) 담당교수 : 임인성 2015 년 10 월 13 일 마감 : 10 월 31 일토요일오후 8 시정각 제출물, 제출방법, LATE 처리방법등 : 조교가

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Microsoft PowerPoint Relations.pptx

¹Ìµå¹Ì3Â÷Àμâ

Page 2 of 6 Here are the rules for conjugating Whether (or not) and If when using a Descriptive Verb. The only difference here from Action Verbs is wh

5.스택(강의자료).key

DBPIA-NURIMEDIA


<313120C0AFC0FCC0DA5FBECBB0EDB8AEC1F2C0BB5FC0CCBFEBC7D15FB1E8C0BAC5C25FBCF6C1A42E687770>

step 1-1

歯1.PDF

WHO 의새로운국제장애분류 (ICF) 에대한이해와기능적장애개념의필요성 ( 황수경 ) ꌙ 127 노동정책연구 제 4 권제 2 호 pp.127~148 c 한국노동연구원 WHO 의새로운국제장애분류 (ICF) 에대한이해와기능적장애개념의필요성황수경 *, (disabi

74 현대정치연구 2015년 봄호(제8권 제1호) Ⅰ. 서론 2015년 1월 7일, 프랑스 파리에서 총격 사건이 발생했다. 두 명의 남성이 풍자 잡지 주간 샤를리 의 본사에 침입하여 총기를 난사한 것이다. 이 사건으로 인해 열두 명의 사람이 목숨을 잃었다. 얼마 후에


지능정보연구제 16 권제 1 호 2010 년 3 월 (pp.71~92),.,.,., Support Vector Machines,,., KOSPI200.,. * 지능정보연구제 16 권제 1 호 2010 년 3 월

Chapter 4. LISTS

High Resolution Disparity Map Generation Using TOF Depth Camera In this paper, we propose a high-resolution disparity map generation method using a lo

Journal of Educational Innovation Research 2019, Vol. 29, No. 1, pp DOI: (LiD) - - * Way to

歯49손욱.PDF

음주측정을 위한 긴급강제채혈의 절차와 법리, A Study on the Urgent Compulsory Blood

Microsoft PowerPoint - Chap2 [호환 모드]

<B3EDB9AEC1FD5F3235C1FD2E687770>

<32B1B3BDC32E687770>

조사연구 권 호 연구논문 한국노동패널조사자료의분석을위한패널가중치산출및사용방안사례연구 A Case Study on Construction and Use of Longitudinal Weights for Korea Labor Income Panel Survey 2)3) a

(JBE Vol. 21, No. 1, January 2016) (Regular Paper) 21 1, (JBE Vol. 21, No. 1, January 2016) ISSN 228


강의10

PowerPoint Presentation

Chapter 4. LISTS

10주차.key

Output file

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

歯15-ROMPLD.PDF

삼교-1-4.hwp

<C7C1B7A3C2F7C0CCC1EE20B4BABAF1C1EEB4CFBDBA20B7B1C4AA20BBE7B7CA5FBCADB9CEB1B35F28C3D6C1BE292E687770>

Buy one get one with discount promotional strategy

<32392D342D313020C0FCB0C7BFED2CC0CCC0B1C8F12E687770>

03장.스택.key

Stage 2 First Phonics

DBPIA-NURIMEDIA

<33312D312D313220C0CCC7D1C1F820BFB0C3A2BCB12E687770>

DIY 챗봇 - LangCon

11강-힙정렬.ppt

탄도미사일 방어무기체계 배치모형 연구 (Optimal Allocation Model for Ballistic Missile Defense System by Simulated Annealing Algorithm)

DBPIA-NURIMEDIA

03±èÀçÈÖ¾ÈÁ¤ÅÂ

09권오설_ok.hwp

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

우리들이 일반적으로 기호

ePapyrus PDF Document


GEAR KOREA


김경재 안현철 지능정보연구제 17 권제 4 호 2011 년 12 월

C++ Programming

untitled

PowerPoint 프레젠테이션

Microsoft Word - FunctionCall

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms

Transcription:

CSW3010 (Introduction to Computer Algorithms) 담당교수 : 임종석서강대학교컴퓨터공학과 Dynamic Programming ( 동적계획알고리즘 ) Optimization Problem 을해결하기위한알고리즘. Bottom-up Approach : 주어진 instance 에대하여 1. 크기가가장작은모든 sub-instance 들에대해해를각각구하여저장한다. 2. 다음크기가작은모든 sub-instance 들에대해해를구하여저장한다. 이를위하여사전에구한 sub-instance 들의해를이용한다. 3. 2의과정을원래주어진 instance에대한해를구할때까지계속반복한다. 실제해구하기 Bottom-up으로구한것은일반적으로 cost. Top-down으로실제해를구한다. 2

D&C Algorithm 과 Dynamic Programming D&C Algorithm A는 B와 C로분할되고,B는 D와 E로분할되며,C는 F와 G 로분할되었다 (D,E,F,G는각각더이상분할불가). D와 E의해를취합하여 B의해를구하고,F와 G의해를취합하여 C의해를구한다. 마지막으로 B와 C의해를취합하여 A의해를구한다. D&C Algorithm에서는 sub-instance의해를중복사용하지않는다. 3 D&C Algorithm 과 Dynamic Programming 동적계획알고리즘 먼저최소단위인 D, E, F, G의해를각각구한다. D, E, F (E, F, G) 의해를이용하여 B(C) 의해를구한다. Sub-instance의해를상위레벨에서중복사용할수있다. B 와 C 의해를구하는데 E, F 가공통으로필요. 그리고, sub-instance 들사이에의존적관계가존재하는데, 대부분의경우이관계가뚜렷하게보이지않아서 함축적인순서 (implicit order) 라고도한다. 4

All Pairs Shortest Path 이문제는각 vertex를시작점으로하여 Dijkstra의최단경로알고리즘을수행할수있다 O(n 3 ), where n = V. Warshall은 graph에서모든쌍의경로존재여부 (transitive closure) 를찾아내는 dynamic programming 알고리즘을제안했고, Floyd는이를변형하여모든 all pair shortest path를찾는알고리즘을개발하였다. Floyd algorithm의시간복잡도는 O(n 3 ) 으로 Dijkstra algorithm 을 (n-1) 번사용할때의시간복잡도와동일하다. 그러나 Floyd algorithm은매우간단하여 Dijkstra algorithm을사용하는것보다효율적이다. 5 Floyd Algorithm Design 동적계획알고리즘으로모든쌍최단경로문제를해결하려면먼저부분문제 (sub-instance) 들을찾아야한다. 이를위해일단그래프의점 (vertex) 의수가적을때를생각해보자. 그래프에 3개의점이있는경우, 점 i에서점 j까지의최단경로를찾으려면 2가지경로, 즉, 점 i에서점 j로직접가는경로와점 1을경유하는경로중에서짧은것을선택하면된다. 1 i j 6

Floyd algorithm의기본아이디어는경유가능한점들을 점 1로부터시작하여, 점 1과 2, 그다음엔점 1, 2, 3으로하나씩추가하여, 마지막에는점 1 n까지의모든점을경유가능한점들로하여, 모든쌍의최단경로의거리를계산하는것이다. 부분문제정의 ( 입력그래프의점을각각 1, 2, 3,, n 이라하자 ) D ijk = 점 {1, 2,, k} 만을경유하는, 점 i로부터점 j까지의모든경로중에서가장짧은경로의거리 점 1에서점 k까지의모든점들을경유할필요는없다. D ijk 는점i에서점 j 간의 edge (i,j) 의가중치일수도있다. 또한, 만일 k i, k j이고,k=0인경우, 점 0은그래프에없으므로어떤점도경유하지않는다는것을의미한다. 따라서 D ij0 은입력으로주어지는 edge (i,j) 의가중치이다. 7 크기가가장작은 sub-instance D ij1 은 i에서점 1을경유하여 j로가는경로와i에서 j로직접가는경로, 즉, 선분 (i,j), 중에서짧은거리이다. 따라서모든쌍 i와 j에대하여 D ij1 을계산하는것이가장작은부분문제들이다. 단,i 1, j 1이다. D i1 0 1 D 1j 0 i D ij 0 j D ij 1 8

Next Smallest Sub-instance 점 i에서점 2를경유하여 j로가는경로의거리와 D ij1 중에서짧은거리를D ij2 로정한다. 여기서, 점 2를경유하는경로의거리는 D i21 + D 2j1 이다. 모든쌍 i와 j에대하여 D ij2 를계산하는것이그다음으로큰부분문제들이다. 단,i 2, j 2이다. D i2 1 2 D 2j 1 i D ij 1 j D ij 2 9 General Case 점 i에서점 k를경유하여 j로가는경로의거리와 D k-1 ij 중에서짧은것을로정한다. 여기서, 점 k를경유하는경로의거리는 D k-1 ik + D k-1 kj 이고,i k, j k이다. D ik k-1 k D kj k-1 i j D ij k D ij k-1 이런방식으로 k 가 1 에서 n 이될때까지 D ijk 를계산해서, D ijn, 즉, 모든점을경유가능한점들로고려된모든쌍 i 와 j 의최단경로의거리를찾는방식이 Floyd 의모든쌍최단경로알고리즘이다. 10

Floyd Algorithm AllPairsShortest 입력 : 2차원배열 D, where, D[i,j] = edge (i,j) 의가중치. 만일 edge (i,j) 가존재하지않으면 D[i,j] =. 모든 i에대하여 D[i,i]=0. 출력 : 모든쌍최단경로의거리를저장한 2-d 배열 D. 1. for k = 1 to n 2. for i = 1 to n 3. for j = 1 to n 4. D[i,j] = min{ D[i,k] + D[k,j], D[i,j] }; D[i,k] k D[k,j] i old D[i,j] j new D[i,j] 11 Floyd Algorithm 의특징 Negative cost edge is allowed. However, the graph must have no cycle with negative cost. O(n 3 ) algorithm, where n is the number of vertices. 12

Running Example Initial Values of D[i][j] D 1 2 3 4 5 1 0 4 2 5 2 0 1 4 3 1 3 0 1 2 4-2 0 2 5-3 3 1 0 13 Running Example (cont d) k=1(d[][] 값이갱신된것만 ) D 1 2 3 4 5 1 0 4 2 5 2 0 1 4 3 1 3 0 1 2 4-2 0 2 5-3 3 1 0 D[4,2] = min{d[4,2], D[4,1]+D[1,2]} = min{, -2+4} = 2 D[4,3] = min{d[4,3], D[4,1]+D[1,3]} = min{, -2+2} = 0 14

Running Example (cont d) k=2(d[][] 값이갱신된것만 ) D 1 2 3 4 5 1 0 4 2 5 2 0 1 4 3 1 3 0 1 2 4-2 2 0 0 2 5-3 3 1 0 D[1,5] = min{d[1,5], D[1,2]+D[2,5]} = min{,4+4}=8 D[5,3] = min{d[5,3], D[5,2]+D[2,3]} = min{, -3+1} = -2 15 Running Example (cont d) k=3(d[][] 값이갱신된것만 ) D 1 2 3 4 5 1 0 4 2 5 2 0 1 4 3 1 3 0 1 2 4-2 2 0 0 2 5-3 3 1 0 D[1,4] = min{d[1,4], D[1,3]+D[3,4]} = min{5, 2+1} = 3 D[1,5] = min{d[1,5], D[1,3]+D[3,5]} = min{,2+2}=4 D[2,1] = min{d[2,1], D[2,3]+D[3,1]} = min{,1+1}=2 D[2,4] = 2, D[2,5] = 3, D[5,1] = -1, D[5,4] = -1. 16

Running Example (cont d) k=4(d[][] 값이갱신된것만 ) D 1 2 3 4 5 1 0 4 2 3 4 2 2 0 1 2 3 3 1 3 0 1 2 4-2 2 0 0 2 5-1 -3 3-1 0 D[2,1] = min{d[2,1], D[2,4]+D[4,1]} = min{2, 2 2} = 0 D[3,1] = min{d[3,1], D[3,4]+D[4,1]} = min{1, 1 2} = 1 D[5,1] = min{d[5,1], D[5,4]+D[4,1]} = min{ 1, 1 2} = 3 17 Running Example (cont d) k=5(d[][] 값이갱신된것만 ) D 1 2 3 4 5 1 0 4 2 3 4 2 0 0 1 2 3 3 1 3 0 1 2 4 2 2 0 0 2 5 3 3 3 1 0 D[1,2] = min{d[1,2], D[1,5]+D[5,2]} = min{4, 4 3} = 1 D[3,2] = min{d[3,2], D[3,5]+D[5,2]} = min{3, 2 3} = 1 D[4,2] = min{d[4,2], D[4,5]+D[5,2]} = min{2, 2 3} = 1 18

Running Example (cont d) Final All Pair Distances D 1 2 3 4 5 1 0 1 2 3 4 2 0 0 1 2 3 3 1 1 0 1 2 4 2 1 0 0 2 5 3 3 3 1 0 19 Finding the Actual Shortest Path Maintain P[i][j] which stores the highest index of the intermediate vertices if one exists. Otherwise, 0 (i.e. initially 0). The Algorithm 1. for k = 1 to n 2. for i = 1 to n 3. for j = 1 to n 4. if ( D[i,k] + D[k,j] < D[i,j] ) { 5. D[i,j] = D[i,k] + D[k,j]; 6. P[i][j] = k; // 추가 7. } 20

Finding the Actual Shortest Path Example : A Path Printing Function 1. void path ( index q, index r ) { 2. if ( P[q][r]!= 0 ) { 3. path( q, P[q][r] ); // print intermediate vertices // between q and P[q][r]. 4. print P[q][r]; 5. path( P[q][r], r ); // print intermediate vertices 6. } // between q and P[q][r]. 7. } If we want to print the shortest path from u to w, print u; path (u, w); print w; 21 Floyd Algorithm 의응용 맵퀘스트 (Mapquest), 구글 (Google) 웹사이트의지도서비스 자동차네비게이션서비스 지리정보시스템 (GIS) 에서의네트워크분석 통신네트워크와모바일통신분야 게임 산업공학, 경영공학의 Operations Research ( 운영연구 ) 로봇공학 교통공학 VLSI 디자인분야등 22

Dynamic Programming and Optimization Problems Steps for an algorithm using dynamic programming Definition : The principle of optimality is said to apply in a problem if an optimal solution to an instance of a problem always contains optimal solutions to all substances. Shortest Path If P(s,t) is a shortest path, P(s,w) and P(w,t) are also shortest path. The reverse is not true. That is, there may be a shortest path which does not contain w. s w t 23 In order to apply the principle of optimality, we need to show that the principle holds before assuming that an optimal solution can be obtained using dynamic programming. The case when the principle of optimality does not hold Longest simple path problem [v1, v3, v2, v4] is the longest simple path. However, [v1, v3] is not a longest simple path. [v1, v2, v3] is the longest simple path. 24

Matrix Multiplication [n n] [n n] matrix multiplication Multiplication : T(n) = n 3. Addition : T(n) = n 3. n 3 n 2 after a slight modification of the algorithm. How? Using the Strassen s Algorithm (D&C), we can do this in O(n 2.81 ) multiplications and additions/subtractions. 25 [p q] [q r] matrix multiplication The result is [p r] matrix. Needs pqr multiplications by using normal multiplication. Example : [10 20] [20 5] = [10 5] Needs 10 20 5 = 1,000 multiplications. 26

Associative Law ( 결합법칙 ) A B C=(A B) C=A (B C) Not Commutative A B B A Multiplications Reduction A B C=[10 20] [20 5] [5 15] (A B) C=[10 5] [5 15] 10 20 5+10 5 15 = 1000 + 750 = 1750 multiplications. A (B C) = [10 20] [20 15] 20 5 15 + 10 20 15 = 1500 + 3000 = 4500 multiplications. 27 Chained Matrix Multiplication Problem 연속된행렬들의곱셈에필요한최소곱셈횟수및행렬간의곱셈순서를찾는문제. Example 가능한모든순서를체크하여최소곱셈수를찾는경우 needs exponential time. 28

The principle of optimality applies in this problem. Any sub-order of an optimal order is also optimal. If A 1 ((((A 2 A 3 )A 4 )A 5 )A 6 ) is an optimal order, (A 2 A 3 )A 4 is also an optimal order for multiplying A 2 A 3 A 4. 29 Sub-Instances ( 부분문제들 ) 가장작은크기의부분문제 참고사항 이웃하는 행렬끼리만 곱할 수 있다. 예를 들어 A B C D E 계산에,B를건너뛰어서 A C를수행하거나, B와 C를건너뛰어서 A D를먼저계산할수없다. 따라서, 크기가 2인부분문제들은인접한행렬간의곱이 며, 이들모두에대한곱셈수를계산해두어야한다. 30

크기가 3, 4, 5 인부분문제 A B C D E 은크기가 2, 3, 4 인부분문제들의일부를사용하여계산하여야한다. 31 Algorithm Design We are to compute A 1 A 2 A n. Assume that dimension of A k is d k 1 d k for 1 k n. We define C[i][j] as C[i][j] = A i 부터 A j 까지곱하기위한최소곱셈수 ( i< j 인경우만 ). C[i][i] = 0. Any multiplication order can be partitioned into two sub-orders. For example, there are 5 cases if n=6. Therefore, the following recursive property holds: The optimal order is one of these. min 1,, 0, for 1. 32

C[i][j] Calculation (Diagonal Order) Set C[0][0]=C[1][1]= =C[n][n] = 0. Obtain C[1][2], C[2][3],,C[n 1][n]. Obtain C[1][3], C[2][4],,C[n 2][n]. Obtain C[1][4], C[2][4],,C[n 3][n], etc. And finally we get C[1][n]. L 1 2 3 1 2 3 4 5 1 2 3 4 5 0 0 0 0 0 Diagonal order L = 1, 2,, n 1. For each L, calculate C[1][1+L], C[2][2+L],,C[i][j=i+L],, C[n L][n]. For C[i][j], we need k (= i to j 1), because min 1,. 33 More on Indexing L=1일때, i=1: j=i+l=1+1=2(a 1 A 2 를계산하기위하여 ), i=2: j=2+1=3(a 2 A 3 을계산하기위하여 ), i=n L =n 1: j = (n 1) + 1 = n (A n 1 A n 을계산하기위하여 ) 크기가 2인부분문제의수 :(n 1) 개. L=2 일때, i=1: j=i+l=1+2 = 3 (A 1 A 2 A 3 을계산하기위하여 ), i=2: j=2+2=4(a 2 A 3 A 4 를계산하기위하여 ), i=n L =n 2: j = (n 2)+2=n(A n 2 A n 1 A n 을계산하기위해 ) 크기 3인부분문제의수 :(n 2) 개 34

L=3 일때 A 1 A 2 A 3 A 4,A 2 A 3 A 4 A 5,,A n 3 A n 2 A n 1 A n 등을계산. 크기가 4인부분문제의수가 (n 3) 개 L=n 2 일때 2 개의부분문제 A 1 A 2... A n 1,A 2 A 3... A n 을계산. L=n 1 일때 i=1 이면 j=1+(n 1) = n 이므로, 주어진문제 A 1 A 2... A n 을계산. 35 Finding Minimum min 1,. 함축적순서 36

Algorithm 입력 :A 1 A 2 A n, where the dimension of A i is d i-1 d i,1 i n. 출력 : 입력의행렬곱셈에필요한원소의최소곱셈횟수. 1. for i=1ton 2. C[i,i] = 0 ; // initialization 3. for L=1ton 1 { // diagonal loop. 4. for i=1ton L { 5. j = i + L; 6. C[i,j] = ; 7. for k=itoj 1 { 8. temp = C[i,k] + C[k+1,j] + d i-1 d k d j ; 9. if (temp < C[i,j]) 10. C[i,j] = temp; } } } 11. return C[1,n]; 37 Time Complexity 3. for L=1ton 1 { // n 1 iterations 4. for i=1ton L { // n 1, n 2,, 2, 1 iterations 5. j=i+l; 6. C[i,j] = ; 7. for k=itoj 1 { // L iterations (1, 2,, n 1) 8. temp = C[i,k] + C[k+1,j] + d i-1 d k d j ; 9. if (temp < C[i,j]) 10. C[i,j] = temp; } } } 11. return C[1,n]; Lines 3~10 s total iterations n 1+2(n 2)+3(n 3)+ +(n 2)2+n 1= = = 1 /2 1 2 1 /6= /6 /3 /3 1 =O(n 3 ). 38

Printing the Optimal Order Maintain P[i,j] which stores the value of k that give minimum. Initially, P[i,j] = 0. The Algorithm 3. for L=1ton 1 { 4. for i=1ton L { 5. j = i + L; 6. C[i,j] = ; 7. for k=itoj 1 { 8. temp = C[i,k] + C[k+1,j] + d i-1 d k d j ; 9. if (temp < C[i,j]) 10. C[i,j] = temp; P[i,j] = k; } } } 11. return C[1,n]; 39 If P[i,j] = k, the order will be (A i,, A k )(A k+1,, A j ). Therefore we may use the following procedure: void order ( index i, index j ) { // T(n)= (n). if ( i == j ) print Ai ; // print Ai else { k = P[i, j]; print ( ; // print ( order ( i, k ); // print the first partition order ( k+1, j ); // print the second partition print ) ; // print ) } 40

Edit Distance ( 편집거리문제 ) 문서편집기를사용하는중에하나의스트링 (string, 문자열 ) S를수정하여다른스트링 T로변환시키고자한다. 이변환을위하여삽입 (insert), 삭제 (delete), 대체 (substitute) 등의연산을사용할수있다. Edit Distance ( 편집거리 ) S를 T로변환시키는데필요한최소의편집연산횟수. Example : S = strong, T = stone Edit distance is 4. Is this optimal? 41 Example : S = strong, T = stone Edit distance is 4. Edit distance is 2. 42

The Principle of Optimality An Example with Minimum Edit Distance (=5) d : deletion s : substitution i : insertion Edit distance from INTE to EXEC above is optimal. Otherwise, there would be smaller edit distance, which results in smaller total edit distance than 5. Therefore, we can informally say that the problem of finding the minimum edit distance satisfies the principle of optimality. 43 Sub-Instances ( 부분문제 ) strong 을 stone 으로편집하고자한다. 만일각접두부 (prefix) 에대해서, 예를들어, stro 를 sto 로편집할때의편집거리를미리알고있으면, 각스트링의나머지부분에대해서, 즉, ng 를 ne 로의편집에대해서편집거리를찾음으로써, 주어진입력에대한편집거리를구할수있다. 44

스트링 S 와 T 의길이가각각 m 과 n 이라하고,S 와 T 의각문자를 s i 와 t j 라고하자 (i = 1, 2,, m, and j = 1, 2,,n). S=s 1 s 2 T=t 1 t 2 s i s m t j t n E[i, j] 를 S 의접두부의 i 개문자를 T 의접두부 j 개문자로변환시키는데필요한최소 edit distance 라고하자. Example : S = strong, T = stone E[2, 0] = st 를 null string으로바꾸기위한최소편집거리. E[0, 3] = null string을 sto 로바꾸기위한최소편집거리. E[2,0] = 2 (deletion 두번 ), E[0,3] = 3 이다 (insertion 세번 ). E[4, 3] = stro 를 sto 로바꾸기위한최소편집거리. E[6, 5] = S를 T로바꾸기위한최소편집거리. 45 Algorithm Design Example E[i, 0] = i and E[0, j] = j. E[1,1] = 0. No operation is needed ( s s ). E[1,2] = 1. One insertion is needed ( s st ). E[2,1] = 1. One deletion is needed ( st s ). E[2,2] = 0. No operation is needed ( st st ). 다음과같은세경우중하나 ( 최소값 ) 로생각할수있다. s st 수행후 s 2 = t 삭제. E[1,2] + 1 = 2. st s 수행후 t 2 = t 삽입. E[2,1] + 1 = 2. s s 수행후 no operation(s 2 =t 2 이므로 ). E[0,0] + 0 = 0. 46

Algorithm Design (cont d) E[4,3] ( 즉, stro sto 를위한최소편집거리 ) 세가지경우를생각할수있다. stro st 를수행하고,t 3 = o 추가. E[4,2] + 1. str sto 를수행하고,s 4 = o 삭제. E[3,3] + 1. str st 를수행하고, t4 = s3 이면 no operation. E[3,2] + 0. t4 s3 이면 substitution. E[3,2] + 1 ( 이예는해당안됨 ). 따라서, E[4,3] = min{e[4,2]+1, E[3,3]+1, E[3,2]+ (=0)}. 결론적으로, E[4,2], E[3,3], E[3,2] 를미리계산해두면 E[4,3] 를계산할수있다. 47 일반적으로 E[i 1,j],E[i,j 1], E[i 1, j 1] 의해가미리계산되어있으면 E[i, j] 를계산할수있으며, 다음과같이부분문제간의함축적인순서가있다. Recursive Property E[i, 0] = i, E[0, j] = j for i = 0, 1,, m and j = 0, 1,, n. Fori=1,2,,mandj=1,2,,n, E[i, j] = min {E[i 1, j] + 1,E[i,j 1] + 1,E[i,j]+ }, where =1ifs i t j,0otherwise. Insertion, deletion, substitution cost가각각다를경우위식에각operation에대응하는 cost로바꿔준다. 48

Indexing For E[i, j], we need E[i 1, j], E[i, j 1] and E[i, j]. Therefore, indexing by row-wise order is enough i E T ε s j t o n e S 0 1 2 3 4 5 ε 0 0 1 2 3 4 5 s 1 1 t 2 2 (i-1, j-1) (i-1, j) r 3 3 (i, j-1) (i, j) o 4 4 n 5 5 g 6 6 : empty string 49 Algorithm 입력 : 스트링 S, T, 단,S와T의길이는각각 m과 n이다. 출력 :S를T로변환하는편집거리, E[m,n] 1. for i=0 to m E[i,0]=i ; // 0번열의초기화 2. for j=0 to n E[0,j]=j ; // 0번행의초기화 3. for i=1 to m 4. for j=1 to n 5. E[i, j] = min{e[i, j 1]+1, E[i 1, j]+1, E[i 1, j 1]+α} 6. return E[m,n] Time Complexity = O(nm). 50

Example E T ε s t o n e S 0 1 2 3 4 5 ε 0 0 1 2 3 4 5 s 1 1 0 1 2 3 4 i t 2 2 1 0 1 2 3 r 3 3 2? o 4 4 n 5 5 g 6 6 j Since s 3 (= r ) t 2 (= t ), α =1. E[3, 2] = min{e[3, 1]+1, E[2, 2]+1, E[2, 1]+α} = min{3, 1, 2} =1=E[2, 2] + 1 (i.e., delete s 3 (= r )). 51 Finding the Operations Operation applied can be obtained by backtracking. Final Result of Our Example E T ε s t o n e j S i 0 1 2 3 4 5 ε 0 0 1 2 3 4 5 s 1 1 0 1 2 3 4 t 2 2 1 0 1 2 3 r 3 3 2 1 1 2 3 o 4 4 3 2 1 2 3 n 5 5 4 3 2 1 2 g 6 6 5 4 3 2 2 if α = 1 substitute t j else nop delete s i (i-1,j-1) (i-1,j) (i,j-1) insert t i minimum edit distance (i,j) 52

At (6, 5) α = 1, and hence E[6,5]=min{ 3, 3, 2 } Therefore, E[6,5] is from E[5,4] substitution ( g e ) E T ε s t o n e j S i 0 1 2 3 4 5 ε 0 0 1 2 3 4 5 s 1 1 0 1 2 3 4 t 2 2 1 0 1 2 3 r 3 3 2 1 1 2 3 o 4 4 3 2 1 2 3 n 5 5 4 3 2 1 2 g 6 6 5 4 3 2 2 if α = 1 substitute t j else nop delete s i (i-1,j-1) (i-1,j) (i,j-1) insert t i minimum edit distance (i,j) 53 At (5, 4) α = 0, and hence E[5,4]=min{ 3, 3, 1 } Therefore, E[5,4] is from E[4,3] no operation. E T ε s t o n e j S i 0 1 2 3 4 5 ε 0 0 1 2 3 4 5 s 1 1 0 1 2 3 4 t 2 2 1 0 1 2 3 r 3 3 2 1 1 2 3 o 4 4 3 2 1 2 3 n 5 5 4 3 2 1 2 g 6 6 5 4 3 2 2 At (4, 3) : no operation if α = 1 substitute t j else nop delete s i (i-1,j-1) (i-1,j) (i,j-1) insert t i (i,j) 54

At (3, 2) α = 1, and hence E[3,2]=min{ 3, 1, 2 } Therefore, E[3,2] is from E[2,2] delete s 3 = r. E T ε s t o n e j S i 0 1 2 3 4 5 ε 0 0 1 2 3 4 5 s 1 1 0 1 2 3 4 t 2 2 1 0 1 2 3 r 3 3 2 1 1 2 3 o 4 4 3 2 1 2 3 n 5 5 4 3 2 1 2 g 6 6 5 4 3 2 2 if α = 1 substitute t j else nop delete s i (i-1,j-1) (i-1,j) (i,j-1) insert t i (i,j) 55 At (2, 2) α = 0, and hence E[2,2]=min{ 2, 2, 0 } Therefore, E[2,2] is from E[1,1] no operation E T ε s t o n e j S i 0 1 2 3 4 5 ε 0 0 1 2 3 4 5 s 1 1 0 1 2 3 4 t 2 2 1 0 1 2 3 r 3 3 2 1 1 2 3 o 4 4 3 2 1 2 3 n 5 5 4 3 2 1 2 g 6 6 5 4 3 2 2 At (1, 1), no operation. if α = 1 substitute t j else nop delete s i (i-1,j-1) (i-1,j) (i,j-1) insert t i (i,j) 56

Edit Distance Problem 의응용 2개의스트링사이의편집거리가작으면, 이스트링들이서로유사하다고판단할수있으므로, 생물정보공학 (Bioinformatics) 및의학분야에서두개의유전자가얼마나유사한가를측정하는데활용된다. 철자오류검색 (Spell Checker), 광학문자인식 (Optical Character Recognition) 에서의보정시스템 (Correction System), 자연어번역 (Natural Language Translation) 소프트웨어등에도활용된다. 57