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:
δ:Q×B→Q×B×{left,right}
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):
δ:Q×B→P(Q×B×{left,right})
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
L={(M1,M2):there exists at least one word accepted by both TM at the same time}
Nesse caso, é possível "adivinhar" uma palavra w e executar M1 e M2 em wverificando se ambos aceitam, eles aceitam ao mesmo tempo. A suposição poderia funcionar introduzindo um estadoq com transições que escrevem em alguma fita 0se / ou 1se 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.