Eu tenho essa pergunta [engraçada] em mente. Por que o autômato finito não determinístico é chamado não determinístico enquanto definimos as transições para entradas. Bem, embora existam transições múltiplas e epsilon , elas são definidas, o que significa que a máquina é determinística para essas transições. O que significa que é determinístico.
finite-automata
nondeterminism
Madhusoodan P
fonte
fonte
Respostas:
"Determinístico" significa "se você colocar o sistema na mesma situação duas vezes, é garantido que você fará a mesma escolha nas duas vezes".
"Não determinístico" significa "não determinístico" ou, em outras palavras, "se você colocar o sistema na mesma situação duas vezes, ele poderá ou não fazer a mesma escolha nas duas vezes".
Um autômato finito não determinístico (NFA) pode ter várias transições fora de um estado. Isso significa que existem várias opções para o que ele poderia fazer nessa situação. Não é forçado a sempre escolher o mesmo; em uma entrada, ele pode escolher a primeira transição e, em outra entrada, pode escolher a mesma transição.
Aqui você pode pensar em "situação" como "em que estado o NFA está, junto com qual símbolo será lido a seguir a partir da entrada". Mesmo quando os dois são iguais, um NFA ainda pode ter várias transições correspondentes que podem ser retiradas desse estado e pode escolher arbitrariamente qual delas tomar. Por outro lado, um DFA possui apenas uma transição correspondente que pode ser realizada nessa situação, portanto não tem escolha - sempre seguirá a mesma transição sempre que estiver nessa situação.
fonte
Veja esse autômato, por exemplo, é um NFA e aceita a string . Para ser mais pedante, aceita strings que terminam em 10 .0110 10
Para ver se precisamos apenas verificar se ele atinge um estado de aceitação.
Agora, na linha vermelha, havia outra possibilidade, ou seja, ao ler o segundo1 eu poderia ficar em e depois permanecer em q 0 ao ler o último 0 . Os autômatos não têm memória; portanto, não há como 'salvar' um estado e verificar mais tarde se minha sequência termina com 10 ; é como se esse NFA estivesse tentando adivinhar se a sequência termina com 10 antes de ramificar para um estado aceitável. O não determinismo aqui é fazer muitas escolhas e sempre fazer as corretas.q0 q0 0 10 10
É mais fácil construir um NFA do que construir um DFA, o bom é que ambos são equivalentes .
fonte
A função de transição de um NFA especifica as transições permitidas a qualquer momento. Pode haver mais de uma opção, e a NFA escolhe uma transição não - determinística, com o objetivo de, eventualmente, alcançar um estado de aceitação.
Talvez você deva esperar até aprender sobre máquinas de Turing não determinísticas. Não determinismo significa a mesma coisa nos dois casos.
fonte
Comece com um autômato finito. Possui estados e estados e transições de aceitação.
Agora, dê a ele mais de uma regra de transição de cada estado e diga que aceita se existir um conjunto de regras de transição escolhidas após o fato de levar ao estado de aceitação, dada uma sequência de entrada.
Depois de ter sua string de entrada, há um conjunto fixo de transições concretas e afirma que ela passa (uma de cada vez) para aceitar essa string. Mas quais transições que escolhe são escolhidas apenas no final da string . Enquanto a string está sendo lida, o caminho a seguir não é determinado.
É não determinístico. Ele escolhe seu caminho através do gráfico depois de fornecer todo o problema, não enquanto lê a entrada.
Agora, formalizamos isso de maneira diferente do que esse experimento mental, mas isso dá a você motivação para obter esse nome.
Isso explica como ele recebeu o nome em primeiro lugar. Sim, você pode modelar NDFA de uma maneira completamente determinística, mas os nomes são persistentes . Depois que você chama algo de Bob, há um custo de comunicação para renomeá-lo para outro, pois ninguém sabe do que você está falando quando você o chama de Alice.
fonte
Na wikipedia , a melhor maneira de pensar sobre isso é começar com máquinas de estado finito determinístico (DFA). Para um DFA, cada transição é determinada exclusivamente pelo estado atual e pelo símbolo de entrada a ser processado. Máquinas de estados finitos não determinísticos (NFA) são simplesmente o que você obtém quando relaxa essa regra de determinismo para permitir que as transições não sejam definidas exclusivamente. É o que você obtém ao remover a regra determinisim dos DFAs.
fonte
NFA e DFA são usados para (entre outras coisas) reconhecer certas seqüências de caracteres.
O autômato finito não determinístico funciona como se tivesse influência em suas decisões - ele pode "escolher" seguir um caminho ou não.
Na imagem acima, quando estamos lidando com a string "00111", observe que, ao encontrar o primeiro "1", há duas maneiras possíveis de seguir. Pode-se ficar em "p" ou ir para "q". Se o autômato fosse para o "q", ele não aceitaria a sequência (já que não há arestas saindo do "q"). Mas a string pode ser aceita por esse autômato indo para o "q" apenas com o último 1, enquanto permanece no "p" para todo o resto (e é isso que está acontecendo).
A NFA faz parecer que o autômato "sabia" o que está por vir e escolhe de acordo.
Claro que não. O DFA e o NFA são equivalentes em termos de potência (você pode reduzir o NFA para o DFA e tornar o DFA (provavelmente) mais simples com o uso do NFA), mas o NFA é útil, pois permite definir os mesmos idiomas do DFA enquanto mantém os gráficos muito mais curto e mais legível.
Não há nada aleatório lá. A parte não determinística enfatiza o fato de que há alguma "escolha" a ser tomada, mas a verdade é que o autômato não toma nenhuma decisão.
fonte
Bem, aqui está a mistura de alguns conteúdos do livro [Introdução a linguagens formais e autômatos, de Peter Linz 4E] e meu entendimento.
Considere um programa de jogo em que a máquina precisa tomar a decisão para a próxima jogada [digamos, tic-tac-toe]. Como existem vários movimentos possíveis, escolhemos cada movimento deterministicamente, avaliamos o movimento e optamos pelo melhor. Mesmo que o processo de seleção fosse determinístico e houvesse muitos movimentos possíveis, o movimento final realizado foi único e foi escolhido como o melhor movimento, ocultando todos os cálculos de movimentos testados do oponente. [Aqui assumimos que o processo de avaliação de cada movimento possível foi oculto ao oponente].
Portanto, apenas uma escolha foi feita e o oponente recebe uma ilusão de tal modo que o movimento não é determinístico.
Bem, se você ainda não está convencido de perguntar que a melhor jogada foi o produto de alguns cálculos determinísticos, você deve considerar a máquina que faz movimentos perfeitamente aleatórios (pode haver perda de máquina, mas é um NFA).
fonte