L'étoile Kleene d'une langue unaire infinie donne toujours une langue régulière

8

Laisser L={ann0}, où a0=ϵ et an=an1a pour tous n1.

Donc L se compose de séquences de a de toutes les longueurs, y compris une séquence de longueur 0. LaisserL2 être un sous-ensemble infini de L. Je dois montrer qu'il existe toujours un DFA à reconnaîtreL2.

Si L2 est un sous-ensemble fini, il est très évident que L2 serait un DFA et donc par la fermeture de Kleene L2serait reconnu par un DFA. Mais je ne peux pas l'obtenir pour un sous-ensemble infiniL2 peut ne pas être exprimé en DFA lorsque, par exemple, les longueurs de chaîne sont premières.

Aditya Nambiar
la source

Réponses:

8

Supposons qu'il y ait deux mots dans la langue dont les longueurs sont relativement premières. Que ces longueurs soientx et y. Nous savons (voir ceci ) qu'en ajoutant ces nombres les uns aux autres à plusieurs reprises, nous pouvons obtenir n'importe quel nombre supérieur à(x1)(y1)1. Donc six et y sont 13 et 7, nous pouvons écrire n'importe quel nombre supérieur à 72 comme une combinaison linéaire de 7 et 13. Ce que cela signifie pour nous:L2 se compose d'une langue arbitraire finie (régulière, comme toutes les langues finies), en union avec la langue {wa|a|>(x1)(y1)1}. Cette langue est régulière car c'est la langue de tous les mots avec un ensemble fini de mots supprimés. DepuisL2 est une union de langues régulières, elle doit aussi être régulière.

Si tous les mots L2 ont des longueurs qui partagent un plus grand facteur commun (appelez ce facteur commun m), puis répétez l'argument ci-dessus, mais au lieu d'utiliser des longueurs de chaîne, utilisez des longueurs de chaîne divisées par m. Dans ce cas,L2 sera la concaténation d'une langue finie arbitraire (régulière) et la langue {w(am)|w|>m2[(x/m1)(y/m1)1]}, également régulier (puisque $ (a ^ m) ^ * est régulier et nous en supprimons un nombre fini de mots).

Par exemple, supposons que tous les mots de L avoir un GCF de 2, et la langue contient les mots a4 et unedix. On am=2, X/m=4/2=2, et y/m=dix/2=5, qui sont relativement premiers. Par conséquent, nous savons que nous pouvons obtenir n'importe quel mot dont la longueur est multiple dem si la longueur est supérieure à m2[(X/m-1)(y/m-1)-1]=22[(2-1)(5-1)-1]=(4)(3)=12 en concaténant une4 et unedix.

Patrick87
la source