Límite superior de fib (n + 2)


8

Tengo un problema de tarea que me deja perplejo porque las matemáticas están más allá de lo que he hecho, aunque nos dijeron que no era necesario resolver esto matemáticamente. Solo proporcione un límite superior cercano y justifíquelo.

Sea Proporcione un límite superior asintótico en como .

f(n)=|{w{a,b}n:aaw}|.
fn

Hasta ahora:

nstringscompared to 2n122n0232n1352n3482n85132n186212n43

Las matemáticas que me darán un límite exacto están más allá de mí. Obviamente, es un límite superior, aunque no es particularmente apretado.O(2n)

¿Alguna sugerencia sobre lo que debería probar?


1
Bienvenido a la informática! El título que ha elegido no es adecuado para representar su pregunta. Tómese un tiempo para mejorarlo; Hemos recogido algunos consejos aquí . ¡Gracias!
Raphael

Muchas personas considerarían fib (n + 1) como una expresión perfectamente fina para un límite superior. Aún mejor, ya que es exacto :-)
gnasher729

Respuestas:


8

Así que no estoy completamente seguro, pero creo que está pidiendo contar el número de cadenas de tamaño (sobre el alfabeto ) donde el factor / subcadena no aparece bien?n{a,b}aa

En este caso, hay algunos enfoques combinatorios que puede tomar. Tanto Yuval como ADG han dado argumentos más simples e intuitivos, ¡así que definitivamente sugiero que revisen sus respuestas! Este es uno de mis favoritos, es un poco extraño, pero es un enfoque muy general (y divertido).

Comencemos con un lenguaje más simple, el de las palabras que comienza y termina con (también sin subcadenas de ). Podemos ver una cadena admisible (por ejemplo, ) como una lista de secuencias de s separadas por singular s. Esto da la construcción: Ahora, ¿cómo contamos las oraciones que pertenecen a este lenguaje?baabbbababbbbba

w=(b+a)b+

Imaginemos que estamos expandiendo estas expresiones. ¿Qué denota ? Bueno, es simplemente Ahora, esto tendrá muy poco sentido, pero imaginemos que es una variable sobre algún campo numérico. En particular, trataremos , , y . Esto luego dice que Tratemos de ver la motivación detrás de esta extraña interpretación. Esto es casi una transformación biyectiva. En particular, queremos preservar el recuento de cadae

e=ϵeeeeeeeeee
eϵ1unasiuna+siunasiCuna×si×C
mi1+mi+mimi+mimimi+...
minortepalabra, que, como puede ver fácilmente, lo hacemos. Sin embargo, hay una diferencia crucial entre las expresiones de cadena y las expresiones numéricas: ¡la multiplicación (concatenación en cadenas, en expresiones numéricas) ahora es conmutativa! Intuitivamente, la conmutatividad nos permite tratar todas las permutaciones de la misma palabra como la misma; es decir, no desambiguamos entre la expresión y ; ambos representan una cadena con 4 sy uno . Por lo tanto, esta transformación nos permite preservar el recuento de cada palabra de un número determinado de s y s, pero ahora nos permite hacer la vista gorda sobre los detalles superfluos que no importa.×sisisiunasisisiunasisisiunaunasi

Si vuelve al cálculo previo, puede reconocer esta serie como . Sé que no tiene ningún sentido reescribir esta expresión regular como una función numéricamente valiosa, pero solo estoy desnuda por un momento.11-mi

Del mismo modo, . Lo que significa que podemos traducir en mi+=mimimi1-miw

w11-(si1-si×una)×si1-si

A su vez, podemos simplificar esto a

w(una,si)=si×11-(si+siuna)

Esto nos dice que el idioma es isomorfo al idioma (cuya traducción directa ya es ) sin tener que recurrir a ninguna teoría del lenguaje ¡herramientas! Este es uno de los poderes de tratar estas series como funciones de forma cerrada: podemos realizar simplificaciones en ellas que son casi imposibles de realizar de otro modo, reduciéndolo así a un problema más simple.wsi(siunasi)si1-si-siuna

