Comment ws avec | w | = | s | et w ≠ s être hors contexte alors que w # s ne l'est pas?


9

Pourquoi (si c'est le cas) le séparateur fait-il une différence entre les deux langues?#

Disons:

L={ws:|w|=|s|w,s{0,1},ws}

L#={w#s:|w|=|s|w,s{0,1},ws}

Voici une preuve et une grammaire représentant enLCFL

Et ci-dessous, j'ajoute une preuve pour :L#CFL

Le signe vraiment une différence? si oui, pourquoi? et sinon, laquelle des preuves est fausse et où?#

Preuve que :L#CFL

Supposons à titre de contradiction que . Soit la constante de pompage pour garantie par le lemme de pompage pour les langages sans contexte. Nous considérons le mot où si . Depuis , selon le lemme de pompage il existe une représentation , telle que , et pour chaque j ≥ 0 .LCFLp>0Ls=0m1p#0p1mm=p!+psL|s|>ps=uvxyz|vy|>0|vxy|puvjxyjzLj0

On obtient une contradiction par cas:

  • Si ou contiennent : Alors pour , on obtient que ne contient pas , donc en contradiction.vy#i=0uxz#uxzL
  • Si et sont laissés à : Alors pour , nous obtenons que est de la forme , où, Donc .vy#i=0uxzw#x|w|<|x|uxzL

  • Si et ont raison de : Similaire au dernier cas.vy#

  • Si est laissé à , est à droite et: Alors pour , on obtient que est de la forme , où, Donc .v#y|v|<|y|i=0uxzw#x|w|>|x|uxzL

  • Si est laissé à , est à droite et: Similaire au dernier cas.v#y|v|>|y|

  • Si est laissé à , est à droite et: C'est le cas le plus intéressant. Depuis , doit être contenu dans la partie de , et dans la partie . Il considère donc que et pour le même (en fait, ce doit être que ). Pour chaque , il considère que , donc s'il arrive quev#y|v|=|y||vxy|pv1psy0pv=1ky=0k1kpk<p/2j0uvj+1xyj+1z=0m1p+j·k#0p+j·k1mm=p+j·k, alors il soutient que en contradiction. Pour y parvenir, nous devons prendre , qui n'est valable que si est divisible par . Rappelons que nous avons choisi, doncetest divisible par comme souhaité.uvj+1xyj+1zLj=(mp)/kmpkm=p+p!mp=p!p!1kp

Réponses:


7

Votre preuve est correcte et je me trompais. Il m'a fallu un certain temps pour comprendre où était ma confusion, mais avec l'aide de Yuval, je pense que je l'ai eue.

Considérons les trois langues

L=={xy|x|=|y|,xy},L#={x#yxy}, andL=#={x#y|x|=|y|,xy}.

Comme nous l'avons vu ici , est sans contexte. L'astuce consiste, dans la grammaire, à générer des symboles "à droite" mais à les compter "à gauche" plus tard (ou l'inverse), en veillant à ce que les symboles incompatibles apparaissent aux positions correspondantes. La condition de longueur est triviale car elle se réduit à une longueur égale. Vous pouvez construire un NPDA avec une idée similaire, en utilisant la pile pour faire correspondre la position.L=

est également sans contexte. La preuve est encore plus simple: les symboles incompatibles apparaissent à la même distance du début resp. le séparateur. Les longueurs inégales peuvent être vérifiées séparément; le non-déterminisme "choisit" entre les deux options.L#

Maintenant, comme vous le montrez, n'est pas sans contexte. Voici pourquoi les preuves pour les deux autres langues se décomposent.L=#

  1. Dans la grammaire de , si nous devons générer un séparateur au milieu, nous ne pouvons pas "réaffecter" les symboles de "gauche" à "droite".L=
  2. Au lieu de «accepter si les longueurs sont inégales ou incompatibles», nous devons «accepter si les longueurs sont égales et ne correspondent pas». Le non-déterminisme ne peut pas nous aider avec le et !

Donc, ce qui se résume intuitivement, c'est que les conditions de la forme " " et " | x | = | y | " sont toutes les deux "sans contexte" dans le sens où elles peuvent être vérifiées avec une pile, mais n'utilisant pas de contrôle fini. Par conséquent, un PDA peut faire un mais pas les deux.xy|x|=|y|

Le PDA pour "cheats" car il ne vérifie pas vraiment ces conditions pour x et ; il divise le mot d'une manière différente. Ce n'est plus possible si vous avez le séparateur.L=xy


Addendum: j'ai hardiment affirmé que parce que CFL est fermé contre l'homomorphisme inverse. S'il est vrai que avec l'identité sauf qu'il supprime , cela n'est pas pertinent. ; rien ne peut être dit sur L = # .L=CFLL=#CFLf(L=#)=L=f#f1(L=)=L#L=#


Addendum II: notons que est sans contexte. Par conséquent, avec L L # = L = #, nous avons un bel exemple pour que CFL ne soit pas fermé contre l'intersection.L={x#y|x|=|y|}LL#=L=#

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.