Algoritmi per minimizzare gli automi Moore


10

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?


A quale algoritmo di Brzozowski ti riferisci? Quello che usa derivati ​​di espressioni regolari?
J.-E.

2
Benvenuti in SE Computer Science. Dal momento che apparentemente non hai ancora letto la presentazione del sito, dovresti sapere che si tratta di un lavoro cooperativo, basato sullo scambio tecnico tra utenti che fanno domande e utenti che forniscono risposte o commenti. Pertanto, è opportuno rispondere agli utenti che chiedono maggiori dettagli nei commenti, valutare le risposte valide o i commenti positivi (o altre domande o risposte interessanti che leggi) e infine accettare la risposta che ritieni migliore per le tue domande facendo clic su " segno di spunta "(come una V) a sinistra della risposta scelta.
babou,

La risposta ti è stata utile?
babou,

Risposte:


6

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:(Q,q0,Σ,Π,δ,γ)

  • un insieme finito di stati Q
  • uno stato iniziale (chiamato anche stato iniziale) che è un elemento di Qq0Q
  • 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 δ:Q×ΣQ
  • una funzione di output mappando ciascuno stato sull'alfabeto di output γ:QΠ

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 .

LxyzxzyzLRLxRLyxyRL

LRLLRL

qWqRL

LWqRL

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.

O(n2)O(nlogn)

RTTRLRT

TxyzT(xz)=T(x)uT(yz)=T(y)vuvzxy

RTΣ

Il seguente algoritmo imita l'algoritmo Moore per la minimizzazione di DFA.

PQSe

eΠ:Se={qQγ(q)=e}

P

S
   aΣ,
     SP,qS,δ(q,a)S
     SSi
      SiSPqSi,δ(q,a)S
      SiSP

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.

aΣ

n=|Q|s=|Σ|
nO(sn2)

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.

O(snlogn)


@Raphael Un riferimento ... Beh, sei fortunato, ho riprogettato l'algoritmo, perché non ho accesso a una libreria. Ma dal momento che hai chiesto un riferimento, te ne ho preso uno. Ti piacerebbe Ma non sono sicuro che lo userei per insegnare.
babou,

@Raphael L'articolo è interessante nella sua presentazione che cerca di essere molto intuitivo, più operativo che algebrico. Non ricordo tutti i dettagli del contributo di Myhill e Nerode (due anni dopo nel 1958), e non ho letto abbastanza attentamente il documento (piuttosto l'ho scremato) ma mi chiedo se la teoria non debba essere attribuita a Moore come bene.
babou,

2

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.


@DW Grazie per la modifica. Semplicemente perfetto.
J.-E.

1

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.

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.