저는 지난 주 LCS 문제에 대한 연구를 해왔으며 질문이 있습니다.LCS 알고리즘의 서브 시퀀스 란 무엇입니까?
길이가 아닌 서브 시퀀스 자체를 찾는 데 관심이있을 때마다 보조 (string1.length X string2.length) 행렬을 작성하여 화살표가 왼쪽으로 합쳐져서 서브 시퀀스가 무엇인지 알아냅니다 화살표 또는 대각선 화살표, 우리가 어디서 왔는지에 따라 나중에 단계를 되돌아보고 하위 시퀀스 자체를 찾을 수 있습니다.
내 질문은 이것이다 :
(마지막 페이지에 http://www.columbia.edu/~cs2035/courses/csor4231.F13/lcs.pdf 여기 예 참조) 생각이 두 문자열을 실행하기 위해 다음과 같은 출력 매트릭스 :
- 0 0 0 0 0 0 0 0 0 0 0
- 0 0 0 0 0 0 0 1 1 1 1
- 0 0 0 0 0 0 0 1 2 2 2
- 0 0 0 0 0 0 0 1 2 3 3
- 0 0 0 1 1 1 1 1 2 3 4
- 0 0 0 1 1 1 1 1 2 3 4
- 0 0 0 1 1 1 1 1 2 3 4
- 0 0 0 1 1 1 1 1 2 3 4
- 0 0 0 1 1 1 1 1 2 3 4
- 0 0 0 1 1 1 1 1 2 3 4
- 0 0 0 1 1 2 2 2 2 3 4
: LCS를 통해 "abfcytyruc"와 "vxczcxabfc을"
더 복잡한 공간을 필요로하지 않고 행렬의 마지막 열만을 기반으로 일반적인 하위 시퀀스를 찾을 수 있다는 것은 사실입니까?
해당 링크를 제공해 주셔서 감사합니다. 하나의 질문이지만 ... 마지막 열 (또는 마지막 행, btw)의 모든 x_i에 대해 사실이 아닌 이유는 무엇입니까? x_i와 x_i + 1이 다른 경우 x_i + 1은 실제로 입력 문자열에서 공통 하위 시퀀스에 속하는 문자의 인덱스를 나타냅니다. –
작은 예제에서는 실패하는 것을 구성하기가 쉽지 않습니다. 나는 대답에 1을 더했다. – cytofu