두 개의 기호 와 b가 주어지면 k 번째 피보나치 문자열을 다음과 같이 정의합시다 .
와 문자열 연결을 나타내는.
따라서 우리는 :
- ...
문자열이 주어 에 의해 형성된 n 개의 심볼, 우리는 모든 피보나치 서브 스트링으로 정의 문자열 의 S 도의 적절한 선택을위한 피보나치 문자열 및 B .
문제
주어지면 가장 긴 피보나치 부분 문자열을 찾고 싶습니다.
사소한 알고리즘
문자열 S 의 각 위치 에 대해 F ( 2 ) 가 시작 한다고 가정합니다 ( i 번째 및 ( i + 1 ) 번째 기호가 고유한지 확인하기에 충분합니다 ). 이 경우 F ( 3 ) 으로 확장 한 다음 F ( 4 ) 등 으로 확장 할 수 있는지 확인하십시오 . 그런 다음 i + 1 위치에서 다시 시작하십시오 . 위치 n에 도달 할 때까지 반복하십시오 .
피보나치 속성을 사용하여이 알고리즘의 실행 시간에 대해 더 엄격한 범위를 찾으려면 어떻게해야합니까?