Quais são as diferenças entre as máquinas de Turing determinísticas e não determinísticas? Modelos diferentes, mas equivalentes, do NDTM. Em particular, qual é a frase usada com frequência "adivinhação não-determinística"? Como usá-lo corretamente e exemplos de uso incorreto. Meu objetivo é criar uma pergunta de referência.
turing-machines
nondeterminism
fade2black
fonte
fonte
Respostas:
Aqui estão várias maneiras de pensar sobre o não-determinismo (copiado desta resposta ).
O gênio. Sempre que a máquina tem escolha, um gênio diz a ela que caminho seguir. Se a entrada estiver no idioma, o gênio poderá direcionar a máquina de tal maneira que eventualmente aceite. Por outro lado, se a entrada não estiver no idioma, o que quer que o gênio diga à máquina para fazer, ela sempre será rejeitada.
Dicas. A máquina calcula uma função bivariada. A primeira entrada é uma palavraW e a segunda entrada é uma "dica" x . Sempre que a máquina enfrenta uma escolha não determinística, ela consulta o próximo símbolo de dica e opera em conformidade. Nos é prometido o seguinte:
Aceitando cálculos. Um cálculo de aceitação é um cálculo legal (aquele em que a máquina sempre opera de acordo com uma das opções com que se depara) que termina em um estado de aceitação. Uma palavra está no idioma se tiver um cálculo aceitável.
Podemos formalizar a noção de aceitar computação usando configurações . Uma configuração é uma descrição instantânea de todo o estado da máquina. Podemos definir uma relaçãoσ⊢σ′ , Onde σ,σ′ são configurações, que são mantidas quando σ pode levar a σ′ em uma etapa. Em uma máquina determinística, há no máximo umaσ′ por cada σ , enquanto que em uma máquina não determinística, pode haver mais de uma. Um cálculo de aceitação para uma palavraw é aquele que inicia na configuração inicial (a fita contém w , a cabeça aponta no início de w , o estado é o estado inicial) e termina em uma configuração de aceitação.
Outra descrição equivalente é em termos de acessibilidade. Considere um gráfico direcionado no qual os vértices são configurações e existe uma arestaσ para σ′ E se σ⊢σ′ . Um cálculo de aceitação é um caminho da configuração inicial para uma configuração de aceitação.
fonte
A diferença entre as máquinas de Turing determinística e não determinística está na função de transição. Em máquinas determinísticas de Turingδ a função de transição é uma função parcial:
o que significa que, dado um estado e um símbolo de fita, você tem um ou nenhum estado, insira o símbolo à direita e a direção a se mover. No entanto, em máquinas de Turing não determinísticas, isso se parece (aquiP é o conjunto de subconjuntos de um conjunto):
significando que você tem um ou vários estados, símbolos de fita para escrever ou direção para a qual mover. Isso dá à sua máquina a possibilidade de escolher efetivamente nesse estado e símbolo de fita entre os diferentes "ramos" da computação possíveis.
Na prática, isso significa que podemos calcular saídas diferentes para a mesma entrada. Portanto, a linguagem de uma máquina de Turing não determinística é o conjunto de palavras para as quais encontramos uma derivação nas transições definidas. Uma execução específica pode não encontrar essa derivação, mas o importante é que ela possa ocorrer. Então, quando você "adivinha", está apenas escolhendo um dos possíveis ramos da computação.
Exemplo de uso
Nesse caso, é possível "adivinhar" uma palavraw e executar M1 e M2 em w verificando se ambos aceitam, eles aceitam ao mesmo tempo. A suposição poderia funcionar introduzindo um estadoq com transições que escrevem em alguma fita 0 se / ou 1 se sai lendo qualquer símbolo na máquina geral.
Para ser honesto, não encontrei nenhum exemplo de mau uso desse "palpite", mas verificar se cada vez que essa frase é usada corretamente é reduzido, para verificar se você pode construir um autômato com essa estrutura que simula o palpite.
fonte
Aceitação da sequência de entrada no NTM
deixe-me acrescentar mais sobre máquinas de Turing determinísticas e não determinísticas. Vamos considerar que, para algum idiomaL , projetamos uma máquina de Turing determinística e não determinística, respectivamente. Em alguma entradax , haverá apenas um caminho de configurações no caso da máquina determinística de Turing, ou seja, c0⟶c1⟶⋯⟶ck (onde cada ci representa uma configuração em i passo). Agora com base na configuraçãock , podemos aceitar e rejeitar facilmente a sequência de entrada x .
Veja a imagem abaixo para entender melhor:
No caso do NTM, precisamos ter cuidado, pois pode acontecer que em alguns caminhos de configuração, entremos no estado de rejeição. Portanto, para máquinas de Turing não determinísticas, dizemos que uma string é aceita se pelo menos um dos caminhos de configuração levar ao estado de aceitação . Rejeitaremos a sequência de entrada se todos os caminhos de configuração levarem ao estado de rejeição.
Por exemplo, considere a árvore de configuração fornecida acima para a máquina de Turing não determinística, digamos, alguma string de entradax Nesse caso, aceitaremos a string de entrada porque existe um caminho de aceitação.
Referência : http://cs.umw.edu/~finlayson/class/fall14/cpsc326/notes/24-complexity2.html
fonte
Aumento com um módulo de adivinhação.
Encontrei esse modelo em " Computers and Intratability ", de MR Garey e DS Johnson.
Como funciona.
. . .
fonte