Por favor, explique "decidibilidade" e "verificabilidade"


8

Estou tentando (intuitivamente) entender os dois termos "decidibilidade" e "verificabilidade".

Pesquisei bastante e passei pelos vários textos em que posso colocar as mãos. No entanto, o entendimento intuitivo deles parece me escapar, especialmente no segundo.

Das muitas definições encontradas, a seguinte encontrada nesta página explicou claramente a capacidade de decisão para mim.

Um idioma é chamado decidível se existir um método - qualquer método - para determinar se uma determinada palavra pertence ou não a esse idioma.

No entanto, não consigo encontrar uma definição paralela para verificabilidade.

No livro Teoria da Computação de Sipser , encontramos,

P = a classe de idiomas para os quais a associação pode ser decidida rapidamente.

NP = a classe de idiomas para os quais a associação pode ser verificada rapidamente.

À luz do exposto, quero entender a verificabilidade.

Por favor, forneça quantos exemplos puder, em um momento, tento entender o significado, no próximo, fico confuso novamente.


Este artigo ( cs.uky.edu/~lewis/cs-heuristic/text/class/p-np.html ) coloca alguns bons exemplos sobre o assunto.
Masroor

2
Essas noções não estão restritas a P e NP. Volte ao capítulo sobre computabilidade e enumerabilidade. E olhe para as definições formais.
Raphael

Respostas:


7

A chave para entender aqui é que P e NP são classes de problemas de decisão. Isso significa que todos eles têm respostas sim / não.

Portanto, quando dizemos que um problema como o 3-SAT é NP-Complete, significa que, dada uma instância do 3-SAT (também conhecida como uma palavra potencialmente no idioma), não há uma maneira eficiente conhecida de testar se a palavra é ou não no idioma

Dizer que algo está no NP significa que existe algum tipo de "prova" para cada string no idioma, que é polinomial no comprimento da entrada.

Por exemplo, no 3-SAT, estamos perguntando, existe uma atribuição de Verdadeiro / Falso para um conjunto de variáveis ​​em uma fórmula booleana, de modo que a fórmula se torne verdadeira. A palavra que estamos testando é a fórmula booleana. Não há como saber se existe uma solução única que torne toda a fórmula verdadeira. Porém, se tivermos um conjunto de valores verdadeiro / falso para as variáveis, é muito fácil verificar (em tempo polinomial) se isso faz com que a fórmula seja avaliada como verdadeira.

O ponto principal aqui é que a palavra que estamos testando NÃO é os valores verdadeiro / falso de cada variável. A palavra que estamos testando é a fórmula que contém as variáveis ​​e o idioma é o conjunto de todas as fórmulas booleanas avaliadas como verdadeiras.

Não sabemos como testar com eficiência se a palavra (fórmula) está no idioma (pode ser avaliada como verdadeira), mas, dado um conjunto de atribuições verdadeiras / falsas, podemos verificar se ela é verdadeira, ou seja, é uma "prova" "que a palavra (fórmula) está no idioma. Assim, o problema está em NP, mas não se sabe que esteja em P.

NP é na verdade a classe de problemas de decisão polinomiais não determinísticos solucionáveis. Isso ocorre porque, em uma máquina de tortura não determinística, temos pontos de "decisão" onde podemos realizar uma de várias ações, e nosso certificador polinomial basicamente diz apenas qual é a decisão a ser tomada em cada ponto de decisão.


Não há "isso" para encontrar. P e NP são classes de decisão, portanto, não é um problema de pesquisa, é um problema de sim / não. Uma solução potencial para o problema pode envolver a pesquisa, ou seja, se o problema perguntar "existe ...", mas tecnicamente não há necessidade de "encontrar" algo, apenas para testar se uma condição é verdadeira ou falsa.
jmite

Ok, desculpe, meu mal. Você está totalmente certo.
wece 16/05

postagem excluída, obrigado por suas correções. desculpe novamente pelo meu erro.
wece 16/05

Não precisa se desculpar!
jmite

bem, pode ter sido mais confuso do que útil ...
wece 16/05

1

suponha que você me dê um problema e me pediu uma solução, digamos que você pode verificar apenas a quantidade polinomial da minha prova (ou seja: você pode executar um programa de computador eficiente na minha prova) quando eu lhe enviar a prova da solução tudo o que o que você faz é executar o programa e decidir de acordo com a saída do programa.
por exemplo: suponha que você me pergunte se um gráfico é de três cores, então o que tenho que fazer é enviar uma coloração 3 do gráfico e verificar se todos os vértices adjacentes têm cores diferentes, então a coloração é legal e o programa termina com "accept" (caso contrário, a prova não é aceita e terminamos com "rejeitar").
isso é chamado para verificar "rapidamente".
se você pode criar um "programa" de computador "eficiente" (ou simplesmente: algoritmo polinomial) que diga se uma entrada (uma sequência de comprimento n) está no idioma (ou se a saída do programa 1 \ "aceitar") é isso quer dizer com classe de complexidade P.
exemplo: suponha que eu lhe forneça uma lista de strings (digamos lista telefônica) e perguntei sobre um nome que você deve dizer se está no livro ou não. Uma solução é lançar todos os nomes e comparar cada nome com o nome dado, que diz que você pode resolvê-lo em tempo linear.
outro exemplo é: dado um gráfico G = (V, E) e uma aresta e = (u, v) e você deseja dizer se a aresta está no gráfico.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.