Seria mais difícil provar P ≠ NP do que provar P = NP?


20

Considere duas possibilidades para o problema P vs. NP: P = NP e P NP.

Seja Q um dos problemas conhecidos de NP-hard. Para provar P = NP, precisamos projetar um algoritmo de tempo polinomial único A para Q e provar que A resolve Q corretamente.

Para provar P NP, precisamos mostrar que nenhum algoritmo de tempo polinomial resolve Q. Em outras palavras, precisamos excluir todos os algoritmos de tempo polinomial.

Ouvi pessoas dizerem que isso torna a segunda tarefa mais difícil (supondo que seja realmente verdade).

Existe uma razão para pensar que provar P = NP (assumindo que P = NP) seria mais fácil do que provar P NP (assumindo que P NP)?


31
Esta questão está mal colocada. Como apenas uma das afirmações pode ser verdadeira, é impossível provar. O outro pode ser possível provar e, se for o caso, seria mais fácil provar do que o falso. Portanto, não tenho idéia de que tipo de resposta você está procurando. Votos da comunidade, por favor! Isso pode ser respondido?
Raphael

10
@ Rafael Estou em desacordo. Você poderia interpretar a pergunta do OP como "Se P = NP fosse verdade, seria mais fácil provar do que provar P ≠ NP se P ≠ NP fosse verdade?" Não acho que o OP tenha a intenção de ser interpretado como uma sugestão de que ambos devem ser verdadeiros.
O Anathema

3
FWIW, parece-me que a) a interpretação da questão pelo TheAnathema está correta eb) é uma questão significativa. Em outras palavras: Se P = NP, e uma prova for encontrada, essa prova provavelmente estará na forma de um algoritmo de tempo polinomial para um problema completo de NP. Por outro lado, se começarmos com a suposição de que P ≠ NP, que tipos de técnicas poderíamos utilizar para encontrar uma prova e que forma essa prova poderia assumir?
JohannesD


Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Gilles 'SO- stop be evil'

Respostas:


25

Como Raphael explica, essa pergunta é mal colocada, uma vez que no máximo um de P = NP e P ≠ NP deve ser comprovável. No entanto, uma questão semelhante surge na ciência da computação teórica de várias formas, sendo a mais notável no campo dos algoritmos de aproximação .

Dado um problema de otimização difícil de NP (por exemplo, maximização), podemos perguntar até que ponto podemos aproximá-lo. Provar um limite superior na aproximação possível é semelhante a P = NP, enquanto provar um limite inferior na aproximação possível é semelhante a P ≠ NP. O primeiro é muito mais fácil que o segundo. De fato, para provar um limite superior, tudo o que precisamos fazer é criar um algoritmo de aproximação e analisá-lo. Por outro lado, todos os limites inferiores conhecidos são condicionais: eles são válidos apenas se P ≠ NP (de fato, se P = NP, todos os problemas de otimização NP-hard se tornariam solucionáveis). Para provar esses limites mais baixos, mostramos que, se pudéssemos aproximar muito bem o problema, obteríamos um algoritmo de tempo polinomial para algum problema difícil de NP. Geralmente, isso é feito através de intrincadas máquinas técnicas do teorema do PCP. Esse campo, conhecido como dureza de aproximação , só pode ser abordado por especialistas e é técnico mais desafiador do que a maioria dos algoritmos de aproximação. Portanto, neste caso, pelo menos, P = NP é realmente mais fácil do que P ≠ NP.


14
Você poderia interpretar a pergunta do OP como "Se P = NP fosse verdade, seria mais fácil provar do que provar P ≠ NP se P ≠ NP fosse verdade?" Não acho que o OP tenha a intenção de ser interpretado como sendo ambos verdadeiros.
O Anathema

6
@ TheAnathema Acho que é preciso interpretar a pergunta dessa maneira. Mas ainda é muito mal posicionado, porque uma das opções é necessariamente contrafactual. Como você pode comparar esse contrafactual com a dificuldade de provar algo que é verdadeiro?
David Richerby

@ David, a alegação sobre a dificuldade de provar P NP em comparação com P = NP é algo que tenho de especialistas várias vezes. Perguntar se é uma reivindicação razoável é uma pergunta válida. Avaliar a dificuldade de situações contrafactuais (quando não se sabe que são) é realmente comum. Tome, por exemplo, alguém perguntando sobre a dificuldade de provar P NP. Se P = NP, então é contrafactual. =
Kaveh 02/02

9

Não descartamos a possibilidade de uma simples prova de que P = NP. Se alguém amanhã criar um algoritmo que resolva um problema completo de NP em tempo P, o mundo mudará.

Por outro lado, nós descartou a possibilidade de uma prova simples que P! = NP. Nossas técnicas de prova típicas para mostrar que duas classes de complexidade diferentes foram formalmente comprovadas insuficientes. Três dessas técnicas são conhecidas como "aritmetização", "provas naturais" e a categoria de provas chamada "relativização" (aquelas que não se importam com o que os oráculos estão em uso). Pode-se provar que qualquer técnica de prova que se enquadre em qualquer uma dessas 3 categorias não pode provar P! = NP.

