Fibonacci Wörter


11

Ich bin in meinem alten tschechischen Algorithmus-Lehrbuch auf folgendes Problem gestoßen, leider ohne Hinweise oder Lösung.

"Wir definieren Fibonacci-Wörter als , F 1 = b , F n + 2 = F n F n + 1 , wobei a und b allgemeine Buchstaben sind. Wie können Sie in einer bestimmten Zeichenfolge (über einem potenziell großen Alphabet) das längste Fibonacci-Unterwort in linearer Zeit finden? "F0=aF1=bFn+2=FnFn+1ab

Ich kenne eine Lösung in quadratischer Zeit, kann sie aber nicht auf linear reduzieren. Kann mich jemand in die richtige Richtung weisen?


3
Wie heißt dieses alte tschechische Algorithmus-Lehrbuch?
Saeed

Müssen Unterwörter in diesem Buch zusammenhängend sein (dh Faktoren)?
Klaus Draeger

Antworten:


12

F(i,j)ijF(i2,j)F(i1,j+fib(i))O(nlogn)i.

O(n/fib(i))F(i2,j)F(i2,j)F(i,j)O(n)ii2i

FO(nlogn)FO(n) logn


Können Sie mir sagen, warum Sie dachten, dass dynamische Programmierung die beste Wahl für dieses Problem ist? Wo werden wir Probleme haben, wenn wir eine statische Programmierung wie C verwenden ?
Tarit Goswami

1
Dynamische Programmierung ist eine Algorithmus-Entwurfstechnik, keine Klasse von Programmiersprachen.
David Eppstein
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.