As strings aceitas por um NTM M
são o idioma de M
, observadoL(M)
Digamos que, M
para qualquer entrada, não há garantia de interrupção em todos os ramos. Então M
claramente não pode ser um decisor e, portanto, é apenas um reconhecedor. M
reconhece o idioma de todas as strings, para as quais qualquer ramo M
termina 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 L
está no NP se e somente se tiver um verificador de tempo polinomial.
Um verificador para uma linguagem L
terá como entrada uma string w
em L
e 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 w
mentira 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 w
em L
um certificado c
, e verifica se w
é, de fato, em L
utilizando o certificado c
. c
poderia ser uma sequência binária indicando os números inteiros w
para os quais o produto é igual a 12000.
Por exemplo, V
deve 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.