나는 불일치가 허용되지 않는 경우에도 그러한 희망이 없다는 담요 성명서를 작성하는 것을 주저하지만, 나는이 없다고 확신한다. 이유가 여기 있습니다.
시퀀스 정렬을 수행 할 때 생성되는 동적 프로그래밍 테이블의 크기는 대략 (문자열 길이)^(문자열 수)이므로 지수 런타임/공간 요구 사항입니다. 당신이 여기에 두 개의 문자열, ABC 및 ACB, 길이이 우리에게 3 × 3 테이블을 제공 3. 각과의 예입니다, 출처의 느낌을주고 :
A B C
A 0 1 2
C 1 1 1
B 2 1 2
우리는 왼쪽 상단에서 시작하여이 테이블을 초기화 거기에서부터 오른쪽 아래로 나아가고 있어요. 테이블의 모든 위치에 도달하는 데 드는 총 비용은 해당 위치의 번호에 의해 부여됩니다 (간단히하기 위해 삽입, 삭제 및 대체에 모두 비용이 1 인 것으로 가정합니다). 주어진 위치에 도달하기 위해 사용 된 작업은 이전 값에서 이동 한 방향에 의해 제공됩니다. 오른쪽으로 이동한다는 것은 맨 위 문자열에서 요소를 삽입한다는 것을 의미합니다. 아래로 이동하면 옆쪽 문자열에서 요소를 삽입합니다. 대각선으로 이동한다는 것은 요소를 위아래에서 정렬한다는 의미입니다. 이러한 요소가 일치하지 않으면 대체를 나타내며 거기에 도달하기 위해 비용이 증가합니다.
그리고 그게 문제입니다. 불일치가 허용되지 않는다고해도 테이블의 길이와 높이 (삽입/삭제)를 담당하는 작업을 배제하지 않습니다. 더욱이 불일치를 허용하지 않는다고해도 잠재적 인 가능성은 배제되지 않습니다. 테이블의 대각선 운동은 때때로 가능합니다. 두 요소가 일치하지 않는 경우가 아닙니다. 또한 요소가 일치하는지 확인해야하므로 기본적으로 여전히 이동을 고려하고 있습니다. 따라서 최악의 경우 시간을 개선 할 수 없어야하며 평균 또는 최악의 경우에도 상당한 영향을 미치지 않을 것입니다.
밝은면에서 이것은 생물 정보학에서 매우 중요한 문제이므로 사람들은 몇 가지 해결책을 생각해 냈습니다. 그들은 결함이 있지만 귀하의 경우에 충분히 잘 작동 할 수 있습니다 (특히 문자열이 4 글자로 구성되어 있지 않다면 DNA보다 가짜 배열을 가질 확률이 적기 때문에 특히 그렇습니다) 알파벳). 그래서 은 Star Alignment와 Neighbor Joining을 살펴 봅니다.