Costruire un PDA per il complemento di


16

Mi chiedo se sia possibile, dato che . Pertanto un PDA in grado di distinguere una parola dal resto di potrebbe anche accettarla , il che mi sembra contraddittorio.{anbncnn0}CFLw{anbncnn0}{abc}

Immagino di dover approfittare della natura non deterministica dei PDA ma non ho idee. Se potessi offrire qualche consiglio, lo apprezzerei molto.


Punto interessante su questo sembra contraddittorio. In effetti, le lingue senza contesto non si chiudono nel prendere il complemento ... quindi ci sono molti esempi di lingue senza contesto che potrebbero essere "accettate" nel senso in cui alludi. Non sono un teorico e, in quanto tale, non riesco davvero a conciliare questo, ma forse qualcun altro può chiedere perché non è qualcosa di cui preoccuparsi?
Patrick87,

Si noti che questo generalizza: il complemento di è un CFG. {anbncndnen}
sdcvvc,

Risposte:


15

No, questo è senza contesto. Per accettare , devi assicurarti che tre numeri siano uguali. Per accettare a b c a n b n c n , devi solo assicurarti di trovarti in uno dei seguenti tre casi:anbncnabcanbncn

  1. Il numero di s è diverso dal numero di b s; oab
  2. Il numero di s è diverso dal numero di c s; oac
  3. Il numero di s è diverso dal numero di c s.bc

Scrivi un PDA per ciascuno di questi casi, quindi combinali saltando in modo non deterministico a ciascuno dallo stato iniziale.


Avevo scritto bene questi casi, ma mi mancava l'idea di collegarli. Grazie!
Hauptbenutzer,

4
In realtà hai bisogno solo di due casi.
sdcvvc,

@sdcvvc Buon punto. :)
Patrick87,

Per un diverso numero di caratteri, considera questo come ispirazione: . Dovrebbe essere semplice incollare un + a sinistra di questo o c + a destra e trasformarlo in un PDA. Per il caso difficile (che non ti serve) S a S c | A | C ; A a B |SXSy|X|Y;XX|XX;Yy|yYun'+c+ . Sun'Sc|UN|C;UNun'B|un'UN;CBc|Cc;Bε|BB
Jonas Kölker
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.