Caratterizzazione di


16

È una prova standard nei corsi di automi che per e | Σ | 2 che S ( L ) = { w w : w L } non è un linguaggio privo di contesto.L=Σ|Σ|2S(L)={ww:wL}

È anche vero che per ogni finita , è finita (e quindi un CFL). Immagino che essendo infinito e regolare non siano "sufficienti" perché non è un CFL. Modifica : che dire di non CFL ?LS(L)LS(L)L

C'è qualche caratterizzazione di ciò che ha non è un CFL?S ( L )LS(L)


Se ho capito bene, la domanda è decidere, dato un linguaggio regolare , se S ( L ) è libero dal contesto o meno. LS(L)
J.-E.

2
1. Puoi dirci di più sul tipo di caratterizzazione che stai cercando? Stai cercando un algoritmo che, dato , decide se S ( L ) è privo di contesto? Stai cercando alcune condizioni su L sufficienti per garantire che S ( L ) sia privo di contesto? Quale forma vorresti assumere una caratterizzazione? 2. Se non ricevi alcuna risposta dopo qualche giorno e preferisci vederlo su CSTheory.SE, sentiti libero di segnalarlo per l'attenzione del moderatore e chiedere di migrarlo. LS(L)LS(L)
DW

@DW 1. Entrambi andrebbero bene, ma preferirei condizioni sufficienti. 2. Grazie per la punta!
Ryan,

1
@Ryan solo condizioni sufficienti? Bene, ecco un paio: (a) L è regolare e per ogni in L , w = w R (b) L è CF e per tutti n , L Σ n è vuoto o uguale a Σ n . Questi non sono assolutamente necessari però. Se non ottieni risposte qui, ti preghiamo di spostare la domanda su cstheory. Sono davvero curioso di conoscere le condizioni necessarie e sufficienti! wLw=wRnLΣnΣn
aelguindy,

infinita e regolare non è effettivamente sufficiente per S ( L ) non per CF. Se Σ = { a , b , c } , L = a allora S ( L ) = ( a a ) che è regolare, quindi CF. LS(L)Σ={a,b,c},L=aS(L)=(aa)
Chi,

Risposte:


2

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.aab(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.ab

Per ora la parte necessaria è solo una congettura, e potrebbero essere necessarie più eccezioni per ottenere la condizione esatta, sarei interessato a contro-esempi.


"e poi rileggere w di nuovo, facendo scattare un simbolo per ogni ciclo preso nella seconda occorrenza della parola" - ma ce ne sono infiniti molti come ! A meno che non stia leggendo la tua tesi in modo errato. w
Ryan,

@Ryan il numero di "pattern" xuy in cui si etichetta un loop è finito, quindi possiamo indovinare quale stiamo leggendo.
Denis,

Ho modificato per chiarire questa parte.
Denis

La condizione mi assomiglia a un'altra che avevo in mente: S (L) è libera dal contesto se non esistono parole , tali che w 1 e w 2 non sono prefissi l'uno dell'altro e u ( w 1 + w 2 ) * v L . u,v,w1,w2w1w2u(w1+w2)vL
lupo,

@holf vostro non sembrano funzionare per ab
Denis
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.