주어진 문자열 , 나는 가장 긴 반복 (적어도 두 번) 하위 시퀀스를 찾고 싶습니다. 즉, 문자열을 찾고 싶습니다 이는 하위 시퀀스 (연속적 일 필요는 없음)입니다. 그런 . 그건,반은 연속으로 두 번 나타나는 문자열입니다. 참고 하위 시퀀스입니다 이지만 반드시 하위 문자열 일 필요는 없습니다.
예 :
'ababccabdc'의 경우 'abc'= 'abc'및 'abc'가 'ababccabdc'에 (최소한) 두 번 나타나기 때문에 'abbcc'입니다.
'addbacddabcd'의 경우 'dd'가 두 번 나타나기 때문에 하나의 옵션은 'dddd'입니다. 길이가 8 인 경우 : 'abcdabcd'. 'abcd'는 두 번 나타나는 'addbacddabcd'의 하위 문자열이기 때문입니다.
가장 긴 반복 서브 시퀀스를 찾는 데 관심이 있습니다. 이것을 "가장 긴 / 가장 큰 사각형 찾기"라고도하지만, 하위 문자열이 아닌 하위 문자열에 대해 사각형이 정의 된 기사를 많이 읽었습니다.
나는 무차별 대입 알고리즘을 쉽게 사용할 수 있습니다. 문자열의 중단 점에 대한 모든 옵션을 반복하여 가장 큰 / 가장 긴 공통 하위 시퀀스를 찾을 두 개의 문자열이 있지만 각 검사에는 다이나믹 프로그래밍 기술을 사용하여 . 가장 긴 공통 하위 시퀀스에 대한보다 효율적인 알고리즘을 찾았습니다. 따라서 러닝 타임은 .
가장 긴 반복 서브 시퀀스 문제에 대한보다 효율적인 알고리즘을 찾고 있습니다. 아마도 모든 중단 점을 반복한다는 아이디어는 너무 많은 시간을 낭비하고 반복 횟수를 줄일 수 있습니다. 또는 다른 태도를 가진 알고리즘이이 문제를 해결할 수 있습니다.
나는 많은 저널과 이전 질문에서 검색했으며, 찾은 결과의 대부분은 하위 문자열이 아니라 하위 문자열에 관한 것입니다.
또한 접미사 트리를 사용 하여이 작업을 수행 할 수 있지만 하위 문자열과 관련이 있으며 하위 아이디어를 위해 그러한 아이디어를 확장 할 수 있는지 확실하지 않습니다.
제 시간에 실행되는 솔루션을 찾고 있습니다 . 한 번에 존재하면 그것은 더 나을 것입니다 (그런 것이 있는지 확실하지 않습니다).
$
어느 쪽도 나타나지 않는 문자의 사본 또는 을 실행 한 다음 그것에 시간 알고리즘. 가장 긴 반복 서브 시퀀스의 두 "반쪽"은 반드시따라서 절반은 과 , LCS 문제 해결.