La forma más sencilla (en tiempo lineal, computacionalmente hablando) de determinar si una palabra finita $w$ es un factor (una subpalabra) de la palabra Fibonacci $S_\infty$ es la siguiente:
- Eliminar un 0 final de $w$ si está presente (sólo uno); si $w$ empieza por 1, añada un 0 inicial;
- La palabra así obtenida debe ser parseada unívocamente con (escrita como una concatenación de) 0 y 01; si no, entonces $w$ no es un factor de $S_\infty$ y ya está. Si $w=x_1x_2\cdots x_k$ es un análisis sintáctico de este tipo, dejemos que $y_i=0$ para todos $i$ tal que $x_i=01$ y $y_i=1$ en caso contrario (es decir, si $x_i=0$ ).
- Aplicar el mismo algoritmo a la nueva palabra $w'=y_1\cdots y_k$
- El original $w$ es un factor de $S_\infty$ si y sólo si se llega finalmente a la palabra 0 ó 1 aplicando recursivamente el procedimiento anterior.
La corrección puede demostrarse fácilmente, ya que la palabra Fibonacci es el límite de la sustitución $0\to 01$ , $1\to 0$ (folclore, véase, por ejemplo, Lothaire's Combinatoria algebraica de palabras ). Por ejemplo, $w=1010010010100$ es un factor ya que la secuencia de palabras generada por el algoritmo anterior es: $$w,\: 00101001,\: 10010,\: 010,\: 0\;.$$
Desde un punto de vista más dinámico, los desplazamientos de Sturm (como Fibonacci) no son ni de tipo finito ni sóficos. Sin embargo, no es difícil obtener la lista de factores mínimos prohibidos de la palabra Fibonacci, como sigue. Sea $S_i'$ sea el $i$ -enésimo prefijo palindrómico de $S_\infty$ que se obtiene eliminando los dos últimos caracteres de $S_i$ . Entonces una palabra finita $w$ es un factor de la palabra Fibonacci si y sólo si no contiene ninguno de los siguientes como factores, para todo $k\geq 1$ : $$1S_{2k-1}'1,\quad 0S_{2k}'0\;.$$ En otros términos, la secuencia de factores mínimos prohibidos es 11, 000, 10101, 00100100, 1010010100101, Véase, por ejemplo, Mignosi et al., Palabras y factores prohibidos