✖

Minimização de autômatos

Por minimização de um autômato entendemos encontrar um autômato equivalente que contenha o menor número possível de estados. Mesmo um autômato que não contém nenhum estado inútil pode ser simplificado ainda mais.

Exemplo

Tome este autômato:

o autômato aceita apenas as palavras 01 e 11. É evidente que existe um autômato mais simples, com três estados, que aceita a mesma linguagem. Os estados q1 e q2 podem ser fundidos em um novo estado {q1, q2}, e as transições que levavam aos estados q1 ou q2 passarão a levar ao novo estado, e o mesmo vale para as transições que saíam de q1 e q2. Obtemos este autômato:

Esse autômato claramente aceita a mesma linguagem que o anterior e, ao mesmo tempo, tem menos estados.

Equivalência de estados

Considere um autômato A = ⟨Q, Σ, δ, q0, F⟩. Definimos a linguagem do estado q ∈ Q, que denotamos por L(q), como

L(q)=L(⟨Q,Σ,δ,q,F⟩)

Isto é, mudamos o estado inicial do autômato A de q0 para q e calculamos a linguagem aceita por esse autômato. Em outras palavras, na linguagem L(q) estão todas as palavras w tais que, no autômato A, a partir do estado q, com a palavra w, chegamos a um estado final do autômato. Voltando ao autômato anterior, temos L(q1) = {1}.

Dizemos que dois estados distintos q1 e q2 são equivalentes se vale

L(q1)=L(q2)

O que isso significa? Se os estados q1, q2 são equivalentes, então, se fizermos deles estados iniciais do autômato, eles gerarão a mesma linguagem. Em outras palavras: se o autômato chega às configurações ⟨q1, w⟩ e ⟨q2, w⟩, então nos dois casos ele deve aceitar ou, nos dois casos, rejeitar.

Voltando ao autômato anterior: os estados q1 e q2 são equivalentes, porque, se estamos no estado q1, só podemos aceitar a palavra de entrada se a parte não lida da palavra for igual a 1. O mesmo vale se estamos no estado q2.

Na minimização de um autômato, trata-se, portanto, de encontrar estados equivalentes e eliminá-los, fundindo-os em um único novo estado, como fizemos no exemplo acima.

Como encontrar estados equivalentes

Que estados certamente não serão equivalentes? Se tomarmos um estado final e um estado não final, eles certamente não serão equivalentes, porque a linguagem do estado final é diferente da linguagem do estado não final — o estado final com certeza aceita a palavra ε, e o não final, não. Vamos mostrar o procedimento logo em um exemplo. Considere este autômato:

Começamos criando dois conjuntos de estados

S1=F={q3,q6},S2=Q∖F={q0,q1,q2,q4,q5}.

Agora criamos a tabela de transições e mantemos a informação sobre os grupos S1 e S2:

grupoestado01S1q3q5q4q6——S2q0q1q2q1—q3q2—q3q4q6—q5q6—

Agora modificamos a tabela de modo que, em vez de ter escrito diretamente para quais estados se vai com o símbolo dado, anotamos ali apenas o grupo para o qual passamos. Por exemplo, do estado q3, com 0, chegamos ao estado q5, que está no grupo S2. Em vez de q5, escrevemos, então, na tabela S2:

grupoestado01S1q3S2S2q6——S2q0S2S2q1—S1q2—S1q4S1—q5S1—

Agora dividimos os dois grupos mais uma vez. Colocamos nos mesmos grupos sempre os estados que passam para os mesmos grupos para todos os símbolos. Por exemplo, os estados q3 e q6 não ficarão no mesmo grupo, porque nem com 0 nem com 1 vão para o mesmo grupo. Já os estados q1 e q2 ficarão no mesmo grupo, porque nenhum dos dois tem transição para 0 e ambos vão, com 1, para o grupo S1. Criamos, assim, novos grupos:

grupoestado01q3S2S2q6——q0S2S2q1—S1q2—S1q4S1—q5S1—

Em cada grupo temos as mesmas transições. Rotulamos os grupos recém-criados e de novo descobrimos para qual desses novos grupos os estados apontam:

grupoestado01S1q3S5S5S2q6——S3q0S4S4S4q1—S1q2—S1S5q4S2—q5S2—

Neste momento faríamos outra divisão dos grupos. Mas vemos que não podemos fazer mais nenhuma divisão, porque obteríamos os mesmos grupos — pois os estados q1 e q2 têm, de fato, as mesmas transições dentro dos grupos, mas já estão no mesmo grupo, e nenhum outro estado está no grupo S4. O algoritmo de busca de estados equivalentes chegou ao fim. De cada grupo basta escolher um estado; apagamos os outros, e todas as transições que levavam aos estados apagados passarão a levar ao único estado que escolhemos.

Podemos escolher, assim, que o nosso novo autômato terá os estados q3, q6, q0, q1, q4 e removemos os estados q2 e q5. Todas as transições que levavam a q2 agora levarão a q1, e todas as transições que levavam a q5 levarão a q4:

Procedimento de minimização de um autômato

  1. Removemos os estados inacessíveis,
  2. removemos os estados inúteis,
  3. removemos os estados equivalentes.

Fontes

Capítulos: Estados inacessíveis, Estados inúteis, Minimização de autômatos