분할정복 한 사람이최대 1 만큼 일을 할 수 있다고 할 때 , 어떤 사람에게 64 만큼의 일이 있다면 이 일을 둘로 쪼개 32 씩 외주로 맡기면 된다 . 외주로 일을 받은 사람은 또 16 씩 쪼개서 외주로 맡긴다 . 최초의 한 사람 입장에서 봤을 때 이 일은 단순히 외주를 두번 맡겨서 끝난 일이다 .
3.
분할정복 (cont) 합병정렬(merge sort) 가 대표적인 분할정복의 예 합병정렬은 다음의 절차로 이루어진다 . 절반씩 나눠 각각을 정렬한 다음 전체를 정렬 이진트리 혹은 n 진트리로 상태가 완전히 독립될 수 있는 문제를 분할정복으로 풀 수 있다 .
동적계획법 분할정복과 달리문제가 서로 독립되게 나눠지지 않는 경우 사용 이미 계산된 부분 문제를 이용하여 다른 부분 문제를 완성 백트랙킹 처럼 지수로 증가하거나 분할정복처럼 로그로 증가하는 것이 아니라 변수의 개수에 따라 차수만 증가 테이블로 표현
6.
동적계획법 테이블의 차수에따라 1 차원 동적계획법 , 2 차원 동적계획법 , 3 차원 동적계획법 등으로 부름 테이블의 차수는 곧 배열의 차수가 됨 동적계획법을 발음하기 좋게 다이나믹이라고 부르기도 함
7.
1 차원 다이나믹최대 증가 부분 수열 문제 어떤 불규칙한 수열이 있을 때 가장 긴 증가 부분 수열을 뽑아내는 문제 즉 , 5 3 1 2 4 2 라는 수열이 있으면 1 2 4 가 답이 된다 . a[n]=max(a[i]+1) ( i :1~n-1, d[i] < d[n] ) 위와 같은 식을 점화식이라고 함
8.
2 차원 다이나믹최대 공통 문자열 문제 (LCS) 길이 i, j 인 두 문자열이 있을 때 , 첫 번째 문자열의 i 번째 문자와 두 번째 문자열의 j 번째 문자가 같다면 길이가 각각 i-1, j-1 일 때 공통 문자열 길이 + 1 이 된다 . a[i,j] = a[i-1,j-1]+1 ( if s1[i] == s2[j] ) a[i,j] = max(a[i-1,j], a[i,j-1]) ( if s1[i] != s2[j] )