Combien de mots de longueur

9

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 l lettres. Chaque mot a une longueur exactement k . Le problème est que, si ajb est dans la liste, où est un symbole générique / indifférent, alors ajb ne peut plus réapparaître dans la liste. (Il en va de même si a=b , ou si j=0 et donc le sous-mot interdit est ab .)

Exemple où k=4 et l=5 :

abcd
bdce
dcba <- interdit cardc apparaissait dans la ligne au
dessus de a e e daeed <- interdit carad 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?ajblk

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.

Aaron Sterling
la source
(1) Je ne comprends pas la correspondance entre votre première question et l'exemple qui lui a été cité. Quelle est l'entrée dans votre exemple? (2) Dans votre première question, utilisez-vous k à deux fins différentes?
Tsuyoshi Ito
Concernant (2), oui j'ai fait une erreur, maintenant édité, merci.
Aaron Sterling
Concernant (1), je voudrais savoir "combien de place il me reste" une fois qu'un mot partiel apparaît. Mais oui, la vraie question est de savoir comment produire des listes comme celle qui apparaît dans l'exemple (sans les mots partiels interdits). Ainsi, l'entrée serait les valeurs de et l , et un nombre souhaité de mots à produire dans une liste, qui avaient tous "la propriété d'éviter les mots partiels apparaissant précédemment". kl
Aaron Sterling
2
@Aaron, je ne sais pas quelle est votre application ultime, mais les séquences (et généralisations) de Davenport-Schinzel demandent la longueur maximale d'une chaîne qui ne contient pas de motif répétitif particulier. C'est une notion connexe.
Suresh Venkat
1
Seth Pettie a également étudié des généralisations très astucieuses aux sous-matrices interdites.
Suresh Venkat

Réponses:

4

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 .kF(k+3)F(n)nthF(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 )a0akl+1af(k)

f(k)=lf(k1)+lf(k2)
L'intuition est que nous pouvons construire une chaîne valide de longueur k soit: a) en joignant l'une des l lettres qui ne sont pas a à une chaîne valide de longueur k - 1 , ou b) à côté de la lettre a puis de toute autre lettre sauf a à une chaîne valide de longueur k - 2 .
f(0)=1,f(1)=l+1
klak1aak2

Vous pouvez vérifier que ce qui suit est un formulaire fermé pour la récurrence ci-dessus: où nous comprenons lorsque .

f(k)=i=0k(k+1ii)lki
(ni)=0i>n

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,ablabSkkTkSkbUkbf(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)=1g(1)=1,h(1)=l1,f(1)=l

g(k+1)=f(k)h(k+1)=(l1)h(k)+(l2)g(k)
bSkTk+1Uk+1bUkabTk

Ensuite, nous réorganisons les équations de récurrence pour obtenir:

f(k+1)=g(k+1)+h(k+1)=f(k)+(l1)h(k)+(l2)g(k)=f(k)+(l1)f(k)g(k)=lf(k)f(k1)

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 (!) .

f(k)=Uk(l/2)
Ukkth
mhum
la source
C'est très intéressant, merci.
Aaron Sterling
2

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ΣΣ

Sylvain
la source
Merci. Je me demandais s'il pouvait y avoir un lien, et votre réponse ici m'a donné l'impulsion dont j'avais besoin pour examiner les documents référencés là-bas, et l'un d'eux résout définitivement un morceau d'un des problèmes que je considère.
Aaron Sterling
0

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 àjajba1ikj1li1ljablkji1

i=1kj1li1ljlkji1=(kj1)lk2
ajbpuisqu'un seul mot peut correspondre au même modèle de différentes manières. Par exemple, correspond trois fois dans , deux fois dans et deux fois dans . Nous pouvons essayer de compter le nombre de façons de faire correspondre les motifs plusieurs fois et de présenter une expression "inclusion-exclusion", mais les façons dont les motifs peuvent se chevaucher la rendent trop longue.aaaaaaababababaabb

Pour la première question, étant entendu que n'est pas fixe, c'est-à-dire que l'on veut éviter d'incorporer le mot :jab

  • soit premier symbole n'apparaît jamais, ce qui représente mots possibles,a(l1)k
  • ou apparaît d'abord dans une position , alors nous ne pouvons pas utiliser dans le reste du mot: il y a choix pour le facteur jusqu'à , et choix pour le reste, donnant au total mots possibles. Si n'est pas pertinent.a1ikb(l1)i1a(l1)kii=1k(l1)i1(l1)ki=k(l1)k1a=b

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.

Sylvain
la source
Merci beaucoup, Sylvain, même si je ne pense pas que ce soit tout à fait correct. Nous pouvons utiliser plus tard dans le mot si apparaît. Nous ne pouvons tout simplement pas utiliser s'il y a exactement lettres entre et , si est apparu plus tôt. Je comprends peut-être mal votre argument. babjabajb
Aaron Sterling
Désolé, je ne savais pas si était fixe ou non. J'ai également modifié la réponse avec fixe . jj
Sylvain
1
Je ne pense pas que le cas du j fixe soit correct. Par exemple, si k = 4 et j = 1, le mot aabb est soustrait deux fois. Je n'ai pas lu le cas non fixe-j.
Tsuyoshi Ito
@Tsuyoshi Ito: vous avez raison, il n'y a pas de correspondance unique dans ce cas.
Sylvain
Veuillez marquer une réponse incorrecte comme telle.
Tsuyoshi Ito