Com efeito, há fortes evidências de que provar P! = NP requer novos tipos de provas (novas técnicas com propriedades diferentes), não apenas uma aplicação nova de técnicas de provas conhecidas.


Agora, pode acontecer que P = NP, embora não seja fácil verificar o algoritmo em P que resolve um problema completo de NP, e que são necessárias novas técnicas de prova para provar P = NP. (Se P = NP, já conhecemos algoritmos tecnicamente em P que resolvem problemas difíceis de NP, divertidamente. Eles não são práticos de executar, pois seu fator constante é grande.)

Basicamente, sabemos muito sobre o que não podemos usar para provar P! = NP, enquanto aparentemente sabemos pouco sobre o que não podemos usar para provar P = NP.


Todas as barreiras às provas simples de aplicam-se às provas de P = N P com força igual. Se você tivesse um algoritmo, a prova de que P = N P seria a prova de que o algoritmo estava (i) correto e (ii) em tempo polinomial, e essa prova ainda teria que argumentar qual fato do não-determinismo do algoritmo está usando para sua simulação determinística eficiente que não é verdadeira em relação a um oráculo (algébrico) e como derrota a barreira das provas naturais. PNPP=NPP=NP
Lieuwe Vinkhuijzen

8

Bem, você basicamente tem a ideia. Geralmente pensamos que P! = NP, mas não temos idéia de como provaríamos que essas coisas não são iguais.

Por outro lado, se P = NP, você pensaria que teríamos encontrado um algoritmo para resolver uma das dezenas de problemas completos de NP até agora.

Esses argumentos são bastante acenos, mas em algumas frases eles descrevem a cultura entre os cientistas da computação.

Se provar que P! = NP é "mais difícil", é claro, depende do que é verdade (exceto os resultados meta-matemáticos?), E que, é claro, não sabemos.


5

Alguns especialistas acreditam que provar P NP é mais difícil do que provar P = NP no sentido do tempo que eles acham necessário para resolver a questão P vs. NP. Mas isso é principalmente uma intuição baseada no sentimento de que é mais fácil projetar algoritmos para problemas do que provar que não há algoritmos (eficientes). Geralmente, não tivemos muito sucesso em provar limites mais baixos para problemas. Não podemos nem descartar um algoritmo de tempo linear para SAT. Não podemos descartar que não existe um algoritmo de espaço de log para o SAT. Não podemos nem mostrar que não há circuito booleano de tamanho polinomial de profundidade constante com , , ¬ e¬ portas que não podem resolver o SAT (em termos leigos, é possível que exista um algoritmo paralelo de tempo constante com número polinomial de processadores que resolve o SAT e cada processo calcula apenas uma dessas portas). Os melhores limites inferiores que temos para as máquinas de Turing para resolver o SAT não podem sequer mostrar que não existe um algoritmo cujo tempo de execução multiplicado pelo espaço usado seja n 1,9 . Posso falar um pouco sobre o estado bastante embaraçoso de provar limites inferiores (mas lembre-se de que também temos resultados de barreira que explicam por que é tão difícil provar limites inferiores). Alguns especialistas acham que o programa GCT de Ketan Mulmuley é o mais provável de resolver P vs. NP e o próprio Mulmuley repetiu que acredita que provavelmente levará mais de cem anos para chegar lá.mod6n1.9

No entanto, houve alguns trabalhos recentes de Ryan Williams e outros que mostram que existem ligações intrínsecas entre provar limites inferiores e encontrar algoritmos. Por exemplo, ele mostrou que um algoritmo um pouco melhor que o algoritmo de força bruta para um problema SAT restrito específico implica limites inferiores do circuito e, em seguida, ele projetou esse algoritmo. Então, acho que as pessoas são um pouco menos pessimistas e também não parecem desenvolver algoritmos e provar limites inferiores tão separados quanto as pessoas costumavam pensar que são.

πφπφe o algoritmo retorna sim ou não. Você pode pensar em qualquer verificador de provas dessa maneira. Você também pode pensar em provas em um sistema matemático como o ZFC como tal. O próprio processo de verificação pode ser realizado em tempo polinomial no tamanho da prova, porque é uma tarefa sintática.

