Erros duradouros na ciência da computação

26

Esta é minha primeira pergunta na pilha de histórias, portanto, não seja muito rude se eu estiver violando a etiqueta de alguma forma)

Como sabemos, em matemática, mesmo matemáticos, astros e gênios famosos estão cometendo erros sérios de tempos em tempos. Por exemplo, o teorema de quatro cores e o teorema de Fermat nos fornecem casos dramáticos de como até as mentes mais brilhantes podem ser iludidas. Pode levar anos até para provar a incorreção de algumas provas falsas.

Minha pergunta é: você pode fornecer alguns exemplos notáveis ​​de tais erros na ciência da computação? Não sei, algo como "Dr. X provou em 1972 que é impossível fazer Y em menos de O (log n) tempo, mas em 1995 descobriu-se que ele estava realmente errado".

shabunc
fonte
13
Não é um exemplo notável: o algoritmo de correspondência bipartida on-line de Karp, Vazirani e Vazirani (1990) cometeu um erro em um lema descoberto cerca de 15 anos depois.
Jagadish
2
@shabunc, esse tipo de pergunta está pedindo uma lista de respostas e, portanto, a tag wiki da comunidade é apropriada.
Suresh Venkat
4
Além disso, esta pergunta está relacionada: cstheory.stackexchange.com/questions/3616/…
Suresh Venkat
2
Se perguntar sobre erros não for educado, sua própria pergunta não é educada e evitar a palavra "erros" no título não é uma solução.
Tsuyoshi Ito 16/08
3
Postagem relevante no blog Math Is Like The Stock Market .
Pratik Deoghare 18/08/11

Respostas:

28

Um exemplo infame da geometria computacional é a prova incorreta do Teorema da Zona para arranjos de hiperplanos publicados por Edelsbrunner, O'Rourke e Seidel [FOCS 1983, SICOMP 1986]. A prova também aparece no livro de geometria computacional de Edelsbrunner, de 1987.

Teorema da Zona: Em qualquer arranjo de hiperplanos em R d , a complexidade total de todas as células que cruzam qualquer hiperplano é O ( n d - 1 ) .nRdO(nd1)

A Zona Teorema é um passo chave na prova de que o algoritmo recursivo periódica padrão para construir um arranjo de hiperplanos em R d é executado em S ( n d ) tempo.nRdO(nd)

Em 1990, Raimund Seidel descobriu que a prova publicada estava incorreta, depois de ser desafiada em um ponto técnico sutil por um aluno em sua aula de geometria computacional. Enquanto isso, uma enorme literatura sobre busca de hiperplano / meio espaço / simplex / semialgebraica havia sido desenvolvida, todas baseadas no tempo de construção de para arranjos, que por sua vez se baseavam no Teorema da Zona. (Nenhum desses autores notou o bug. Raimund ensinou a "prova" publicada em detalhes por vários anos antes de ser desafiado.)O(nd)

Felizmente, Edelsbrunner, Seidel e Sharir encontraram quase imediatamente uma prova correta (e muito mais simples!) Do Teorema da Zona [Novos Resultados e Novas Tendências em CS 1991, SICOMP 1993].

Jeffε
fonte
@ Jɛ ff E, este é um ótimo exemplo, obrigado!
shabunc
4
Você sabe quem era o aluno inteligente?
Suresh Venkat
4
Não eu não. Raimund me contou a história> 15 anos atrás, quando eu estava em Berkeley; se ele me disse o nome do aluno, há muito que esqueci. (E provavelmente Raimund também.) O artigo do SICOMP 1993 também não menciona o aluno.
Jeffε
10

O protocolo de criptografia de chave pública Needham-Shroeder, um protocolo de 5 linhas, mostrou-se inseguro 17 anos após a sua publicação. Este é o exemplo favorito das pessoas da Verificação para fazer uma análise formal dos protocolos de criptografia.

Loïck
fonte
8
A menos que o documento original forneça uma prova errada de que o protocolo é seguro, isso não conta como um erro. Mostrar que os sistemas de criptografia propostos são inseguros é de fato uma parte da pesquisa em criptografia.
MCH
1
De acordo com o MCH, os protocolos de criptografia são uma história diferente e sutil.
shabunc
6
Existem dois conceitos diferentes neste protocolo: o esquema de criptografia e o protocolo de comunicação. O autor estava ciente de que poderia haver ataques ao esquema de criptografia, mas discutiram a segurança do protocolo de comunicação e concluíram que é seguro: "Assumimos que um invasor pode interpor um computador em todos os caminhos de comunicação e, portanto, pode alterar ou copiar partes de mensagens, reproduzir mensagens ou emitir material falso. Embora possa parecer uma visão extrema, é a única segura ao projetar protocolos de autenticação "E o ataque é do tipo man-in-the-middle.
Loïck
9

Dick Lipton publicou um novo post sobre a não monotonicidade do conhecimento matemático e nele documenta exemplos de afirmações feitas que se revelaram falsas ou, pelo menos, necessárias, de correção.

Suresh Venkat
fonte
8

Houve conjecturas que se mostraram falsas (por exemplo, incorporação de distorção constante de métricas de tipo negativo refutadas por Khot e Vishnoi), mas não há nada de errado em apresentar uma falsa conjectura, pois, afinal, é uma conjectura.

ϵϵkk

PNP

MCH
fonte
+1 para Feynman. Você pode fornecer mais detalhes sobre Feynman e P vs NP?
Becko
2
Pergunte a Scott Aaronson, ele conhece bem essas coisas.
MCH
2
Assista a essa conversa do TED . Mas pensar que algo é óbvio não prova nada e é inútil.
Pratik Deoghare 16/08
6
@MCH: Feynman acreditou nessas coisas ou não, não acho que ele seja um exemplo relevante. Primeiro, acredita-se que ambas as afirmações são verdadeiras e, em segundo lugar, ele nunca afirmou ter provado essas coisas.
Joe Fitzsimons
2
7

"Fiquei chocado ao saber que o programa de pesquisa binária que a Bentley se mostrou correto e posteriormente testado no Capítulo 5 do Programming Pearls contém um bug. Depois que eu lhe disser o que é, você entenderá por que escapou da detecção por duas décadas. Estou usando Bentley, deixe-me contar como descobri o bug: a versão da pesquisa binária que escrevi para o JDK continha o mesmo bug.Também foi relatado à Sun recentemente quando interrompeu o programa de alguém, depois de esperar por nove anos mais ou menos. "

-

Joshua Bloch "Extra, Extra - Leia tudo sobre isso: quase todas as pesquisas e mergesorts binários estão quebrados" 2006

David Cary
fonte
7
Este não é realmente um erro no algoritmo, mas um erro na implementação. O algoritmo está correto; o problema é que o tipo "int" não pode realmente lidar com números inteiros arbitrários.
Aaron Roth