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.
fonte
Respostas:
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).
fonte
As strings aceitas por um NTM
M
são o idioma deM
, observadoL(M)
Digamos que,
M
para qualquer entrada, não há garantia de interrupção em todos os ramos. EntãoM
claramente não pode ser um decisor e, portanto, é apenas um reconhecedor.M
reconhece o idioma de todas as strings, para as quais qualquer ramoM
termina em um estado de aceitação.Desde
M
é um reconhecedor, ele só é garantido para aceitar uma string se a cadeia está emL(M)
. Dada uma sequência, que não está presenteL(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 idiomaL
, seu DTM equivalente também reconhecerá apenasL
.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
L
está no NP se e somente se tiver um verificador de tempo polinomial.Um verificador para uma linguagem
L
terá como entrada uma stringw
emL
e um certificadoc
(pense o certificado como uma solução para o problemaw
) e verificar se o certificado é de fato uma solução correta, o que tornaw
mentiraL
.Exemplo:
Para o idioma
Você pode fazer um verificador
V
, que leva uma cordaw
emL
um certificadoc
, e verifica sew
é, de fato, emL
utilizando o certificadoc
.c
poderia ser uma sequência binária indicando os números inteirosw
para os quais o produto é igual a 12000.Por exemplo,
V
deve rejeitar a entrada1923423343, 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.
fonte