초록
두 서열 A와 B간의 최적정렬을 찾는 문제는 동적프로그래밍 알고리즘을 사용하여 효과적으로 해결 될 수 있다. 하지만, 길이가 각각 m, n인 두 서열, $S_1$, $S_2$를 정렬하기 위해서는 O(m*n)의 시간과 공간 복잡도를 갖기 때문에 서열의 길이가 길어질 경우에는 시간과 공간 비용 문제로 인해 적용 할 수 없게 된다. 실제 계산상에 제한요소로 작용하는 공간비용 문제를 해결하기 위해 Hirschberg에 의해 제시된 선형공간 알고리즘은 이 문제를 O(n*m)의 시간복잡도와 O(n+m)의 공간복잡도로서 해결하였다. 컴퓨터 기술의 발전으로 CPU의 처리속도가 향상되고, 사용가능한 주기억장치의 공간이 확대됨에 따라, 기억공간은 더 사용하더라도 처리속도는 높일 수 있는 방법이 필요하다. 이를 위해, 본 논문에서는 공간 분할 방법을 통하여 공간 소모는 선형공간 알고리즘보다 많지만, 처리 속도는 빠른 O(n*m)의 시간과 O(n+m)의 공간비용을 갖는 알고리즘을 제안한다. 또한 분할 시 서열의 길이변화에 따른 분할 수(d) 문제를 일반화하고, 입/출구 노드 개념을 이용하여 불필요한 연산을 제거하였다. 선형공간 알고리즘이 (m+n)의 공간으로 2*m*n에 가까운 속도를 갖는데 비해, 본 알고리즘은 (m+n)*d의 공간으로 m*n에 가까운 결과를 보임을 증명과 실험결과로부터 확인한다.
The problem of finding an optimal alignment between sequence A and B can be solved by dynamic programming algorithm(DPA) efficiently. But, if the length of string was longer, the problem might not be solvable because it requires O(m*n) time and space complexity.(where, $m={\mid}A{\mid},\;n={\mid}B{\mid}$) For space, Hirschberg developed a linear space and quadratic time algorithm, so computer memory was no longer a limiting factor for long sequences. As computers's processor and memory become faster and larger, a method is needed to speed processing up, although which uses more space. For this purpose, we present an algorithm which will solve the problem in quadratic time and linear space. By using division method, It computes optimal alignment faster than LSA, although requires more memory. We generalized the algorithm about division problem for not being divided into integer and pruned additional space by entry/exit node concept. Through the proofness and experiment, we identified that our algorithm uses d*(m+n) space and a little more (m*n) time faster than LSA.