Pouvons-nous rendre une langue non régulière régulière par concatentation?


8

Ma question porte essentiellement sur trois langues A, B et L, où L est A et B concaténés ensemble et B se révèle non régulier, est-il possible de trouver un A qui rend L régulier?


5
Bienvenue sur CS.SE! Notre mission est en partie de constituer une archive de questions de haute qualité et leurs réponses. Par conséquent, nous préférerions que vous évitiez de changer la question d'une manière qui invalide les réponses existantes, ou qui change fondamentalement ce que vous demandez; et nous préférons que vous posiez une question par question. Votre question initiale était générale et raisonnable. Votre EDIT pose différentes questions. Si vous avez une question complémentaire, nous préférons que vous la publiez séparément en tant que nouvelle question - ne modifiez pas la question d'origine.
DW

1
Je vais supprimer les questions suivantes de ce post, mais vous pouvez les trouver avec l'historique des révisions si vous souhaitez les publier séparément.
DW

Qu'as-tu essayé? Où êtes-vous resté coincé? Nous ne voulons pas simplement faire votre travail (à domicile) pour vous; nous voulons que vous gagniez en compréhension. Cependant, comme nous ne savons pas quel est votre problème sous-jacent, nous ne pouvons donc pas commencer à vous aider. Voir ici pour une discussion pertinente. Si vous ne savez pas comment améliorer votre question, pourquoi ne pas demander autour de Computer Science Chat ? Vous pouvez également consulter nos questions de référence .
Raphael

(Cela a probablement déjà été demandé auparavant.)
Raphael

@Raphael J'ai édité la question pour contenir la question spécifique que je me posais et ma logique, mais elle a été supprimée par DW ci-dessus. De plus, ce n'est pas pour mes devoirs, c'est parce que mon professeur ne m'a pas donné de crédit pour une preuve que j'ai faite de cette façon et je veux m'assurer que ma compréhension est correcte avant d'aller en parler avec lui (il est plutôt déraisonnable de parler à , sans parler de difficile à comprendre).
Kenny Loveall

Réponses:


3

Si nous permettons A être la langue vide, qui est régulière, alors nous avons cette L={w1w2|w1A,w2B}==A.

Pour le problème légèrement plus intéressant dans lequel A doit être un langage régulier non vide, alors nous pouvons construire un B de telle sorte qu'aucun non vide A entraîne une L

Laisser B={bcndn|n>0}. LaisserA être une langue régulière et considérer L={w1w2|w1A,w2B}. Notez que, contrairement à l'hypothèse de J.-E. Réponse de Pin,B est irrégulier mais ne contient pas le mot vide.

Supposer Lest régulier. Il existe des DFA,M=(S,Σ,δ,q0,F), qui accepte L. Peu importe commentA est construit, nous savons que chaque mot L doit avoir une dernière occurrence de b. LaisserQ être l'ensemble des États parcourus immédiatement après la dernière bdans toutes les traversées acceptables possibles. Notez queQ ne peut pas être vide, car la chaîne la plus courte de B est bcd. LaisserS être l'ensemble des états visités dans toutes les traversées acceptables possibles à un moment donné après la dernière b. ConstructionM=(S,Σ,δ,q0,F), où δ se comporte de façon identique à δ, sauf pour le fait que δ(q0,ε)=Q.

Je déclare que ce NFA accepte la langue C={cndn|n>0}. Pour toutewC, nous devons avoir qu'il y a une certaine traversée d'un élément de Q à un élément de F, depuis Mdoit accepter une chaîne avec ceci comme suffixe. Pour toutewΣC, nous pouvons choisir un wA et former le mot wbw. SiM accepte w, il faut alors que M accepte wbw, car il doit y avoir eu une traversée d'un état dans Q à F qui est également valable pour M. Cependant, en raison de notre choix dew, il ne peut pas être le cas wbwL, donc M doit rejeter w.

Donc M accepte C, mais ce langage n'est pas régulier, ce qui conduit à une contradiction.

Par conséquent, si A n'est pas vide, alors L ne peut pas être régulier.


12

Oui c'est possible. Prenons l'exemple donné ci-dessous:

Laisser B=1ppest premier. Ce n'est pas régulier. LaisserA=1nnN. C'est régulier.

AB nous donnera simplement 1n avec n>2 et cela est régulier car tout nombre supérieur à 2 peut être représenté comme 2+xx>0


Que dis-tu de ça? B=1p et considérer BB. Il est trivial de voir queBB est isomorphe à 1nnest un nombre pair supérieur à 2, ce qui est évidemment régulier.

12

Laisser Σêtre un alphabet non vide. LaisserBêtre une langue non régulière surΣ contenant le mot vide et laissez A=Σ. alorsL=AB=A est régulier.


4
Pour aggraver encore les choses: laissez Bêtre une langue non régulière et laisserA=. alorsL=AB=Aest régulier.
Hendrik Jan

Cet argument ne fonctionne que si Bcontient le mot vide. Il existe des langues irrégulières qui ne contiennent pas le mot vide.
ymbirtt

@ hendrik-jan Vous avez parfaitement raison, et c'est la meilleure solution!
J.-E.

6

Étant donné une langue B, la langue B=est régulier. En dehors de cette solution triviale, il n'est pas toujours possible de trouver une langue non videA tel que AB={uvuAvB}est régulier. Il est possible pour de nombreux non réguliersB(par exemple, siBcontient le mot vide , ou siBest sur un alphabet unaire ) mais pas pour tousB.

Prendre B={cannP}Pest l'ensemble des nombres premiers. Peu importeA est, si A n'est pas vide alors AB n'est pas régulier, car pour tester l'appartenance à AB, il est nécessaire (en raison du symbole «bouchon» c) pour utiliser une mémoire potentiellement illimitée pour tester la primauté du nombre de aest à la fin.

Pour le prouver, laissez uA (puisque nous avons supposé que An'est pas vide). SiAB est régulier, alors L1=ABuca, tout comme le quotient gauche deL1 par le singleton {uc} lequel est L2={wucwABucwuca}={waucwAB}. Cette langue est justeL3={annP} (si wL2 alors il existe vA et kN tel que ucw=vcak, et depuis w contient b ^ kno c, Cela implique que w=akL3; inversement, siwL3 puis cwB donc ucwAB). L3 est une langue non régulière bien connue, nous avons une contradiction.


Cette preuve ne fonctionne-t-elle pas avec des Btant que le symbole "bouchon" n'apparaît qu'en tant que tel?
Raphael

@Raphael Oui, c'est une condition suffisante.
Gilles 'SO- arrête d'être méchant'

0

Alors que votre question demande une preuve existentielle, elle me rappelle la branche de comp. sci. appelé Approximations régulières.

L'idée est de prendre une langue non régulière L puis trouver une langue régulière A tel que LA0 sous une certaine condition / sous-ensemble de L (où est la différence symétrique ), c'est-à-dire trouver un langage régulier qui est "arbitrairement proche" deLpour un sous-ensemble qui vous tient à cœur. Souvent, vous accomplissez cela en prenant un sous-ensemble fini deL avec une grande mesure sur votre sous-ensemble d'intérêt, puis concaténer avec une langue régulière soigneusement choisie.

Vous pouvez trouver de nombreuses lectures intéressantes sur Google Scholar si vous recherchez quelque chose comme "approximation du langage normal sans contexte".

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.