A idéia é decidir não-deterministicamente no início quanto a palavra é alternada e ter uma cópia do autômato para cada caso. Em termos de autômato, isso significa que adivinhamos em que estado estaria depois de consumir o prefixo de uma palavra (que é um sufixo de nossa entrada) e começamos nesse estado.D
Agora a construção. Para cada estado , separe em duas partes e . contém os estados dos quais é alcançável e os estados que são alcançáveis de :q∈QDA1A2A1qA2q
[ fonte ]
Observe que qualquer nó pode estar contido em e . Portanto, o número de estados pode dobrar se explicitarmos essa etapa.A1A2
Agora reconectamos esse autômato para que ele aceite todas as palavras para as quais marca o "ponto de ciclo":q
[ fonte ]
Nós temosautômatos desta forma; crie um novo estado inicial que tenha -transitions para todos os seus estados iniciais. O autômato resultante aceita . No total, obtemos no máximo estados, apenassão possíveis mais estados do que as reivindicações de referência.|Q|εcycle(L)|Q|⋅(2|Q|+1)+1|Q|
Você pode alcançar estados modificando um pouco os autômatos do componente; elimine todas as substituindo as entrada por cópias de suas transições de saída. Ou seja, para cada par de transições , introduza uma transição .2|Q|2+1q0ε(q1,ε,q0),(q0,a,q2)(q1,a,q2)
Construção rigorosa e prova de correção permanecem como exercício.