O algoritmo original de minimização do DFA foi projetado para Moore Machines , guiado por seu comportamento aparentemente mais observável. Mas o algoritmo apresentado aqui é uma reconstrução da minimização do DFA, desde que descobri as evidências históricas após o fato.
Após a Wikipedia (com algumas alterações notacionais):
Uma máquina de Moore pode ser definida como uma tupla de 6 consiste no seguinte:(Q,q0,Σ,Π,δ,γ)
- um conjunto finito de estados Q
- um estado inicial (também chamado estado inicial) que é um elemento de Qq0Q
- um conjunto finito chamado alfabeto de entrada Σ
- um conjunto finito chamado alfabeto de saída Λ
- uma função de transição mapeando um estado e o alfabeto de entrada para o próximo estado δ:Q×Σ→Q
- uma função de saída mapeando cada estado para o alfabeto de saída γ:Q→Π
A partir dessa definição, uma máquina de Moore é um transdutor determinístico de estado finito.
Não tenho referência para minimização de autômatos de Moore. No entanto, não parece muito difícil imaginar um algoritmo, derivado do algoritmo usado para autômatos de estados finitos determinísticos.
A idéia na minimização do DFA é baseada na caracterização Myhill-Nerode de idiomas regulares .
Dada uma linguagem e um par de cadeias x e y , defina uma extensão distinta como sendo uma cadeia z, de modo que exatamente uma das duas cadeias x z e y z pertença a LLxyzxzyzL . Definir uma relação
em cordas pela regra de que x R L y sse não há extensão diferencial para x e y . É fácil mostrar que
R L é uma relação de equivalência em cordas, e, portanto, divide o conjunto de todas as cadeias em classes de equivalência.RLxRLyxyRL
O Myhill-Nerode teorema afirma que é regular se e somente se
R L tem um número finito de classes de equivalência, e além disso, que o número de estados no menor autômato finito determinístico (DFA) reconhecendo L é igual ao número de classes de equivalência em R L .LRLLRL
Com efeito cada estado do menor DFA é tal que W q tal como definido acima, é uma das classes de equivalência para a relação R L .qWqRL
Para um DFA não mínimo para a linguagem regular , é fácil mostrar que cada conjunto W q contém cadeias que todos pertencem a uma mesma classe equivalente com respeito a
R L .LWqRL
Portanto, a minimização do DFA realmente consiste na mesclagem de estados (considerados como conjuntos de cadeias equivalentes), sempre que é mostrado que dois estados distintos contêm cadeias equivalentes.
Existem dois algoritmos razoavelmente rápidos para esse fim: o algoritmo de Moore (1956), que está no tempo e o algoritmo de Hopcroft (1971), no tempo O ( n log n ) .O(n2)O(nlogn)
A extensão para autômatos Moore é melhor compreendido na redefinição da relação de equivalência de para um transdutor T . A relação R L
estava preocupado com o facto de entrada futuro conduziria equivalente a um estado de aceitação. O R T relação de equivalência de autômatos Moore está preocupado com o fato de entrada futuro irá produzir o mesmo resultado.RTTRLRT
Portanto, dado um transdutor e duas cadeias x e y , definimos uma extensão distinta como uma cadeia z tal que T ( x z ) = T ( x ) u
e T ( y z ) = T ( yTxyzT(xz)=T(x)u com u ≠ v , ou seja, de modo que o comportamento de saída do transdutor seja diferente para z, dependendo de se está seguindo
x ou y .T(yz)=T(y)vu≠vzxy
Novamente, é uma relação de equivalência, dividindo todas as cadeias em
Σ * em classes de equivalência. No caso de uma máquina Moore, essas classes corresponderão novamente ao estado do transdutor mínimo.RTΣ∗
O algoritmo a seguir imita o algoritmo de Moore para minimizar o DFA.
Definimos uma partição inicial de Q em classes de estados S e da seguinte maneira:PQSe
∀e∈Π:Se={q∈Q∣γ(q)=e}
Em seguida, dividimos as classes em seguinte maneira:P
repita sucessivamente para cada classe de estados , até que nenhuma mudeS
repita ∀a∈Σ,
Se , em seguida,fazer nadamaisdividida S em subconjuntos S i tal quepara cada subconjunto S i , existe uma classe diferente S∃S′∈P,∀q∈S,δ(q,a)∈S′
SSi
Si tal que ∀ q ∈ S i ,S′∈P (os subconjuntos S i substituem S em P )∀q∈Si,δ(q,a)∈S′
SiSP
Quando não há mais classe que precise ser dividida, as demais classes de estados formarão os estados da máquina mínima de Moore.
Por construção, todos os estados de uma classe têm a mesma saída que é a saída da classe.
Da mesma forma, para qualquer entrada , todos os estados de uma classe vão para algum estado da mesma outra classe, que define a função de transição para a máquina mínima de Moore.a∈Σ
Análise de complexidade:
Seja seja o número de estados es = | Σ | o tamanho do alfabeto de entrada.
O loop principal é executado no máximo nn=|Q|s=|Σ|
n vezes, pois cada iteração deve dividir pelo menos uma classe de estados e cada classe contém pelo menos um estado. Cada iteração do loop examina cada estado um número finito de vezes e proporcional ao número de símbolos de entrada. Portanto, a complexidade do algoritmo é , a mesma que a do algoritmo de minimização do DFA, que serviu de orientação para este.O(sn2)
Não tenho nenhuma referência para essa minimização de máquinas Moore. Possivelmente está incluído em seu artigo:
Moore, Edward F. (1956). "Experimentos de Gedanken em máquinas seqüenciais". Estudos de Autômatos , Anais de Estudos Matemáticos (Princeton, NJ: Princeton University Press) (34): 129-153.
Este artigo é a principal referência que apresenta as Máquinas Moore . É também a referência para o algoritmo de minimização de DFA de Moore . Portanto, deveria ser surpreendente se a adaptação do algoritmo à minimização de Moore Machines não fosse pelo menos sugerida nesse artigo. Eu verifiquei o artigo e a versão do algoritmo de minimização apresentada é realmente para máquinas Moore, não para DFA. O artigo está bem escrito, mas o estilo da época torna um pouco mais difícil de ler. É interessante ver que muitas das idéias da teoria de Myhill-Nerode das Máquinas de Estado Finito já estão esboçadas neste artigo.
O ( s n log n ) mais recenteO(snlogn) algoritmo devido a John Hopcroft (1971) deve ser igualmente adaptável às máquinas de Moore. Não está claro que houvesse motivo para publicar essa adaptação em qualquer lugar, e o artigo de Hopcroft parece não ter referência às máquinas de Moore.