Je ne suis donc pas complètement sûr, mais je pense que vous demandez de compter le nombre de chaînes de taille (sur l'alphabet ) où le facteur / sous-chaîne n'apparaît pas non?n{a,b}aa
Dans ce cas, vous pouvez adopter quelques approches combinatoires. Yuval et ADG ont tous deux donné des arguments plus simples et plus intuitifs, je suggère donc de vérifier leurs réponses! Voici l'un de mes favoris, c'est un peu étrange, mais c'est une approche très générale (et plutôt amusante).
Commençons par un langage plus simple, celui des mots qui commence et se termine par (également sans sous-chaîne de ). Nous pouvons regarder une chaîne admissible (par exemple ) comme une liste de séquences de s séparées par singulier s. Cela donne la construction:
Maintenant, comment comptons-nous les phrases qui appartiennent à cette langue?baabbbababbbbba
w=(b+a)∗b+
Imaginons que nous développons ces expressions. Que signifie ? Eh bien, c'est simplement
Maintenant, cela n'aura que très peu de sens, mais imaginons que soit une variable sur un champ numérique. En particulier, nous traiterons , et . Cela dit alors que
Essayons de voir la motivation derrière cette étrange interprétation. Il s'agit presque d' une transformation bijective. En particulier, nous voulons conserver le nombre de chaquee∗
e∗=ϵ∣e∣ee∣eee∣eeee∣…
eϵ→1a∣b→a+babc→a×b×ce∗→1+e+ee+eee+…
enmot, comme vous pouvez facilement le voir, nous le faisons. Cependant, il existe une différence cruciale entre les expressions de chaîne et les expressions numériques: la multiplication (concaténation en chaînes, en expressions numériques) est désormais commutative! Intuitivement, la commutativité nous permet de traiter toutes les permutations du même mot comme les mêmes; c'est-à-dire que nous ne faisons pas de entre l'expression et ; ils représentent tous les deux une chaîne avec 4 s et une . Par conséquent, cette transformation nous permet de conserver le décompte de chaque mot d'un certain nombre de et s, mais elle nous permet désormais de fermer les yeux sur les détails superflus dont nous ne nous soucions pas.
×bbbabbbabbbaab
Si vous revenez au précalcul, vous pourriez reconnaître cette série comme 11−e. Je sais que cela n'a aucun sens de réécrire cette expression régulière en tant que fonction à valeur numérique, mais juste à nu avec moi pendant un moment.
De même, e+=ee∗→e1−e. Ce qui signifie que nous pouvons traduirew dans
w→11−(b1−b×a)×b1−b
À son tour, nous pouvons simplifier cela jusqu'à
w(a,b)=b×11−(b+ba)
Cela nous dit que la langue west isomorphe à la langue (dont la traduction directe est déjà ) sans jamais avoir recours à des outils théoriques de la langue! C'est l'un des pouvoirs de traiter ces séries comme des fonctions de forme fermée: nous pouvons y effectuer des simplifications qui sont presque impossibles à réaliser autrement, ce qui les réduit à un problème plus simple.b(b∣ab)∗b1−b−ba
Maintenant, si vous vous souvenez encore de l'un de vos cours de calcul, vous vous souviendrez que certains types de fonctions (qui se comportent assez bien) admettent ces représentations en série appelées extensions de Taylor. Ne vous inquiétez pas, nous n'aurons pas vraiment à nous soucier de ces embêtants problèmes Calc 1; Je souligne simplement que ces fonctions peuvent être représentées comme la somme
pour que donne le nombre de mots satisfaisant tel qu'il ait exactement occurrences de et occurrences de
w(a,b)=∑i,jwijaibj
wijwiajb . Cependant, nous ne nous soucions pas particulièrement de savoir si quelque chose est un
a ou un
b. Nous nous soucions plutôt du nombre total de caractères dans la chaîne. Pour fermer les yeux entre
a et
b, nous pouvons juste (littéralement) les traiter de la même façon, par exemple
z=a=b et obtenir
w(z)=w(z,z)=z1−z−z2=∑kwkzk
où wk compte le nombre de mots de longueur satisfaisable k.
Il ne reste plus qu'à trouver wk. L'approche combinatoire habituelle ici serait de décomposer cette fonction rationnelle en sa fraction partielle: c'est-à-dire, étant donné le dénominateur1−z−z2=(z−ϕ)(z−ψ), nous pouvons réécrire z(z−ϕ)(z−ψ)=Az−ϕ+Bz−ψ(Il y a un peu d'algèbre impliqué ici, mais c'est une propriété universelle des fonctions rationnelles (un polynôme en divisant un autre)). Pour résoudre ce problème, vous pouvez refactoriser
Az−ϕ+Bz−ψ=z(z−ϕ)(z−ψ)
qui génère les contraintes
A+B=1,Aψ+Bϕ=0. Indépendamment de quoi
A et
B sont, rappelez-vous que
11−x=1+x+x2+…on peut réorganiser
w(z)=−Aϕ−z+−Bψ−z=(−Aϕ)11−zϕ+(−Bψ)11−zψ=(−Aϕ)(1+ϕ−1z+ϕ−2z2+…)+(−Bψ)(1+ψ−1z+ψ−2z2+…)
par conséquent
wk=(−Aϕ)ϕ−k+(−Bψ)ψ−k
Ici,
ϕ est le nombre d'or
1+5√2 et
ψ=−ϕ−1est son conjugué. Nous avons alors une description facile du comportement asymptotique du
w langue: il s'exécute dans
Θ(ϕn). En fait, si vous développez tout, vous constaterez que
wk=ϕk−ψk5–√=⌈ϕk5–√⌉
Il existe également une connexion complexe à une autre classe combinatoire commune. Ce ne sont que les chiffres de Fibonacci!
Maintenant, supposons que vous ayez wk, qui compte le nombre de chaînes de taille k qui commence et se termine par k (et ne contient pas non plus aa sous-chaînes), comment pouvons-nous construire une chaîne qui peut commencer ou se terminer par un a? Eh bien, c'est simple: une chaîne admissible est soit dansw (commence et se termine par b), ou c'est aw (commence avec a), ou c'est wa (se termine par a), ou c'est awa (commence et se termine par a). Donc:
f(n)=wn+wn−2+2∗wn−1
Rappeler que
wn est la séquence fibonacci, donc
wn−1+wn−2=wn, ce qui signifie que
f(n)=(wn+wn−1)+(wn−2+wn−1)=wn+1+wn=wn+2
Donc,
f(n)=fib(n+2)=⌈ϕn+25√⌉
Maintenant, vous n'avez probablement pas besoin de faire cette analyse, mais le simple fait de savoir que cette séquence est une séquence de Fibonacci décalée devrait vous donner une idée d'autres interprétations combinatoires que vous pouvez essayer.