Più di un commento esteso con una congettura, ma qui c'è una condizione che sembra catturare il problema, nel contesto della normale per S ( L ) per essere senza contesto.LS(L)
Condizione
Nel DFA minimo per L , qualsiasi percorso di accettazione contiene al massimo un loop.AL
Eccezione: sono consentiti due loop se le loro etichette e l'etichetta del prefisso prima del primo ciclo commutano tutte e il suffisso dopo il secondo ciclo è vuoto. Ad esempio è ok.aa∗b(aa)∗
Ricorda che due parole e v commutano se sono poteri di una stessa parola t . Possiamo assumere il suffisso vuoto, perché non può essere non vuoto e commutare con l'etichetta del secondo loop in un DFA.uvt
Sufficiente
, assumendo la condizione, si costruisce un PDA per trattando ogni modello accettando x u y di A in cui u etichette un ciclo semplice. Vogliamo accettare le parole del modulo x u n y x u n y . Leggiamo x , premiamo un simbolo per ogni ricorrenza di u , leggiamo y x , quindi pop un simbolo per ogni ricorrenza di u , e infine leggiamo y .LxuyAuxunyxunyxuyxuy
A proposito dell'eccezione, se siamo in questo caso, un percorso di accettazione di base ha la forma dove u , v sono le etichette dei loop. Accettiamo parole della forma x u n y v m x u n y v m , ma per ipotesi ( x , u , v pendolari) è uguale a u n x y u n v m x y v m , che può essere eseguito da un PDA: premere nxuyvu,vxunyvmxunyvmx,u,vunxyunvmxyvmnvolte (per occorrenze di ), leggi x y , pop n volte, premi m volte (per v ), leggi x y , pop m volte.uxynmvxym
Il PDA finale è l'unione dei PDA per ogni modello.
Necessario
(handwaving) Se esiste un percorso con due loop, anche nel caso più semplice in cui è necessario prendere uno dopo l'altro (ad esempio ), è necessario ricordare quante volte vengono prese ognuna, ma la struttura dello stack ti impedisce di ripeterli nello stesso ordine. Si noti che il fatto che DFA sia minimo è importante nella caratterizzazione, per evitare di usare due loop quando uno potrebbe essere sufficiente.a∗b∗
Per ora la parte necessaria è solo una congettura, e potrebbero essere necessarie più eccezioni per ottenere la condizione esatta, sarei interessato a contro-esempi.