O no-determinismo uma importante generalizao dos modelos de mquinas, sendo de
fundamental importncia no estudo da teoria da computao e da teoria das linguagens formais. Nem sempre a facilidade do no-determinismo aumenta o poder de reconhecimento de linguagens de uma classe de autmatos. Por exemplo, conforme ser mostrado adiante, qualquer Autmato Finito No-Determinstico pode ser simulado por um Autmato Finito Determinstico.
A facilidade do no-determinismo para autmatos finitos interpretada como segue: a funo programa, ao processar uma entrada composta pelo estado corrente e o smbolo lido, tem como resultado um conjunto de novos estados. Visto que uma mquina composta por fita, unidade de controle e programa; pode-se afirmar que um AFN assume um conjunto de estados alternativos, como se houvesse uma multiplicao da unidade de controle, uma para cada alternativa, processando independentemente, sem compartilhar recursos com as demais. Assim, o processamento de um caminho no influi no estado, smbolo lido e posio da cabea de leitura dos demais caminhos alternativos.
Observe que, ao contrrio do que acontece nos AFDs, nos AFNs, um mesmo smbolo pode ser lido a partir de um dado estado para dois ou mais estados. Isto , pode haver mais de uma transio, a partir de um mesmo estado, com o mesmo smbolo a ser lido.
Um AFN uma quntupla M = (E, Q, o, q 0 , F), onde: E = Alfabeto Q = Conjunto finito de estados o = Funo de transio ou programa. ( o: Q x E 2 Q ) q 0 = estado inicial do AF. (q 0 e Q) F = Conjunto de estados finais. F _ Q
Funo de Transio ou Programa (o)
uma funo total. Ou seja, definida para todos os elementos do domnio Q x E.
Ex.: Dado o AFN M 1
q p 2 p N p 1
a a a ... estado anterior smbolo lido conjunto de novos estados q o q 1 q 2 1 1 0 1 1 Cada uma das suas partes poderia ter sido representada separadamente:
Alfabeto = {0,1} Conjunto de Estados = {q 0 , q 1 , q 2 } Estado Inicial = q 0 Conjunto de Estados Finais = {q 0 , q 2 } Funo de Transio ou Programa:
o 0 1 A funo de transio ou programa sempre estar definida para todo o domnio. No pior caso, o resultado dela ser o conjunto vazio, que tambm um elemento do conjunto das partes de Q. q 0 C {q 1 , q 2 } q 1 {q 2 } C q 2 C {q 1 , q 2 }
OBS.: Todo AFD um AFN, mas nem todo AFN um AFD.
Funo de Transio ou Programa Estendida a Palavras (o*)
o*(q, c) = {q} o*(q, aw) = {p| - r e o(q, a) e p e o*(r, w)}
Para provar formalmente se uma palavra w aceita por um AFN qualquer M = (E, Q, o, q 0 , F), deve ser verificado se o*(q 0 , w) F = C. Ou seja, o conjunto de estados onde possvel parar no autmato, aps a leitura da palavra w, deve ter algum estado em comum com o conjunto de estados finais deste.
Caso se deseje provar que uma palavra aceita, basta provar por um dos caminhos que ela lida e aceita. Para se provar que uma palavra no aceita por um autmato, deve-se provar por todos os caminhos possveis que ela no pode ser aceita.
Funo de Transio ou Programa Estendida a Conjunto de Estados (o)
Dado um conjunto de estados P = {p 1 , ... , p N } e um smbolo a de um alfabeto, a funo de transio ou programa estendida ao conjunto de estados P, denotada por o(P, a), a unio dos resultados da aplicao da funo programa a cada um dos elementos de P. Ou seja:
o(P, a) = o(p 1 , a) ... o(p N , a)
Converso de AFN para AFD
Para todo e qualquer AFN, possvel encontrar um AFD que seja equivalente a ele, ou seja, que reconhea a mesma linguagem reconhecida pelo AFN.
Dado um AFN M 1 = (E, Q, o, q 0 , F), possvel encontrar um AFD M 1 = (E, Q, o, {q 0 }, F), onde:
Q = 2 Q
F = {p e Q | p F = C}
Ao final do processo de converso, todos os estados que no fazem parte de um caminho que leve do estado inicial {q 0 } a qualquer um dos finais deve ser eliminado, para que o autmato seja minimizado. Ou seja, se um estado no consegue ser atingido a partir do inicial, ou ainda se ele no d acesso a um estado final, ele pode ser desprezado. Ex.: Dado o AFN M 1 abaixo, podemos encontrar um AFD M 2 que seja equivalente a ele. A linguagem aceita por eles deve ser L = { w e {a, b}* | a sufixo de w }.
o a B C C C {q 0 } {q 0 , q 1 } {q 0 } {q 1 } C C {q 0 , q 1 } {q 0 , q 1 } {q 0 }
Os estados C e {q1} podem ser eliminados, pois ambos no podem ser atingidos a partir do estado inicial ({q0}). Os estados restantes, agora, podem ser renomeados. q o q 1 a, b a b b