Ahora, si aún recuerda alguno de sus cursos de cálculo, recordará que ciertos tipos de funciones (que se comportan lo suficientemente bien) admiten estas representaciones de series conocidas como expansiones de Taylor. No se preocupe, realmente no tendremos que preocuparnos por esos molestos conjuntos de problemas de Calc 1; Solo estoy señalando que estas funciones se pueden representar como la suma para que proporcione el número de palabras que satisfacen modo que tenga exactamente ocurrencias de y ocurrencias de . Sin embargo, no nos importa particularmente si algo es una o una

w(una,si)=yo,jwyojunayosij
wyojwyounajsiunasi. Por el contrario, solo nos importa la cantidad total de caracteres en la cadena. Para hacer la "vista gorda" entre y , podemos (literalmente) tratarlos de la misma manera, por ejemplo, dejar que y obtener unasiz=una=si
w(z)=w(z,z)=z1-z-z2=kwkzk

donde cuenta el número de palabras satisfactorias de longitud .wkk

Ahora, todo lo que queda por hacer es encontrar . El enfoque combinatorio habitual aquí sería descomponer esta función racional en su fracción parcial: es decir, dado el denominador , podemos reescribir (Aquí hay un poco de álgebra, pero esta es una propiedad universal de funciones racionales (un polinomio que divide a otro) funciones). Para resolver esto, puede refactorizar que genera las restricciones . Independientemente de lo que son y , recuerde quewk1-z-z2=(z-ϕ)(z-ψ)z(z-ϕ)(z-ψ)=UNAz-ϕ+siz-ψ

UNAz-ϕ+siz-ψ=z(z-ϕ)(z-ψ)
UNA+si=1,UNAψ+siϕ=0 0UNAsi11x=1+x+x2+ , bueno, podemos reorganizar por tanto Aquí, es la proporción áurea y es su conjugado. Luego tenemos una descripción fácil del comportamiento asintótico del lenguaje : se ejecuta en
w(z)=Aϕz+Bψz=(Aϕ)11zϕ+(Bψ)11zψ=(Aϕ)(1+ϕ1z+ϕ2z2+...)+(-siψ)(1+ψ-1z+ψ-2z2+...)
wk=(-UNAϕ)ϕ-k+(-siψ)ψ-k
ϕ1+5 52ψ=-ϕ-1wΘ(ϕnorte). De hecho, si expande todo, encontrará que También hay una conexión intrincada con otra clase combinatoria común. ¡Esto es solo los números de Fibonacci!
wk=ϕk-ψk5 5=ϕk5 5

Ahora, suponga que tiene , que cuenta el número de cadenas de tamaño que comienzan y terminan con (y también no contiene subcadenas ), ¿cómo podemos construir una cadena que pueda comenzar o terminar con una ? Bueno, es simple: una cadena admisible está en (comienza y termina con ), o es (comienza con ), o es (termina con ), o está (comienza y termina con ) Por lo tanto: Recuerde quewkkkunaunaunawsiunawunawunaunaunawunauna

F(norte)=wnorte+wnorte-2+2wnorte-1
wnortees la secuencia de Fibonacci, entonces , lo que significa que Por lo tanto,wnorte-1+wnorte-2=wnorte
F(norte)=(wnorte+wnorte-1)+(wnorte-2+wnorte-1)=wnorte+1+wnorte=wnorte+2
F(norte)=mentira(norte+2)=ϕnorte+25 5

Ahora probablemente no tenga que hacer este análisis, pero solo tener la idea de que esta secuencia es una secuencia de Fibonacci desplazada debería darle una idea de algunas otras interpretaciones combinatorias que puede probar.


7

La respuesta de Lee Gao es excelente. Aquí hay una cuenta diferente. Considere el siguiente autómata:

Autómata para el idioma.

