Qual è la complessità dello stato del linguaggio di copia?


10

Lasciare un numero . Considera la seguente lingua .nLn={ww|w{0,1}n}

In parole, è l'insieme di stringhe di copia di lunghezza .Ln2n

Si consideri il seguente stato funzione di complessità tale che è il numero di stati nel più piccolo automi a pila che riconosce .ss(n)Ln

Domanda: puoi dimostrare formalmente un limite inferiore significativo per ?s(n)

La mia congettura: .s(n)=2Θ(n)

Limite superiore noto: .s(n)poly(n)2n2

Regole:

(1) L'alfabeto dello stack deve essere binario.

(2) Il nastro di input è unidirezionale e non può fermarsi su nessun carattere di input.


Al momento non ho alcun limite inferiore significativo. Mi sembra che potresti essere in grado di dimostrare un limite inferiore per il numero di variabili necessarie per un CFG che riconosce la lingua. Anche se non ne sono nemmeno del tutto sicuro.
Michael Wehar,

1
La mia intuizione è che quando si spingono i caratteri dal nastro di input allo stack, si verifica un problema. Se in seguito desideri recuperare questi bit, devi eliminare tutti i bit che hai spinto sopra di esso. In altre parole, sembra che lo stack non ti aiuti perché più spingi ad esso, più sei costretto a dimenticare in seguito.
Michael Wehar,

1
Nota: per i DFA (automi senza stack), è possibile dimostrare un limite inferiore della complessità dello stato esponenziale.
Michael Wehar,

1
Puoi mostrare un limite inferiore ragionevole per il problema più semplice di ? {0k1l0k1l}
András Salamon,

1
Un limite superiore più preciso sembra essere stati. (n+3)2n/2
András Salamon,

Risposte:


10

La tecnica descritta da Yuval:

Esistono CFG di dimensioni polinomiali che descrivono questo linguaggio finito?

(puoi anche leggere: limiti inferiori sulla dimensione dei CFG per linguaggi finiti specifici )

permette di mostrare molto facilmente un limite inferiore esponenziale per i CFG. Lascia a una grammatica in Chomsky Normal Form per . Per ogni parola esiste almeno un non terminale accetta una subword di con lunghezza compresa tra e . Lascia che sia una posizione in cui si verifica questa parola secondaria. Ci sono almenoL n w { 0 , 1 } n A ( w ) s ( w ) w w n / 2 n p ( w ) w wGLnw{0,1}nA(w)s(w)wwn/2np(w)wwn/2w,wA(w)=A(w)p(w)=p(w)2n/2A(w)p(w)2Θ(n)

2Θ(n)Ln


Fantastico, grazie ancora! Vedo ora e ci penserò per confermare. :)
Michael Wehar,

2
Ancora una volta: cambiando la lunghezza da a [ n / 2 , n ] è stato introdotto un altro problema. Ho dovuto affinare l'argomento in modo simile a quello di Yuval (contando le sovrapposizioni). Ora credo che sia corretto, finalmente. Ho modificato la risposta ed eliminato i miei commenti[n,2n][n/2,n]
Joseph Stack,

1
Nel caso in cui sia d'aiuto a qualcun altro: nota che una volta che è stato scelto , A ( w ) può solo produrre la singola subword di w w che inizia nella posizione p ( w ) . Quindi, questo in realtà mostra che qualsiasi CNF-CFG corretto per questa lingua deve avere molti non terminali che generano ciascuno una singola parola secondaria lunga. (A(w),p(w))A(w)wwp(w)
András Salamon,

2
Vedi anche Teorema 7 nel mio documento: cs.toronto.edu/~yuvalf/CFG-LB.pdf .
Yuval Filmus,

1
@YuvalFilmus Vale anche la pena notare che Andras ha trascorso un po 'di tempo a cercare di far corrispondere i limiti superiore e inferiore. Io e il mio amico Pepe abbiamo definito una classe generale di lingue finite e applicato loro la tecnica. Non abbiamo mai scritto nulla però. In caso di problemi correlati, saremmo più che disposti a collaborare. Grazie ancora.
Michael Wehar,
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.