Se não, então o que significa quando, para algum estado e algum símbolo , não existe?
terminology
automata
finite-automata
Duncan
fonte
fonte
Respostas:
Você parece ter tropeçado em uma questão controversa. Aparentemente, os cientistas da computação gostam de discutir. Eu certamente gosto de discutir, então aqui vai!
Minha resposta é inequívoca: não. Um autômato finito determinístico não precisa de uma transição de cada estado para cada símbolo. O significado quandoδ( q, Um ) não existe é simplesmente que o DFA não aceita a sequência de entrada.
Embora você possa criar uma definição de DFA que exija queδ( q, Um ) exista, simplesmente não é o caso de uma transição ausente tornar a estrutura resultante (como você chama) de qualquer maneira não-determinística, como muitos dos comentaristas são reivindicando. Se você estiver fazendo um curso sobre teoria de autômatos, o próximo tópico será sobre linguagens livres de contexto e autômatos push-down, onde a distinção entre autômatos não determinísticos e determinísticos é crítica e é necessário usar a definição correta de não determinismo.
O não determinismo está associado a ter mais de uma transição legal.
Acho que todos concordamos com a seguinte definição da Wikipedia (que mostrarei em apenas um segundo é um pouco ambígua):
Um autômato finito determinísticoM é uma tupla de 5, ( Q , Σ , δ , q0 0 , F ), consistindo de
Sejaw=a1a2⋯an uma string sobre o alfabeto Σ . O autômato M aceita a sequência W se uma sequência de estados, r0 0, r1, … , Rn , existe em Q com as seguintes condições:
A ambiguidade e a controvérsia são sobre a definição da função de transição,δ (número "3" na primeira lista com marcadores.) Todos concordamos que o que diferencia um DFA de um NFA é que δ é uma função e não uma relação . Mas δ é uma função parcial ou uma função total ?
A definição do DFA funciona bem seδ é uma função parcial. Dada uma cadeia de entrada, se você chegar a um estado qEu com um símbolo de entrada umaj onde não há próximo estado, em seguida, os autômatos simplesmente não aceita.
Além disso, quando você estende essa definição para criar a definição de autômatos push-down, é necessário fazer a distinção de que autômatos push-down com funções de transição que são funções parciais são classificados como determinísticos, não não determinísticos.
Se a função parcial o incomoda, então aqui está uma transformação trivial que tornaδ uma função total. (Essa transformação não é como o algoritmo de construção de subconjunto, ela adiciona no máximo O (1) estados, é linear no número original de estados e pode ser estendida para trabalhar com PDAs. Nenhum desses fatos é verdadeiro no algoritmo de construção de subconjunto .)
Esse autômato possui umδ que é uma função total e aceita e rejeita exatamente o mesmo conjunto de estados que seus autômatos originais aceitaram e rejeitaram.
Editar, janeiro de 2019
O comentarista @Alex Smart me critica com razão por não fornecer referências nem explicar por que devemos nos importar. Então aqui vai:
A razão pela qual nos preocupamos com a definição exata de determinismo versus não determinismo é que algumas classes de autômatos não determinísticos são mais poderosos que seus primos deterministas, e algumas classes de autômatos não determinísticos não são mais poderosos que seus primos deterministas. Para autômatos finitos e máquinas de Turing, as variantes determinísticas e não determinísticas têm potência equivalente. Para autômatos de empilhamento, há idiomas em que a distinção é importante: há NPDA que aceita o idioma e nenhum DPDA aceita o idioma. Para os autômatos com limites lineares, a pergunta está (ou foi a última vez que verifiquei) aberta. O aumento do poder do NPDA sobre o DPDA vem da permissão de múltiplos transições, não de transformar a função de transição de uma função total para uma função parcial.
Livros da comunidade de compiladores:
Aho e Ullman, Principles of Compiler Design , 1977: Primeiro define NFA (página 88) com uma relação de transição e, em seguida (p. 90-91):
Aho, Sethi e Ullman, Compiladores, princípios, técnicas e ferramentas , reimpressão de 1988, é semelhante, ele primeiro define a NFA com uma relação de transição e depois (p. 115-116):
(Observe que nos comentários @Alex Smart diz: "o dragão menciona especificamente que a função é total". Suponho que ele esteja falando sobre a edição posterior com o co-autor Lam, ao qual não tenho acesso no momento. )
Appel, Modern Compiler Implementation in Java , 1988 (p. 22):
Appel continua explicando que, ao usar o DFA para reconhecer as correspondências mais longas, usamos explicitamente as transições ausentes para decidir quando parar (p. 23):
Livros da comunidade da teoria da mudança:
Kohavi, Switching e teoria finita de autômatos, 2 / e , 1978, p. 611 diz:
Eu normalmente interpretaria exclusivamente como "exatamente um", não "não mais que um". (Ou seja, Kohavi parece estar dizendo que o determinismo requer uma função total)
Livros da comunidade da teoria da computação:
Aqui parece ser mais comum definir DFAs antes de NFAs e exigir que DFAs tenham uma função de transição total, mas depois defina NPDAs antes de DPDAs e defina "determinismo" como sendo uma restrição da relação de transição para não ter mais do que Uma entrada para cada par de estado / símbolo.
Isso é verdade para Hopcroft e Ullman, 1979, Lewis e Papadimitriou, 1981 e, especialmente para Sipser, 2006, que usa a definição de DFA pedagogicamente para introduzir definições formais precisas, explicar sua importância e explicitamente diz (p.36):
Isso parece acompanhar o desenvolvimento histórico. Autômatos finitos determinísticos foram introduzidos nos anos 40 e 50. Autômatos finitos não determinísticos foram introduzidos no artigo por Rabin e Scott, "Autômatos finitos e seus problemas de decisão, IBM J. Rsrch e Dvpt , 3 (2): 114-125, 1959. Seguindo autores anteriores, Rabin e Scott definem determinística autômatos finitos (que eles chamam de autômatos comuns ) como tendo uma função de transição "definida no produto cartesianos × Σ de todos os pares de estados e símbolos" (que eu interpretaria como significando uma função total).
Curiosamente, Rabin e Scott também definem autômatos finitos não determinísticos em termos de uma função total! Página 120, Definição 9:
Ou seja: a função de transição sendo total não torna o sistema determinístico!
Sipser 2006 segue Rabin e Scott e usa uma função de transição total de estados / símbolos para o conjunto de estados de poder para suas definições de autômatos finitos não determinísticos, PDA não determinístico e Máquinas de Turing não determinísticas, mas ignora o tópico determinístico PDA.
Hopcroft e Ullman, 1979, e Lewis e Papadimitriou, 1981 usam funções parciais em suas definições de PDAs determinísticas. Primeiro, eles definem os NPDAs com uma relação de transição e, quando chegam aos PDAs, Lewis e Papadimitriou dizem (p. 135):
Enquanto Hopcroft e Ullman dizem (p. 112):
fonte
Em termos de computabilidade, os NFAs são equivalentes aos DFAs - existe um algoritmo para converter de um NFA para um DFA, e um DFA é apenas trivialmente um NFA que não usa nenhum não-determinismo; portanto, ambos definem o conjunto de linguagens regulares.
fonte
Existem definições de DFA ao longo das linhas de
Nesse caso, você não precisa de todas as transições. Se o autômato não tiver uma transição ajustando o próximo símbolo de entrada, ele será rejeitado.
É um bom exercício mostrar que ambas as definições são equivalentes em termos de quais idiomas podem ser aceitos.
fonte
Na definição do DFA, todos os estados devem ter todo o alfabeto em £. Por exemplo, se £ = {a, b, c} e Q = {q0, q1, q2}, todos esses estados devem ter todos os símbolos a, b, c que mudam para outro estado ou mesmo estado.
fonte
A resposta mais simples para isso é que você adiciona o estado morto para o símbolo esquerdo . Como na conversão de NFA para DFA, obtemos ion transição para alguns símbolos, o que significa que criamos um estado morto para ele.
fonte