L'algoritmo di Brzozowski può essere esteso agli automi Moore ma la sua complessità temporale è esponenziale in generale. Esiste un altro algoritmo per ridurre al minimo gli automi Moore? Quali sono i tempi di esecuzione di questi algoritmi?
L'algoritmo di Brzozowski può essere esteso agli automi Moore ma la sua complessità temporale è esponenziale in generale. Esiste un altro algoritmo per ridurre al minimo gli automi Moore? Quali sono i tempi di esecuzione di questi algoritmi?
Risposte:
L'algoritmo di minimizzazione DFA originale è stato effettivamente progettato per Moore Machines , guidato dal loro comportamento apparentemente più osservabile. Ma l'algoritmo presentato qui è una ricostruzione della minimizzazione di DFA, poiché ho scoperto le prove storiche dopo il fatto.
Dopo Wikipedia (con alcune modifiche notazionali):
Una macchina Moore può essere definita come una 6 tupla composta da quanto segue:
- un insieme finito di stati
- uno stato iniziale (chiamato anche stato iniziale) che è un elemento di Q
- un set finito chiamato l'alfabeto di input
- un set finito chiamato alfabeto di output
- una funzione di transizione mappa uno stato e l'alfabeto di input allo stato successivo
- una funzione di output mappando ciascuno stato sull'alfabeto di output
Da questa definizione, una macchina Moore è un trasduttore di stato finito deterministico.
Non ho riferimenti per minimizzare gli automi Moore. Tuttavia non sembra troppo difficile immaginare un algoritmo, derivato dall'algoritmo utilizzato per gli automi a stati finiti deterministici.
L'idea della minimizzazione di DFA si basa sulla caratterizzazione Myhill-Nerode delle lingue normali .
Quindi, la minimizzazione del DFA in realtà consiste in stati di fusione (considerati come insiemi di stringhe equivalenti), ogni volta che viene mostrato che due stati distinti contengono stringhe equivalenti.
Il seguente algoritmo imita l'algoritmo Moore per la minimizzazione di DFA.
Quando non è rimasta alcuna classe da dividere, le restanti classi di stati formeranno gli stati della macchina Moore minima.
Per costruzione, tutti gli stati in una classe hanno lo stesso output che è l'output per la classe.
Non ho alcun riferimento per questa minimizzazione delle macchine Moore. Forse è incluso nel suo documento:
Moore, Edward F (1956). "Esperimenti di Gedanken su macchine sequenziali". Automi Studies , Annals of Mathematical Studies (Princeton, NJ: Princeton University Press) (34): 129-153.
Questo documento è il riferimento principale che introduce le macchine Moore . È anche il riferimento per l'algoritmo di minimizzazione DFA di Moore . Dovrebbe quindi essere sorprendente se l'adattamento dell'algoritmo alla minimizzazione delle macchine Moore non fosse almeno suggerito in quel documento. Ho controllato il documento e la versione dell'algoritmo di minimizzazione presentata è in realtà per le macchine Moore, non per DFA. Il documento è ben scritto, ma lo stile del tempo rende un po 'più difficile da leggere. È interessante vedere che molte delle idee della teoria Myhill-Nerode delle macchine a stati finiti sono già state delineate in questo documento.
Una versione dell'algoritmo di Brzozowski che utilizza derivati di espressioni regolari è fornita in [2], capitolo 12, sezione 4, dove è accreditata a [4]. Vedere [1] e [3] per il caso più generale di trasduttori successivi (la terminologia è un po 'datata e il termine trasduttore sequenziale è probabilmente più appropriato al giorno d'oggi).
[1] C. Choffrut, Riduzione al minimo dei trasduttori secondari : un'indagine, Theoret. Comp. Sci. 292 (2003), 131-143.
[2] S. Eilenberg, Automi, Lingue e macchine, vol. A, Academic Press, 1974.
[3] J.-E. Pin, un tutorial sulle funzioni sequenziali . (Diapositive)
[4] GN Raney, funzioni sequenziali, JACM 5 (1958), 177–180.
L'algoritmo di Brzozowski è un pessimo punto di partenza (se si è interessati al runtime nel caso peggiore asintotico). Anche Wikipedia ti dice tanto:
Come osservato da Brzozowski (1963), l'inversione dei bordi di un DFA produce un automa finito non deterministico (NFA) per l'inversione del linguaggio originale e la conversione di questo NFA in un DFA utilizzando la costruzione del powerset standard (costruendo solo gli stati raggiungibili di il DFA convertito) genera un DFA minimo per la stessa lingua inversa. La ripetizione di questa operazione di inversione una seconda volta produce un DFA minimo per la lingua originale. La complessità del caso peggiore dell'algoritmo di Brzozowski è esponenziale, in quanto esistono linguaggi regolari per i quali il DFA minimo dell'inversione è esponenzialmente più grande del DFA minimo del linguaggio [6], ma spesso si comporta meglio di quanto suggerisca questo caso peggiore.
L'algoritmo ha un tempo di esecuzione esponenziale nel peggiore dei casi anche su DFA perché calcola un automa per il contrario, che può essere esponenzialmente ampio. Quindi il tuo problema non viene dall'estensione ai trasduttori.
Prova ad adattare un altro algoritmo di minimizzazione DFA.