2017/07/14 2

Python으로 알고리즘 공부 11. 최장 공통 부분 수열

최장 공통 부분 수열(Longest Common Subsequence)두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.diff 명령은 LCS 문제를 해결하는 데 기반을 둔다. diff utility다음과 같이 두 항목이 있다고 하자.a b c d f g h j q za b c d e f g i j k r x y z 여기서 공통이 되는 가장 긴 부분은 다음과 같다.a b c d f g j z 두개 항목을 비교하여 추가(+)되거나 삭제(-)된 부분을 다음과 같이 나타낸다.e h i q k r x y + - + - + + + + LCS 함수의 정의두 수열은 다음과 같이 정의.​, ​. Python CodeA =..

아카이빙 2017.07.14

Python으로 알고리즘 공부 10. 연쇄행렬 최소곱셈 알고리즘

연쇄행렬 최소곱셈 알고리즘 (Matrix Chan Multiplication)연쇄행렬 최소곱셈은 동적 프로그래밍(Dynamic Programming)을 활용하여 연산을 최적화 시키는 것행렬은 결합법칙이 성립한다.(AB)C = A(BC) 그러나 행렬을 곱하는 순서에 따라 곱하는 횟수가 달라진다.예를들어,A : 10x30 행렬B : 30x5 행렬C : 5x60 행렬일 경우(AB)C는 (10x30x5) + (10x5x60) = 1,500 + 3,000 = 4,500번의 연산으로 구할 수 있지만A(BC)는 (30x5x60) + (10x30x60) = 9,000 + 18,000 = 27,000번의 연산을 해야 구할 수 있다. 즉, 연쇄행렬 최소곱셈은 곱하는 순서에 따라 연산의 순서가 달라지는데, 이를 최적화 하는..

아카이빙 2017.07.14