Les langues régulières sont-elles fermées en cours d'ajout?

10

Plus précisément ce que je veux dire par addition est, nous définissons pour être l'alphabet { 0 , 1 , 2 , . . . , i } . Compte tenu de langues régulières A et B sous un alphabet Σ i , regardez A × B .Σi{0,1,2,...,i}ABΣiA×B

Pour chaque paire ordonnée , définissez la "somme" de cette paire ordonnée comme a + b , où a et b sont des nombres dans la base i. Les 0 en tête sont ignorés, donc 0 est devant chaque chaîne acceptée. Cela implique que ϵ est défini comme 0.(a,b)A×Ba+bab0ϵ

Le langage est l'ensemble de chaînes représentant toutes ces sommes possibles.A+B

Jusqu'à présent, je sais:

  • Cela est vrai en unaire ( ).Σ1
  • Cela est vrai pour tous les langages réguliers finis et B , car tout langage fini est régulier et A + B est fini.ABA+B
  • Le langage = { s | s est un multiple de n dans la base b } sous Σ b est régulier pour tout b > = 1 . Cela signifie que tous les langages de la forme C n peuvent également être ajoutés, comme C i + C j = C i + j , qui est également régulier. Cependant, il existe des langages comme D = { s | s commence et se termine par un 1} qui ne correspond pas à ce critère, donc cela ne décrit pas toutes les langues normales.Cn{|}Σbb>=1CnCi+Cj=Ci+jD{|
Phylliida
la source
2
Il n'est pas vrai que si A est régulier en base 2, il est également régulier en base 3, considérons par exemple les pouvoirs de 2.
domotorp
Je vois, tu as raison. J'ai modifié la question en conséquence. J'essayais de prouver cela, et cela semblait vrai, puis j'ai mal compris ce qu'était un homomorphisme et j'ai supposé que c'était vrai. Mais ce n'est pas le cas, désolé. Si une langue est régulière dans la base b ^ a pour certains a> 1, elle l'est également dans toute autre base b ^ (ac) pour tout 1 <= c <a. (ainsi par exemple, si une langue est régulière en base 8, elle l'est également en base 4 et 2, simplement en simulant le dfa en base 8).
Phylliida
"Cela implique que ϵ est défini comme 0". Je ne comprends pas ce que cela signifie. Si 0 et ϵ sont identiques, tous les 0 peuvent être supprimés et l'interprétation des nombres ne fonctionne plus.
babou
Le fait est simplement que si une chaîne vide ϵ est dans une paire ordonnée, elle ajoute 0 à l'autre chaîne. Aussi pour toute chaîne donnée qui a des 0 en tête, elles peuvent être supprimées. Cela signifie que 000101 est identique à 101, par exemple. C'est ce que je voulais dire, si un ϵ apparaît dans une chaîne par lui - même , il est équivalent en valeur par rapport à une somme de 0, ou 00, ou 000 par lui-même . Si ces chaînes sont dans une autre chaîne, tous les paris sont désactivés et cette substitution n'est plus valide.
Phylliida

Réponses:

14

Oui, ils sont.

Considérons d'abord l'alphabet dont les symboles sont des triplets de chiffres (empilés les uns au-dessus des autres en une pile de trois chiffres). Sur cet alphabet, on peut définir une langue régulière A ' où la chaîne formée par le plus haut des trois chiffres appartient à A , une langue régulière B ' où la chaîne formée par le milieu des trois chiffres appartient à B , et une langue régulière C où les deux cordes du haut se résument à celle du bas. A et B utilisent simplement des automates modifiés pour A et B , tandis que CΣi3AABBCABABC utilise le fait que vous pouvez effectuer des ajouts en balayant de droite à gauche tout en ne gardant qu'un seul chiffre de portage comme état.

Alors est (par fermeture sous intersection) un langage régulier qui reconnaît des piles de trois chaînes, une en A , une en B et la troisième dans la somme. L'homomorphisme qui retire les deux chiffres du haut d'une pile en ne laissant que celui du bas prend cela dans la langue que vous voulez, et le résultat suit par une fermeture sous homomorphisme.ABCAB

David Eppstein
la source
C'est vraiment génial. Je ne savais pas que vous pouviez utiliser ces piles de cette façon. Merci!
Phylliida
Certes, c'est un peu aléatoire car dans ce cas, il ne contient que des sommes de chaînes de même taille, car nous pouvons "simuler" des sommes de chaînes de tailles différentes en ajoutant des zéros à gauche, et il est simple de modifier un dfa en un autre dfa qui reconnaît 0 * devant toutes les chaînes acceptantes (une fois que vous avez construit le dfa sommateur pour reconnaître C avec homomorphisme).
Phylliida
Je suppose que la plus grande clé est que A et B doivent être "techniquement modifiés" de la même manière pour être 0 * A et 0 * B, et une fois que nous le faisons, il suffit, pour chaque paire de a et b, de trouver le la somme de 0 * a + 0 * b st les deux valeurs ont suffisamment de 0 de début pour correspondre aux tailles, puis le résultat peut être supprimé de 0 selon les besoins car C est modifié de la même manière. Était-ce implicite ou existe-t-il une façon plus simple de voir ce qui me manque?
Phylliida
Oui, il y a quelques détails techniques concernant le rembourrage, mais ils ne changent pas vraiment les idées de base, donc je les ai omis.
David Eppstein
Cool, ça a du sens.
Phylliida
9

Oui. Je donne un NFA qui lit le mot depuis la fin, car même de tels automates ne peuvent reconnaître que les langues normales. Nous supposons également que et B sont donnés par de tels automates, M A et M B . Le NFA devine à chaque pas ce que le chiffre respectif de a et b est, vérifie que l'addition est correcte, et calcule les nouveaux états respectifs des M A et M B . À la fin du mot, il accepte si et seulement si M A et M B acceptent.ABMAMBabMAMBMAMB

domotorp
la source