MODIFIÉ POUR AJOUTER : Il est maintenant essentiellement répondu à cette question; veuillez consulter cette entrée de blog pour plus de détails. Merci à tous ceux qui ont posté des commentaires et des réponses ici.
QUESTION ORIGINALE
Il s'agit, espérons-le, d'une version plus intelligente et mieux informée d'une question que j'ai posée sur MathOverflow. Lorsque j'ai posé cette question, je ne connaissais même pas le nom du domaine des mathématiques dans lequel se trouvait mon problème. Maintenant, je suis presque sûr que cela réside dans la combinatoire algorithmique des mots partiels. (Livre récent sur le sujet ici .)
Je veux faire une liste de mots sur lettres. Chaque mot a une longueur exactement . Le problème est que, si est dans la liste, où est un symbole générique / indifférent, alors ne peut plus réapparaître dans la liste. (Il en va de même si , ou si et donc le sous-mot interdit est .)
Exemple où et :
<- interdit car apparaissait dans la ligne au
dessus de a e e d <- interdit car apparaissait sur la première ligne
La littérature sur les «mots partiels évitables» que j'ai trouvée a tous été infinitaire - éventuellement un modèle de mot est inévitable si la taille du mot est assez grande. Je voudrais trouver des versions finitaires de ces théorèmes. Alors, question:
Etant donné un mot partiel de forme dans un alphabet de l lettres, combien de mots de longueur k l' évitent et peuvent-ils être explicitement produits en temps polynomial?
Je ne m'attends pas à ce que la question ci-dessus soit difficile et, à moins qu'il n'y ait une subtilité qui me manque, je pourrais la calculer moi-même. La vraie raison pour laquelle je poste sur ce site est parce que j'ai besoin d'en savoir beaucoup plus sur les propriétés de ces listes de mots pour mon application, j'espère donc que quelqu'un pourra répondre à la question de suivi:
Cela a-t-il été étudié en général? Quels sont les articles qui examinent, non seulement si un mot partiel est finalement inévitable, mais "combien de temps cela prend" avant qu'il ne devienne inévitable?
Merci.
la source
Réponses:
Voici un cas particulier: le nombre de mots binaires de longueur tels qu'aucun deux n'apparaissent consécutivement est F ( k + 3 ) , où F ( n ) est le n t h nombre de Fibonacci (commençant par F ( 1 ) = 1 , F ( 2 ) = 1 ). La preuve se fait via la représentation de Zeckendorf .k F(k+3) F(n) nth F(1)=1,F(2)=1
EDIT: Nous pouvons étendre ce cas spécial initial dans le cas spécial légèrement plus grand de . Considérons des chaînes de longueur k sur un alphabet de taille l + 1 de sorte que la lettre a n'apparaisse pas deux fois de suite. Soit f ( k ) le nombre de ces chaînes (que nous appellerons "valides"). Nous affirmons que: f ( k ) = l ∗ f ( k - 1 ) + l ∗ f ( k - 2 )a◊0a k l+1 a f(k)
Vous pouvez vérifier que ce qui suit est un formulaire fermé pour la récurrence ci-dessus: où nous comprenons lorsque .
EDIT # 2: Supprimons un autre cas - un . Nous appellerons des chaînes sur un alphabet à éléments qui ne contiennent pas la sous-chaîne , "valide" et laissons désigner l'ensemble des chaînes valides de longueur . De plus, définissons comme le sous-ensemble de composé de chaînes commençant par et comme étant celles ne commençant pas par . Enfin, soit,,.◊0b,a≠b l ab Sk k Tk Sk b Uk b f(k)=|Sk| g(k)=|Tk| h(k)=|Uk|
On observe que et . Ensuite, nous déduisons les récurrences suivantes: La première vient du fait que l'ajout d'un au début de tout élément de produit un élément de . La seconde vient de l'observation que l'on peut construire un élément de en ajoutant n'importe quel caractère mais au début de n'importe quel élément de ou en ajoutant n'importe quel caractère sauf ou au début de n'importe quel élément dans .g(0)=0,h(0)=1,f(0)=1 g(1)=1,h(1)=l−1,f(1)=l
Ensuite, nous réorganisons les équations de récurrence pour obtenir:
Nous pouvons obtenir une solution de forme fermée plutôt opaque à cette récurrence en nettoyant un peu avec la génération de choses fonctionnelles ou, si nous sommes paresseux, en nous dirigeant directement vers Wolfram Alpha . Cependant, avec un peu de recherche et de fouille dans OEIS , nous constatons que nous avons en fait: où est le polynôme de Chebyshev du deuxième type (!) .
la source
Une approche complètement différente pour la première question réutilise les réponses à la question récente sur la génération de mots dans une langue régulière : il suffit d'appliquer ces algorithmes de longueur sur la langue régulière où est l'alphabet.k Σ∗aΣjbΣ∗ Σ
la source
Mis à jour: cette réponse est incorrecte :
en supposant que est fixe, nous pouvons compter le nombre de façons dont un motif peut être mis en correspondance: le premier symbole peut être mis en correspondance à une position , et nous avons possibilités avant ce point, entre et , et pour le reste de la chaîne, donc un total de cas. Comme indiqué par Tsuyoshi Ito dans les commentaires, ce nombre n'est pas le nombre de mots différents correspondant àj a◊jb a 1≤i≤k−j−1 li−1 lj a b lk−j−i−1
Pour la première question, étant entendu que n'est pas fixe, c'est-à-dire que l'on veut éviter d'incorporer le mot :j ab
Pour la deuxième question, je n'ai pas grand-chose à suggérer; il y a une relation avec l'intégration de mots, mais les résultats que je connais sur les mauvaises séquences du lemme de Higman ne s'appliquent pas immédiatement.
la source