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∗
mi∗= ϵ ∣ e ∣ e e ∣ e e e ∣ e e e e ∣ …
miϵ → 1a ∣ b → a + ba b c → a × b × cmi∗→ 1 + e + e e + e e e + …
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.
×b b b a bb b a b bsiunaunasi
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 - e
Del mismo modo, . Lo que significa que podemos traducir en
mi+= emi∗→mi1 - ew
w →11 - (si1 - b× a )×si1 - b
A su vez, podemos simplificar esto a
w ( a , b ) = b ×11 - ( b + b a )
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.wb ( b ∣ a b)∗si1 - b - b a
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 ( a , b )=∑i , jwyo junayosij
wyo jwyounajsiunasi. 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= a = bw ( 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- ψ )
A + B = 1 , A ψ + B ϕ = 0UNAsi11 - x= 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ϕ)11−zϕ+(−Bψ)11−zψ=(−Aϕ)(1+ϕ−1z+ϕ−2z2+…)+(−Bψ)(1+ψ−1z+ψ−2z2+…)
wk= ( - A ϕ )ϕ- k+ ( - B ψ )ψ- k
ϕ1 +5 5√2ψ = -ϕ- 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 quewkkka aunawsia wunaw aunaa w auna
F( n ) =wnorte+wn - 2+ 2 ∗wn - 1
wnortees la secuencia de Fibonacci, entonces , lo que significa que
Por lo tanto,
wn - 1+wn - 2=wnorteF( n )= (wnorte+wn - 1) + (wn - 2+wn - 1)=wn + 1+wnorte=wn + 2
F( n ) = fib ( n + 2 ) = ⌈ϕn + 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.