Máquina de Turing não determinística que para em pelo menos um ramo da computação

7

Estou vendo meu livro aqui, de Michael Sipser, e ele diz que uma máquina de Turing não determinística é decisiva se todos os seus ramos de computação pararem em todas as entradas. Acho que me lembro de ter visto em algum lugar o que você chamaria de máquina de Turing não determinística que pára em pelo menos um ramo para todas as entradas, mas pode se repetir em outras. Existe um nome para uma coisa dessas? Vejo mais adiante neste capítulo o verificador de palavras , mas isso não parece se encaixar ... Acho que isso se refere a um algoritmo.

Um verificador para uma linguagem é um algoritmo , em que Nós medimos o tempo de um verificador apenas em termos do comprimento de , portanto, um verificador de tempo polinomial é executado em tempo polinomial no comprimento de . Uma linguagem é polinomialmente verificável se tiver um verificador de tempo polinomial.UMAV

UMA={WV aceita W,c para alguma corda c}.
WWUMA
Mirrana
fonte
Talvez apenas na definição da linguagem reconhecida por um MNT? Um NTM aceita uma stringWse existe pelo menos um caminho de computação que termina no estado de aceitação ... mas não necessariamente isto acontece para todas as cadeias de entrada (de outra forma L (MNT) = \ Sigma ^ *)
Vor
Eu acredito que você diria que a máquina "aceita" o idioma.
Uma TM não "aceita" um idioma, aceita cadeias de caracteres. O conjunto de seqüências de caracteres aceitas por uma MT é o idioma dessa MT, observou L (M). Você pode dizer que o ATM aceita a representação de string de um idioma.
Kent Munthe Caspersen
@KentMuntheCaspersen Nope. O idioma aceito por uma máquina de Turing é o conjunto de cadeias de entrada para as quais atinge um estado de aceitação. Além disso, se a máquina parar para todas as cordas que não aceita, diz-se que decide o idioma.
David Richerby
@DavidRicherby Nope to what?
Kent Munthe Caspersen

Respostas:

2

A idéia é que uma MT determinística sempre responda Sim / Não em tempo finito (caso contrário, toda a idéia não faz sentido). E para fazer isso, a simulação determinística do MNT não pode simplesmente ir para a terra da terra em alguns galhos, ou seja, todo galho deve terminar em sim / não em uma profundidade finita. Ele decide (dá uma resposta definitiva). Se nem todos os ramos pararem, é possível verificar (ou seja, dada uma palavra no idioma, é garantido que ele responde Sim; se não, talvez responda Não, talvez faça um loop).

vonbrand
fonte
11
Bem, claramente um NTM pode de fato ter ramificações infinitamente profundas apenas em virtude de tentar resolver um problema indecidível. O que você quer dizer com dizer que não pode? Ou estou entendendo mal alguma coisa?
21813 Mirrana
Uma TM determinística nem sempre responde Sim / Não em tempo finito, pode repetir e, portanto, nunca parar. Um DTM simulando um NTM pode fazer um loop em uma das ramificações da NTM, mas com uma simulação de amplitude inicial, as outras ramificações ainda serão simuladas. Um verificador nunca pode fazer loop em nenhuma entrada, pois é uma decisão.
Kent Munthe Caspersen
3

As strings aceitas por um NTM Msão o idioma de M, observadoL(M)

Digamos que, Mpara qualquer entrada, não há garantia de interrupção em todos os ramos. Então Mclaramente não pode ser um decisor e, portanto, é apenas um reconhecedor. Mreconhece o idioma de todas as strings, para as quais qualquer ramo Mtermina em um estado de aceitação.

Desde Mé um reconhecedor, ele só é garantido para aceitar uma string se a cadeia está em L(M). Dada uma sequência, que não está presente L(M), ela pode rejeitá-la ou fazer um loop para sempre. Qualquer NTM pode ser simulado por um DTM, mas se o NTM reconhecer apenas um idioma L, seu DTM equivalente também reconhecerá apenas L.

Se o NTM parar em todas as ramificações para qualquer entrada, é uma decisão, o DTM equivalente fará o mesmo e, portanto, também será uma decisão.

Um verificador não é o que você está procurando. No livro Sipsers, Introdução à teoria da computação, o verificador é introduzido quando se fala em complexidade de algoritmos e classes de complexidade, porque qualquer linguagem Lestá no NP se e somente se tiver um verificador de tempo polinomial.

Um verificador para uma linguagem Lterá como entrada uma string wem Le um certificado c(pense o certificado como uma solução para o problema w) e verificar se o certificado é de fato uma solução correta, o que torna wmentira L.

Exemplo:

Para o idioma

L = { w | w is an integer for which the product of some of the digits equals 12000 }

Você pode fazer um verificador V, que leva uma corda wem Lum certificado c, e verifica se wé, de fato, em Lutilizando o certificado c. cpoderia ser uma sequência binária indicando os números inteiros wpara os quais o produto é igual a 12000.

Por exemplo, Vdeve rejeitar a entrada 1923423343, 0010111011, porque2*4*2*3*4*3 = 576 != 12000

Para muitos problemas, conhecemos apenas um algoritmo que pode resolvê-los em execução no tempo exponencial do tamanho da entrada. É por isso que os verificadores são interessantes, porque geralmente é o caso, que fornecemos uma solução rapidamente para determinar se essa solução está correta ou errada.

Kent Munthe Caspersen
fonte
O que significa "um número inteiro para o qual o produto de alguns dígitos soma 12.000" significa?
David Richerby
11
Desculpe, essa descrição foi vaga, alterei a "soma" para "igual". O que isto significa é que L contém todos os números inteiros criados pelos dígitos d1d2 ... dn, onde existe um multiset A desses dígitos, de modo que o produto de todos os números em A seja igual a 12000. Por exemplo, w = 164245455 está em L porque 4 * 4 * 5 * 5 * 5 * 6 = 12000. Mas w = 999999999 não está em L. Esse era apenas um problema de decisão arbitrário, usado para mostrar o que um verificador faz e que muitas vezes é mais fácil verificar uma solução do que encontre um.
Kent Munthe Caspersen