Em um DFA, todos os estados têm uma transição em todos os símbolos do alfabeto?


12

Se não, então o que significa quando, para algum estado q e algum símbolo uma , δ(q,uma) não existe?


Eu chamaria um autômato não determinístico que nunca tem mais de uma transição no mesmo estado e símbolo de entrada determinístico. Simplesmente não se encaixa na definição do DFA.
Reinierpost

1
Se as regras de um DFA são organizadas de modo que nunca possam estar no estado q quando o símbolo na fita é a , precisamos realmente definir δ (q, a) ?
Peter Shor

4
A resposta é claramente que depende de como se define "autômato finito determinístico". Como tal, não tenho certeza de que essa pergunta seja inteiramente construtiva, pois não há uma resposta correta universalmente aceita - ou seja, essa pergunta solicita opinião e debate.
Patrick87

1
Se deve ser uma função , deve ser definido para todos os pares q , a . δq,uma
vonbrand 5/09/2015

Na minha noção de DFA, essa é uma condição "abortar" ou se você preferir um salto implícito a um estado "rejeitar".
Yves Daoust

Respostas:


22

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,uma) 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,uma) 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ístico M é uma tupla de 5, ( Q , Σ , δ , q0 0 , F ), consistindo de

  1. um conjunto finito de estados ( Q )
  2. um conjunto finito de símbolos de entrada chamado alfabeto ( Σ )
  3. uma função de transição ( δ:Q×ΣQ )
  4. um estado inicial ( q0Q)
  5. um conjunto de estados de aceitação ( FQ ).

Seja w=a1a2uman 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:

  1. r0 0=q0 0
  2. ri+1=δ(rEu,umaEu+1) , paraEu=0 0,...,n-1
  3. rnF .

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 .)

  1. adicionar um estado qerror
  2. para cada par (qEu,sj) que δ é indefinido, defina δ(qEu,sj)=qerror .

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):

Dizemos que um autômato finito é determinístico se 1. Ele não possui transições na entrada ϵ . 2. Para cada estado s e símbolo de entrada uma , existe no máximo uma aresta rotulada umas saída .

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):

Um autômato finito determinístico (DFA, para abreviar) é um caso especial de um autômato financeiro não determinístico no qual ... há no máximo uma aresta rotulada umas saída .

(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):

Em um determinista autômato finito (DFA), há duas arestas saindo do mesmo estado são rotulados com o mesmo símbolo.

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):

quando um estado morto (um estado não final sem transições de saída) é atingido, as variáveis ​​[que registram a correspondência mais longa que vimos até agora] informam qual token foi correspondido e onde terminou.

Livros da comunidade da teoria da mudança:

Kohavi, Switching e teoria finita de autômatos, 2 / e , 1978, p. 611 diz:

Como um diagrama de estados descreve uma máquina determinística , a próxima transição de estado deve ser determinada exclusivamente pelo estado atual e pelo símbolo de entrada digitalizado no momento.

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):

a função de transição, δ , especifica exatamente um próximo estado para cada combinação possível de um estado e um símbolo de entrada.

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 cartesiano s×Σ 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:

MS×ΣS

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):

Um autômato de empilhamento é determinístico , falando intuitivamente, se houver no máximo uma transição aplicável a cada configuração.

Enquanto Hopcroft e Ullman dizem (p. 112):

O PDA ... é determinístico no sentido de que no máximo um movimento é possível a partir de qualquer ID.


qerror

2
A versão da função parcial é a fornecida em Hopcroft e Ullman, se isso faz diferença. Portanto, a ideia de que uma função parcial é inerentemente não determinística não é de modo algum padrão.
jmite

1
@jmite Não é que funções parciais impliquem não-determinismo; é que funções totais implicam determinismo que torna as funções totais a melhor escolha. Claro, é uma questão mais ou menos arbitrária das definições que você está usando.
Patrick87

3
δ

1
Como você mostrou, a versão da função parcial tem uma tradução fácil para a versão da função total e, até onde eu posso ver, você não ganha absolutamente nada, pedagogicamente ou de outra forma, permitindo que a função de tradução seja parcial. O dragão menciona especificamente que a função é total. Por que no mundo estamos criando uma discussão sobre algo que foi definido claramente em um livro-texto padrão que a maioria das pessoas segue quando não há absolutamente nada a ganhar ao escolher uma definição não-padrão?
Alex Smart

8

δ(q,uma)qQumaΣQΣ

ε

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.


2
Isso depende da definição; existem vários que são equivalentes em poder.
Raphael

3
+1 É melhor seguir essa definição, IMHO, pois todos concordariam que uma AF que define exatamente uma transição para cada par (estado, símbolo) constitui um DFA válido.
Patrick87

1
E essa definição é totalmente errada quando você tenta estendê-la para decidir se uma linguagem livre de contexto é determinística ou não determinística. Um autômato de empilhamento com transições ausentes pode sempre ser transformado em um autômato de empilhamento com exatamente uma transição por estado / símbolo de entrada / símbolo de pilha. Um autômato de empilhamento não determinístico com várias transições possíveis por estado / símbolo de entrada / símbolo de pilha não pode necessariamente ser transformado em um autômato de empilhamento determinístico. (Por exemplo: no caso em que a linguagem reconhecida é não determinístico livre de contexto.)
Wandering Logic

2
@jmite Basta definir os autômatos de aparar independentemente dos DFAs. Eu acho muito mais importante que DFAs mínimos tenham o número certo de estados, de acordo com o teorema de Myhill-Nerode, que você só obtém com estados mortos.
Patrick87

4
ϵϵϵ

6

Existem definições de DFA ao longo das linhas de

UMA|δ(q,uma)|1qumaδ(q,ε)δ(q,uma)=umaΣUMA

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.


Acho que a pergunta do OP precisa ser editada para incluir a definição formal do DFA.
scaaahu

0

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.


1
Qual é a diferença das respostas existentes para que você poste uma nova resposta?
X64xzr # 26/18

0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.