Problema com a implementação do algoritmo de Brzozowski

8

Eu tenho tentado implementar o algoritmo de Brzozowski, mas acabei de descobrir que ele cria autômatos abaixo do ideal para uma determinada classe de entradas, tendo mais um estado do que o que é realmente necessário no resultado. Eu posso mostrá-lo em um autômato trivial:

   a b           a   b           a b            a     b            a b
>0 0 1  rev  *0 0,2  -   det  >0 - 1  rev  *0   -     -    det  >0 1 2
 1 1 2  -->   1  1   0   -->   1 2 5  -->   1   -    0,4   -->   1 1 2
*2 0 2       >2  -  1,2        2 2 3        2  1,2    -          2 2 3
                              *3 4 -        3   -     2         *3 1 3
                              *4 4 1        4  3,4    -          
                              *5 5 5        5   5    1,5         
                                           >6 3,4,5 1,2,5        

Aqui rev é a parte de reversão da borda, onde eu já havia removido as transições no epsilon, e det é a determinação através da construção do conjunto de potências, criando novos estados assim que os descobre, recursivamente.

O problema aqui é o seguinte: quando adiciono o estado extra para compensar os três estados iniciais diferentes após a primeira reversão da borda e construção do conjunto de potências, nada volta a esse estado e, portanto, não consigo me livrar dele mais tarde por ser equivalente para o estado inicial original.

Existe algo errado com a maneira como estou fazendo isso? Estou esquecendo de algo?

Přemysl J.
fonte

Respostas:

5

Esta é uma excelente pergunta!

A etapa de reversão no algoritmo de Brzozowski não introduz um novo estado inicial virtual que leva aos antigos estados de aceitação via -transitions. Em vez disso, permite vários estados iniciais, o que não é um grande problema, se você construir o autômato do produto imediatamente após a reversão.ε

Conceitualmente, é o mais fácil considerar a reversão e a determinação como uma única etapa. Se seu DEA for , defina como DEA seguinte forma:M=(Q,Σ,δ,q0,F)MR=(QR,Σ,δR,q0R,FR)

  • QR=P(Q) ,
  • q0R=F ,
  • FR={PQq0P} ,
  • δR(P,a):={pQδ(p,a)P} .

(Você pode ignorar estados que não são alcançáveis.)

O Teorema de Brzozowski afirma que é um DEA mínimo que aceita .(MR)RL(M)

Para uma leitura mais aprofundada, sugiro Elements of Automata Theory, de Sakarovitch, páginas 116-117.

A.Schulz
fonte