φφφ265536no sentido de que você pode determinar as linhas anteriores da linha atual na prova e na regra. Uma exceção importante a isso é a regra de corte. É importante porque, embora não precisemos da regra de corte para provar as declarações, ela pode reduzir consideravelmente o tamanho da prova mais curta. No entanto, a regra de corte não é determinística: há uma fórmula de corte que precisamos adivinhar. Você pode pensar em regra de corte como provar lemas e usá-los. A fórmula de corte é como um lema. Mas que lema devemos provar que nos ajudará? Essa é a parte difícil. Muitas vezes, um resultado é comprovado em matemática ao encontrar um bom lema. Além disso, quando você usa resultados previamente comprovados, está essencialmente usando a regra de corte. Outro componente importante na demonstração de declarações são as definições. Muitas vezes, definimos um novo conceito, depois provamos afirmações sobre ele, e finalmente aplicá-lo em nosso caso particular. O uso de definições reduz o tamanho das fórmulas (tente expandir alguma fórmula matemática para a linguagem teórica dos conjuntos puros, expandindo as definições para ter uma idéia de quão importantes são as definições). Novamente, quais novas definições devemos usar? Nós não sabemos. Isso me leva ao terceiro significado de uma afirmação ser difícil de provar. Pode ser difícil provar uma afirmação porque você precisa de axiomas fortes. Tome por exemplo Pode ser difícil provar uma afirmação porque você precisa de axiomas fortes. Tome por exemplo Pode ser difícil provar uma afirmação porque você precisa de axiomas fortes. Tome por exemploCH . Não pode ser comprovado no ZFC nem refutado no ZFC. Este é um caso extremo, mas isso acontece com mais frequência do que você pensa. Por exemplo, precisamos de grandes axiomas cardinais (para poder trabalhar nos universos de Grothendieck ) para provar a FLT ou podemos prová-lo em uma teoria muito mais fraca como a PA ? Esse é outro conceito sobre a dificuldade de provar declarações.


Quando você fala sobre definir a pergunta "mais religiosamente", presumo que você queira dizer "mais rigorosamente"? :-)
David Richerby

2
@ David, sim, a correção automática às vezes faz isso. :)
Kaveh

4

Penso que a questão pode ser reduzida a: é mais fácil provar que algo existe ou provar que algo não existe.

O argumento a favor de provar que algo existe é que é fácil construir coisas que possam satisfazer os requisitos e também é fácil verificar se eles realmente os satisfazem.

Em alguns casos, isso é verdade: se você deseja encontrar a raiz de um polinômio, é fácil construir números e é fácil verificar se são raízes.

O problema, é claro, é que você tem que ter sorte. Você pode reduzir o espaço de pesquisa, por exemplo, provando que ele deve ser um múltiplo de 5 ou entre 1 e 10; mas, a menos que você o limite a um conjunto finito de números (nesse caso, você realmente não está usando o método "adivinhar e validar"), você não tem um método para resolver o problema: você só tem um método que, assumindo você é extremamente sortudo, pode gerar uma solução.

Mas se você quiser isso, é igualmente fácil provar que algo não existe! Gere textos que possam ser possíveis soluções e verifique se realmente são.

Portanto, ter um método que possa fornecer a solução por pura sorte não significa que provar que algo existe é mais fácil.

Agora, é geralmente mais fácil provar que algo existe com algum outro método? Depende do problema real, porque provar que algo não existe seria reduzido a provar que existe uma prova de que ele não existe. E temo que não possamos medir isso, pois nunca houve algo que se provasse existir e que não existe, para que possamos (tentar) medir a dificuldade da prova.


1
Se esse "algo" existe, é mais fácil provar que existe (trivialmente, você não pode provar que não existe; isso não significa que não seja diabolicamente difícil encontrar a prova). O mesmo raciocínio ao contrário. Como dizem os comentários, a pergunta em si não faz sentido.
precisa saber é

@vonbrand Não estou dizendo for any X: is it easier to prove that X exists or to prove that X does not exist, estou dizendo que, por exemplo, for any X,Y: is it easier to prove that X exists or to prove that Y does not exist.se E o conjunto de provas que provam sentenças da forma 'X existe' e NE o conjunto de provas que provam sentenças da forma 'Y não existe', e d ( P) a dificuldade da prova, é verdade que d (X) <d (Y) onde X em E e Y em NE.
Thanos Tintinidis

d(X)XXX

@vonbrand yes; além disso, estou argumentando que você não pode usar o método do OP (continue gerando soluções em potencial até encontrar uma) como um argumento para sugerir que provar a existência é mais fácil do que provar a inexistência, pois você pode transformar a declaração S1 da inexistência a uma declaração S2 da existência da prova da declaração S1. Embora eu estou começando a duvidar do valor deste
Thanos Tintinidis


-2

Eu acredito que é impossível provar P <> NP, porque você teria que descartar todos os algoritmos que poderiam provar P = NP. Pode haver um número infinito desses possíveis. Não há como contestar o infinito, portanto não é possível. Por outro lado, basta um algoritmo único para provar P = NP, se for o caso. Portanto, P = NP, que alguém provará, ou nunca saberemos.


Bem-vindo à Ciência da Computação ! Você acredita ou pode provar que não é possível? Penso que a resposta de Yakk lança alguma luz sobre o assunto.
Evil

2
"Não há como refutar o infinito". As pessoas descartam infinitamente muitas possibilidades o tempo todo em matemática; não precisamos necessariamente verificar cada um manualmente para saber se nenhum deles funciona. Seu "argumento" implicaria que nunca podemos separar classes de complexidade, o que não faz sentido.
Noah Schweber 16/10
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.