Date due parole , w 2 , è decidibile se la lingua L delle parole che contengono lo stesso numero di w 1 e w 2 è regolare?w1w2Lw1w2
Innanzitutto alcune definizioni:
potrebbero essere rese più concise e le notazioni potrebbero essere migliorate se dovessero essere utilizzate nelle prove. Questa è solo una prima bozza.
Date due parole e w 2 , diciamo che: w1w2
si verifica semprecon w 2 , annotato w 1 ◃ w 2 , iff w1 w2w1◃w2
- per ogni stringa tale che
s = x w 2 y con ∣ x ∣ ,ss=xw2y e | x | 0 , | x | 1 | , | y | 0 , | y | 1 | ≥ 1 c'è un'altra decomposizione s = x ′ w 1 y ′ . Nota: La condizione che x ed y∣x∣,∣y∣ ≥∣w1∣+∣w2∣|x|0,|x|1|,|y|0,|y|1|≥1s=x′w1y′
xyognuno contiene almeno uno 0 e un 1 è richiesto da un caso patologico (trovato da @sdcvvc): , w 2 = v 1 i + j e y ∈ 1 ∗ , e le sue varianti simmetriche.w1=1i0w2=v1i+jy∈1∗
- v'è una stringa con | x | ,s=xw2y tale che esiste al massimo una decomposizione s = x ′ w 1 y ′∣x∣,∣y∣ ≥∣w1∣+∣w2∣s=x′w1y′
si verifica semprecon w 2 , annotato w 1 ◃ ▹w1 w2 , se ciascuno si verifica sempre con l'altro,w1◃▹w2
e w 2 si verificano indipendentemente, annotato w 1 ▹ ◃w1w2 , se nessuno dei due si verifica sempre con l'altro,w1▹◃w2
si verifica sempre m volte o piùdi w 2 , annotato w 1 ◃ m w 2 , iff per qualsiasi stringa s tale che
s = x w 2 y con ∣ x ∣ , ∣ y ∣ | ≥ ∣ w 1 ∣ + ∣ w 2 ∣ ci sono m altre decomposizioni s = x i w 1 y iw1 mw2w1◃mw2ss=xw2y∣x∣, ∣y∣| ≥∣w1∣+∣w2∣ms=xiw1yipoiché
tale che i ≠ j implica x i ≠ x j .i∈[1,m]i≠jxi≠xj
Queste definizioni sono costruite in modo da poter ignorare ciò che accade alle estremità della stringa in cui si suppone che si verifichino e w 2 . Gli effetti al limite alla fine della stringa devono essere analizzati separatamente, ma rappresentano un numero finito di casi (in realtà penso di aver dimenticato uno o due di questi sotto-casi limite nella mia prima analisi di seguito, ma non importa davvero). Le definizioni sono compatibili con la sovrapposizione di occorrenze.w1w2
Vi sono 4 casi principali da considerare (ignorando la simmetria tra e w 2 ):w1w2
Entrambe le parole vanno necessariamente insieme, tranne forse alle estremità della stringa. Ciò riguarda solo coppie delle forme 1 i 0 e 01 i , oppure 0 i 1 e 10 i . Questo è facilmente riconosciuto da unautoma finitoche controlla solo le occorrenze solitarie su entrambe le estremità della stringa per essere riconosciuto, per assicurarsi che ci sia una ricorrenza solitaria su entrambe le estremità o su nessuna delle due estremità. C'è anche il caso degenerato quando w 1 = w 2 : allora la lingua L è ovviamente regolare.w1◃▹w2
1i001i0i110iw1=w2
, ma non w 2 ◃ w 1
Una delle 2 parole non può apparire senza l'altra, ma il contrario non è vero (tranne forse alle estremità della stringa). Questo succede quando:w1◃w2w2◃w1
è una sottostringa di w 2 : quindi un automa finito può semplicemente verificare che w 1 non si verifichi al di fuori di un'istanza di w 2 .w1w2w1w2
e w 2 = v 1 j per qualche parola v ∈ { 0 , 1 } ∗ , v ≠ 01 i : quindi un automa finito verifica come nel caso precedente che w 1 non si verifichi separato da w 2 . Tuttavia, l'automa consente di contare un'istanza aggiuntiva di w 1 che consentirà l'accettazione se w 2w1=1i0w2=v1jv∈{0,1}∗v≠01iw1w2w1w2è un suffisso della stringa. Esistono altri tre casi simmetrici (simmetria 1-0 e simmetria sinistra-destra).
Una delle 2 parole appare due volte nell'altra. Ciò può essere riconosciuto da un'automazione finita che verifica che la parola più piccola non sia mai presente nella stringa. C'è anche una variante leggermente più complessa che combina le due varianti del caso 2. In questo caso l'automa verifica che la stringa più piccola 1 i 0 non si verifichi mai, tranne forse come parte di v in quella più grande v 1 j che arriva come suffisso della stringa (e altri 3 casi per simmetria).w1◃2w2
1i0vv1j
Le 2 parole possono apparire indipendentemente l'una dall'altra. Costruiamo una macchina generalizzata-sequenziale (gsm) G che emette a quando riconosce un'occorrenza di w 1 e
b quando riconosce un'occorrenza di w 2 e dimentica tutto il resto. La lingua L è regolare solo se la lingua G ( L ) è regolare. Ma G ( L ) = { w ∈ { a , b } ∗ ∣ ∣ w ∣ aw1▹◃w2
Gaw1bw2LG(L) che è chiaramente privo di contesto e non regolare. Quindi L non è regolare.
In realtà abbiamo L = G - 1 ( G ( L ) ) . Poiché le lingue regolari e le lingue senza contesto sono chiuse sotto la mappatura gsm e la mappatura gsm inversa, sappiamo anche che L è libera dal contesto.G(L)={w∈{a,b}∗∣ ∣w∣a=∣w∣b}L
L=G−1(G(L))L
Un modo per organizzare una prova formale potrebbe essere il seguente. Innanzitutto crea un PDA che riconosca la lingua. In realtà può essere fatto con una macchina a 1 contatore, ma è più facile avere due simboli di stack per evitare di duplicare il controllo finito. Quindi, per i casi in cui dovrebbe essere un FA, mostrare che il contatore può essere limitato da una costante che dipende solo dalle due parole. Per gli altri casi, mostra che il contatore può raggiungere qualsiasi valore arbitrario. Naturalmente, il PDA dovrebbe essere organizzato in modo che le prove siano abbastanza facili da trasportare.
Rappresentare la FA come PDA a 2 stack-simboli è probabilmente la rappresentazione più semplice per essa. Nel caso non regolare, la parte di controllo finita del PDA è la stessa di quella del GSM nello schizzo di prova sopra. Invece di emettere 's e b ' come il GSM, il PDA conta la differenza di numero con lo stack.ab