Este es un autómata finito inequívoco (UFA) sin transiciones : un NFA tal que cada palabra tiene exactamente una ruta de aceptación. El número de palabras de longitud es, por lo tanto, el número de rutas de longitud desde el estado inicial a un estado de aceptación (ya que no hay transiciones ).ϵnortenorteϵ

Podemos contar el número de caminos en un gráfico usando álgebra lineal. Sea la matriz de transición del autómata: es el número de flechas de a (cada flecha está asociada con un solo símbolo). Entonces que es exactamente el número de caminos de longitud 2 desde hasta . De manera similar, es el número de caminos de longitud desde hasta . En nuestro caso, queremos contar el número de caminos de longitud desdeMETROMETRO(qyo,qj)qjqyo

METRO2(qyo,qj)=kMETRO(qyo,qk)METRO(qk,qj),
qjqyoMETROnorte(qyo,qj)norteqjqyonorteq0 0 a , y entonces La forma estándar de calcular dicha expresión es diagonalizando (o, más generalmente, calculando la forma de Jordan ). Los valores propios de se calculan fácilmente para ser , por lo que para alguna matriz , {q0 0,q1}
F(norte)=(11)(1110 0)norte(10 0).
METROMETROMETRO1±5 52PAGS
F(norte)=(11)PAGS((1+5 52)norte0 00 0(1-5 52)norte)PAGS-1(10 0)=UNA(1+5 52)norte+si(1-5 52)norte,
para algunos coeficientes . Para determinar podemos diagnosticar explícitamente, o simplemente configurar un sistema lineal usando valores conocidos de . Desde y , este último enfoque muestra que UNA,siUNA,siMETROFF(0 0)=1F(1)=2
UNA+si=11+5 52UNA+1-5 52si=2
Al resolver este sistema (p. Ej., Utilizando la eliminación de Gauss), descubrimos que y . Por lo tanto, El mismo enfoque funciona para todos los idiomas regulares.UNA=5 5+35 510si=5 5-35 510
F(norte)=5 5+35 510(1+5 52)norte+5 5-35 510(1-5 52)norte=Θ(λmaxnorte), dónde λmax=1+5 52.

Este es un enfoque divertido! Siempre me encanta ver reducciones algebraicas lineales para problemas relacionados con la ruta :)
Lee

4

@Lee Gao es demasiado complejo (ni siquiera he leído todo), aquí hay un enfoque simplista:

Sea f (n) todas las cadenas deseadas, de las cuales a (n) sean cadenas que terminen en a y b (n) sean cadenas que terminen en b.

Ahora, por cada cadena que termina en b, podemos agregar directamente a para obtener ba al final y una cadena válida: Tenga en cuenta que no podemos agregar a al final de las cadenas que al final, de lo contrario tendremos aa al final.

(1)una(norte)=si(norte-1)

Podemos agregar b a cualquier cadena:

(2)si(norte)=una(norte-1)+si(norte-1)

Ahora en y sustituye en : Entonces b (n) es fib (n) y como a ( n) es b (n-1) por lo tanto a (n) es fib (n-1). Ahora f (n) es: Como fib (n) es , por lo tanto f (n) es , . (Tomando como constante y descuidando para que grande obtenga una asíntota)nortenorte-1(1)(2)

si(norte)=si(norte-2)+si(norte-1)
F(norte)=una(norte)+si(norte)=Fyosi(norte)+Fyosi(norte-1)=Fyosi(norte+1)
(φnorte-φ-norte)/ /5 5O(φnorte)φ=1+5 521.618φ/ /5 5φ-nortenorte

Nota: fib (0) = 0, fib (1) = 1.


Sin embargo, su límite superior no es muy bueno: cada idioma sobre tiene como máximo palabras de longitud ! {una,si}2nortenorte
Yuval Filmus

@YuvalFilmus cuál es el problema, desea un límite más cercano y luego useFyosi(norte)=(ϕnorte-ϕ-norte)/ /5 5
RE60K

¡Esto es genial! Los pares de construcciones inductivas de paso de bloqueo de y era lo que estaba pensando. unasi
Lee
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.