허슈베르크 알고리즘

Hirschberg's algorithm

컴퓨터 공학에서, Hirschberg의 발명가 Dan Hirschberg의 이름을 딴, Hirschberg의 알고리즘은 두 문자열 사이의 최적 시퀀스 정렬을 찾는 동적 프로그래밍 알고리즘이다.최적성은 한 문자열을 다른 문자열로 변경하는 데 필요한 삽입, 교체, 삭제 및 null 조치의 비용의 합으로 정의되는 레벤슈틴 거리로 측정된다.허쉬버그의 알고리즘은 단순히 니들맨의 보다 공간 효율적인 버전으로 설명된다.분열과 정복을 사용하는 룬슈 알고리즘.[1]Hirschberg의 알고리즘은 DNA단백질 서열의 최대 글로벌 정렬을 찾기 위해 계산 생물학에서 일반적으로 사용된다.

알고리즘 정보

Hirschberg의 알고리즘은 최적의 시퀀스 정렬을 위해 일반적으로 적용할 수 있는 알고리즘이다.블라스트FASTA는 차선의 경험적 발견이다.xy가 문자열인 경우, 여기서 길이(x) = n, 길이(y) = m인 경우 Needleman–Wunsch 알고리즘은 O(nm) 공간을 사용하여 O(nm) 시간에서 최적의 정렬을 찾는다.허쉬버그의 알고리즘은 니들맨을 교묘하게 변형시킨 것이다.아직 O(nm) 시간이 걸리지만 O(min{n, m}) 공간만 있으면 되고 실전이 훨씬 빠른 운슈 알고리즘.[2]알고리즘의 한 가지 적용은 DNA 또는 단백질 서열의 배열 정렬을 찾는 것이다.또한 공통 확산 도구와 같이 두 데이터 집합 사이에서 가장 긴 공통 연속성을 계산하는 공간 효율적인 방법이기도 하다.

허쉬버그 알고리즘은 니들맨-에서 파생될 수 있다.다음 사항을 관찰하여 Wunsch 알고리즘:[3]

  1. Needleman-의 현재 행과 이전 행만 저장하여 최적의 정렬 점수를 계산할 수 있다.Wunsch 점수 매트릭스;
  2. if is the optimal alignment of , and is an arbitrary partition of , there exists a partition }의}}}{{\displaystyle Y= (, )+ ( r, r) .

알고리즘 설명

denotes the i-th character of , where . denotes a substring of size , ranging from the i-th to the j-th cha 의 racter ( ) 의 역 버전이다

(는) 정렬할 시퀀스다.Let be a character from , and be a character from . We assume that , and 은(는) 잘 정의된 정수 값 함수다.이러한 함수는 삭제하고 y {\를) 하고 x {\displaystyle 을(를) y 교체하는 비용을 나타낸다.

( , ) 을 정의하며 Needleman–의 마지막 줄을 반환한다.Wunsch 점수 매트릭스 e(, j) {\ {

기능 NWScore(X, Y)Score(0,0)=0을 끓여2*(길이(Y)+j에 1)배열=1Score(0j)length(Y))Score(0, j-1)+Ins(Yj)에 나는 1에 length(X)Init 배열 Score(1,0))Score(0,0)+Del(자이)j에=1에 length(Y)scoreSub)Score(0, j-1)+Sub(자이, Yj)scoreDel//)Score(0j)정도씩 생겨나고 있다.+D엘(Xi) 점수Ins = Score(1, j - 1) + Ins(Yj)             Score(1, j) = max(scoreSub, scoreDel, scoreIns)         end         // Copy Score[1] to Score[0]         Score(0, :) = Score(1, :)     end for j = 0 to length(Y)         LastLine(j) = Score(1, j)     return LastLine

언제든지 은(는) 스코어 매트릭스의 가장 최근의 두 행만 필요로 한다는 점에 유의하십시오.따라서 은(는) 최소 길이 ( ( ), ( ) { 공간으로 구현된다.

Hirschberg 알고리즘은 다음과 같다.

기능 Hirschberg(X, Y)Z)""W)""만약 length(X)== 0에 나는 정도 1에 length(Y)Z)Z+'-의 W)W+이 씨 말 다른 만약 length(Y)== 0에 나는 정도 1에 length(X)Z)Z+자이 W)W+'-의 끝 다른 만약 length(X)== 1또는 length(Y)== 1(Z, W))NeedlemanWunsch(X, Y)e.lse         xlen = length(X)         xmid = length(X) / 2         ylen = length(Y)          ScoreL = NWScore(X1:xmid, Y)         ScoreR = NWScore(rev(Xxmid+1:xlen), rev(Y))         ymid = arg max ScoreL + rev(ScoreR)          (Z,W) = Hirschberg(X1:xmid, y1:ymid) + Hirschberg(Xxmid+1:xlen, Yymid+1:ylen)     end return (Z, W)

In the context of observation (2), assume that is a partition of . Index is computed such that and ()

내버려두다

최적 맞춤은 다음과 같다.

W = AGTACCA Z = --TATGC-

실제로, 이는 해당 니들맨을 역추적함으로써 검증할 수 있다.Wunsch 행렬

T   A   T   G   C 0  -2  -4  -6  -8 -10  A -2  -1   0  -2  -4  -6  G -4  -3  -2  -1   0  -2  T  -6  -2  -4   0  -2  -1  A  -8  -4   0  -2  -1  -3  C -10  -6  -2  -1  -3   1  G -12  -8  -4  -3   1  -1  C -14 -10  -6  -5  -1   3 A -16 -12  -8  -7  -3   1

하나는 (, ){\에 대한 최상위 수준의 호출로 시작한다.첫 번째 인수를 으로 나눈 값: X= + X (, ) 은(는) 다음과 같은 매트릭스를 생성한다.

T A T G C 0 -2 -4 -6 -8 -10 A -2 -1 0 -2 -4 -6 G -4 -3 -2 -1 0 -2 -2 -2 -1 T -6 -2 -4 -2 -1 A -8 -4 -4 -3

마찬가지로, ( ( ) , (){\이(가) 다음 매트릭스를 생성함:

C G T T 0 -2 -4 -6 -8 -10 A -2 -1 -3 -5 -5 -4 -6 C -4 0 -2 -4 -6 -6 C -4 -4 -4 G -6 -2 2 0 -2 -4 -4 -4 0 -8 -4 -3

이들의 마지막 행(후자를 역행한 후)과 그 합은 각각 다음과 같다.

스코어L = [ -8 -4 0 -2 -1 -3 ] rev(ScoreR) = [ -3 -1 1 0 -4 -8 ] 합 = [-11 -5 -5 -11]

최대값(볼드체로 표시됨)은 다음에 표시됨ymid = 2, 파티션 = + Y.

전체 허쉬버그 재귀(간단함을 위해 생략)는 다음과 같은 트리를 생산한다.

(AGTACGCA,TATGC)                /               \         (AGTA,TA)             (CGCA,TGC)          /     \              /        \      (AG, )   (TA,TA)      (CG,TG)     (CA,C)               /   \        /   \                   (T,T) (A,A)  (C,T) (G,G)

나무의 잎에는 최적의 정렬이 들어 있다.

참고 항목

참조

  1. ^ 허쉬버그의 알고리즘.
  2. ^ "The Algorithm".
  3. ^ Hirschberg, D. S. (1975). "A linear space algorithm for computing maximal common subsequences". Communications of the ACM. 18 (6): 341–343. CiteSeerX 10.1.1.348.4774. doi:10.1145/360825.360861. MR 0375829. S2CID 207694727.