Usando resultados negativos para provar resultados positivos na teoria da computabilidade

8

Muitos resultados em criptografia dependem de resultados / conjecturas de impossibilidade na teoria da complexidade. Por exemplo, acredita-se que a criptografia de chave pública usando RSA é possível devido à conjectura sobre a inviabilidade do fatoramento (e os problemas de localização modular da raiz).

Minha pergunta é :

temos resultados semelhantes na teoria da computabilidade? Existem construções positivas interessantes usando resultados de impossibilidade negativos?

Por exemplo, a indecidibilidade do problema de parada nos permite executar tarefas que não poderíamos realizar se o problema de parada fosse decidível?

Kaveh
fonte
1
Dois principais usos dos resultados da negatividade na teoria da complexidade são (1) criptografia e (2) derandomização. Nenhum deles se aplica à estrutura de computabilidade. Decifrar um sistema de criptografia computável é inevitavelmente uma tarefa computável, e qualquer função computável em uma máquina de Turing aleatória também é computável em uma máquina de Turing determinística (de maneira construtiva).
David Harris
1
isso parece ser uma questão de redação. "a criptografia de chave pública usando o RSA é possível" é apenas a maneira meio cheia de dizer "quebrar o RSA no tempo poli é impossível". Não vejo como o RSA é uma construção positiva ... é apenas uma construção, e sua prova de segurança é um resultado negativo sobre possíveis algoritmos adversos.
Artem Kaznatcheev
@ Artigo, o ponto aqui é que estamos construindo um protocolo que pode ser usado e a condição de que o protocolo seja útil é um resultado negativo, pois não há adversários que possam quebrá-lo. Intuitivamente, o que quero dizer com resultado negativo é um teorema que diz que algo não pode ser feito. Por um resultado positivo, quero dizer uma construção que permite realizar alguma tarefa (por exemplo, comunicação segura). Um resultado positivo pode ter um resultado negativo dentro dele. Pensarei em expressar isso de maneira mais formal.
Kaveh
@ David, sim, estou ciente desses dois. Você conhece algum outro uso conhecido dos resultados negativos para resultados positivos na teoria da complexidade / criptografia?
Kaveh
5
Pessoalmente, também acho que é uma questão de redação. Por exemplo, você pode usar o teorema de Rice e dizer "para cada antivírus, você pode criar um vírus não reconhecido". Em todo teorema da incompletude, você pode transformá-lo em "você pode construir um contra-exemplo".
Ludovic Patey

Respostas:

7

Em certo sentido, é disso que trata a teoria da parametridade.

A abstração de dados é como garantimos que nenhum cliente de um módulo possa acessar os elementos de um módulo, exceto de acordo com a interface exposta pelo módulo. Contamos com isso para garantir que os invariantes internos das estruturas de dados não possam ser quebrados pelos clientes de um módulo - por exemplo, se você acessar uma árvore balanceada apenas pela interface publicada, segue-se que a árvore sempre será balanceada.

Portanto, usamos uma propriedade negativa - que nenhum cliente possível pode quebrar o limite de abstração - para deduzir um positivo - que a invariante de representação de dados sempre mantém.

Neel Krishnaswami
fonte
Os dados são acessados através de um oráculo adequado, mas isso não implica necessariamente que é uncomputable para acessá-lo diretamente
David Harris
1
A abstração de dados é essencialmente um resultado definível : diz que nenhum programa na linguagem de programação pode quebrar os limites da abstração. Se você usa um mecanismo extra-lingüístico (por exemplo, você aciona seu depurador), é claro que pode ver quais campos privados essa tabela de hash possui.
Neel Krishnaswami
6

A complexidade de Kolmogorov pode se enquadrar nessa categoria.

Pode-se mostrar que existem certas cordas que não podem ser comprimidas por nenhuma máquina de Turing. Essas cadeias se comportam "genericamente" para que você possa estudar as propriedades aleatórias de determinadas informações e tarefas computacionais, estudando o comportamento em relação a uma cadeia incompressível (não aleatória).

David Harris
fonte
Obrigado, alguém também sugeriu isso em uma discussão offline. (Não estou completamente convencido, já que realmente não usamos seqüências computacionais aleatórias para executar tarefas do mundo real, ela tem um sabor mais existencial do que a construção de algo. Provavelmente, devo pensar um pouco mais sobre o que exatamente quero dizer com resultado positivo .. ps: a minha motivação original para dar aos alunos de graduação aprender teoria da computabilidade um exemplo de utilidade de resultados negativos na construção de coisas para executar tarefas do mundo real)
Kaveh
Enquanto não se constrói (e não pode) construir seqüências incompressíveis na prática, é muito comum construir uma sequência aleatoriamente. Então, com alta probabilidade, será incompressível.
David Harris