Palabras de Fibonacci


11

Me encontré con el siguiente problema en mi antiguo libro de texto de algoritmo checo, lamentablemente no tuve pistas ni solución.

"Definimos las palabras de Fibonacci como , F 1 = b , F n + 2 = F n F n + 1 , donde a y b son letras generales. Cómo en una cadena dada (sobre un alfabeto potencialmente grande) puede encuentra la sub-palabra de Fibonacci más larga en tiempo lineal? "F0=aF1=bFn+2=FnFn+1ab

Conozco una solución en tiempo cuadrático, pero no puedo reducirla a lineal. ¿Alguien puede señalarme en la dirección correcta?


3
¿Cuál es el nombre de este antiguo libro de texto de algoritmo checo ;-)
Saeed

¿Se requiere que las subpalabras sean contiguas (es decir, factores) en este libro?
Klaus Draeger

Respuestas:


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


¿Puede decirme por qué pensó que la programación dinámica sería la mejor opción para este problema? ¿Dónde enfrentaremos problemas si usamos alguna programación estática como C ?
tarit goswami

1
La programación dinámica es una técnica de diseño de algoritmos, no una clase de lenguajes de programación.
David Eppstein
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.