Konstruieren Sie einen PDA für das Komplement von

16

Ich frage mich , ob dies überhaupt möglich ist, da . Daher könnte ein PDA, der ein Wort vom Rest von es genauso gut akzeptieren , was für mich widersprüchlich klingt.{anbncnn0}CFL{ a b c }w{anbncnn0}{abc}

Ich denke, ich muss den nicht deterministischen Charakter von PDAs ausnutzen, aber mir fehlen die Ideen. Wenn Sie mir einen Rat geben könnten, wäre ich Ihnen sehr dankbar.

hauptbenutzer
quelle
Interessanterweise erscheint es widersprüchlich. In der Tat werden kontextfreie Sprachen nicht unter Berücksichtigung der Ergänzung geschlossen. Es gibt also viele Beispiele für nicht kontextfreie Sprachen, die in dem Sinne, auf den Sie anspielen, "akzeptiert" werden könnten. Ich bin kein Theoretiker und kann das als solches nicht wirklich in Einklang bringen, aber vielleicht kann sich jemand anderes einmischen, warum dies kein Grund zur Sorge ist?
Patrick87
Beachte , dass dies generalizes: das Komplement ist ein CFG. {anbncndnen}
SDCVVC
Ähnliche Frage .
Raphael

Antworten:

15

Nein, das ist kontextfrei. Um zu akzeptieren , müssen Sie sicherstellen, dass drei Zahlen gleich sind. So nehmen Sie eine * b * c *eine n b n c n , Sie müssen nur sicherstellen , dass Sie in einem der folgenden drei Fälle sind:anbncnabcanbncn

  1. Die Anzahl von s unterscheidet sich von der Anzahl von b s; oderab
  2. Die Anzahl von s unterscheidet sich von der Anzahl von c s; oderac
  3. Die Anzahl von unterscheidet sich von der Anzahl von cs .bc

Schreiben Sie für jeden dieser Fälle einen PDA und kombinieren Sie sie, indem Sie vom Startzustand aus nicht deterministisch zu jedem einzelnen springen.

Patrick87
quelle
Ich hatte diese Fälle in Ordnung aufgeschrieben, aber mir fehlte die Idee, sie zu verbinden. Vielen Dank!
hauptbenutzer
4
Eigentlich brauchen Sie nur zwei Fälle.
SDCVVC
@sdcvvc Guter Punkt. :)
Patrick87
Betrachten Sie dies für eine unterschiedliche Anzahl von Zeichen als Inspiration: . Es sollte einfach sein, entweder a + links oder c + rechts aufzukleben und daraus einen PDA zu machen. Für den kniffligen Fall (den Sie nicht brauchen) S a S c | A | C ; A a B |SxSy|X|Y;Xx|xX;Yy|yYa+c+ . SaSc|A|C;AaB|aA;CBc|Cc;Bε|bB
Jonas Kölker