Gli automi finiti non deterministici (NDFA) possono essere convertiti in modo efficiente in automi finiti deterministici (DFA) nello spazio / tempo subexponential?


16

Venti anni fa, ho creato un pacchetto di espressioni regolari che includeva le conversioni da espressioni regolari a una macchina a stati finiti (DFA) e supportava una serie di operazioni di espressione regolare chiuse (stella di Kleene, concatenazione, retromarcia, operazioni impostate, ecc.). Non ero sicuro delle peggiori prestazioni del mio pacchetto.

Un DFA ha la stessa potenza espressiva di un NDFA, poiché un NDFA n-state può essere banalmente convertito in un DFA con 2 ^ n stati. Tuttavia, ci sono garanzie di limite superiore inferiore per tale conversione che non richiedono un'esplosione esponenziale nello stato?

Non sono stato in grado di trovare esempi di espressioni regolari o NDFA che si comportano male, ma non ho trascorso molto tempo a pensarci. Sto indovinando un'espressione regolare come (((((e | A | B | C) * (e | D | E | F)) * (e | G | H | I)) * (e | J | K | L | M)) * che mescola molte alternanze e le stelle di Kleene avrebbero un NDFA di dimensioni lineari ma un DFA espansivo.


Esistono restrizioni sulla classe di NFA che vorresti accettare come input? Alcune restrizioni portano a migliori limiti superiori.
András Salamon,

non è un punto molto importante, ma è necessario che ndfa sia il proprio tag?
Lev Reyzin

Sì, ci sono restrizioni. Gli NFA sono costruiti direttamente dalle espressioni regolari trattandoli come grafici di transizione generalizzati. seas.upenn.edu/~cit596/notes/dave/regexp-nfa4.html
Wesner Moise

Risposte:


15

È noto che per ogni coppia di numeri naturali n,atale che n <= a <= 2^nesiste un NDFA minimo con nstati il ​​cui corrispondente dfa minimo equivalente ha astati (sopra un alfabeto di quattro lettere).

Vedi l'articolo qui: ingrandimenti deterministici di automi finiti minimi non deterministici su un alfabeto fisso .

Estratto della carta:

Mostriamo che per tutti gli interi n e α tali che n ≤ α ≤ 2 ^ n, esiste un automa finito non deterministico minimo di n stati con un alfabeto di input di quattro lettere il cui automa finito deterministico minimo equivalente equivalente ha esattamente uno stato. Ne consegue che nel caso di un alfabeto di quattro lettere, non ci sono "numeri magici", cioè i buchi nella gerarchia. Ciò migliora un risultato simile ottenuto da Geffert per un alfabeto crescente di dimensioni n + 2 (Proc. 7 ° DCFS, Como, Italia, 23-37).

Quindi, suppongo che la risposta alla tua domanda sia, no.


la domanda è chiedere un "algoritmo" in esecuzione in tempo e spazio poco esponenziali per convertire l'NFA.
Marcos Villagra,

@Marcos: se l'output è esponenziale, non è possibile avere un algoritmo che viene eseguito in tempi sub esponenziali.
Aryabhata,

1
Questo è un risultato generale. Se esistono restrizioni note sulla classe di input NFA, potrebbe essere possibile fare di meglio.
András Salamon,

@Andras: D'accordo, ma dato che questo è probabilmente legato alla programmazione (che supporterà Kleen * ecc.), Dubito che l'insieme di input NFA sarà limitato a un sottoinsieme appropriato.
Aryabhata,

5
Questo risultato è stato recentemente rafforzato per usare un alfabeto di tre lettere e le costruzioni sono un po 'più semplici: portal.acm.org/…

13

L'esempio classico di una lingua con una separazione esponenziale tra dimensione DFA e dimensione NFA è il seguente linguaggio finito: stringhe binarie di lunghezza esattamente 2n in cui la prima metà non è uguale alla seconda metà. Un NFA indovinerebbe un indice i in cui la prima e la seconda metà non sono d'accordo. Un limite inferiore per un DFA segue, ad esempio, dalla complessità della comunicazione.


8

Il DFA minimo corrispondente a un NFA ha 2 ^ n stati nel peggiore dei casi, quindi non puoi garantire nulla. Senza un esempio costruttivo, il ragionamento è che in un NFA si può essere in qualsiasi sottoinsieme arbitrario di stati dopo aver letto una determinata stringa di input, e ciascuno di questi sottoinsiemi potrebbe comportarsi in modo diverso quando si osserva un carattere. Supponiamo una lingua con due caratteri nell'alfabeto (a e b) e un NFA N con n stati che inizi con uno stato accettante in s_0. Ora enumera tutti i sottoinsiemi di stati di N e costruisci la tabella di transizione in modo tale che osservare "a" dal sottoinsieme S_i ti porti al sottoinsieme S_i + 1 e osservando b ti porta al sottoinsieme S_i-1 (questo è fattibile per alcune enumerazioni, penso ). Ora questi automi hanno n stati e accettano sequenze di ma's e nb tali che mn = 0 mod 2 ^ | N |, e non può essere espresso con un DFA che ha meno di 2 ^ | N | stati (poiché potrebbe essere necessario scorrere tutti i sottoinsiemi di stati della NFA N).


Questo può essere trasformato in un argomento che dice "se (qualcosa di brutto) viene evitato in NFA, allora DFA ha un numero di stati esponenziale"?
András Salamon,

1
@ András, si. "Se il non determinismo è evitato nell'NFA, allora il DFA ha un numero di stati esponenziale".
P:

2
Pavel, sì, ovviamente. Esiste una proprietà non banale che può essere riconosciuta in modo efficiente e che garantisce anche un esplosione sub-esponenziale?
András Salamon,
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.