Errori di lunga durata nell'informatica


26

Questa è la mia prima domanda nello stack cstheory, quindi non essere troppo scortese se in qualche modo sto violando l'etichetta)

Come sappiamo, in matematica anche famosi matematici, superstar e geni fanno di volta in volta gravi errori. Ad esempio, sia il teorema a 4 colori che il teorema di Fermat ci forniscono casi drammatici di come anche le menti più brillanti possano essere illuse. Possono anche essere necessari anni per dimostrare l'erroneità di alcune prove false.

La mia domanda è: puoi fornire alcuni esempi eccezionali di tali errori nell'informatica? Non lo so, qualcosa come "Il Dr. X ha dimostrato nel 1972 che è impossibile fare Y in meno di O (log n) tempo, ma nel 1995 si è scoperto che in realtà si sbagliava".


13
Non un esempio eccezionale: l'algoritmo per la corrispondenza bipartita online di Karp, Vazirani e Vazirani (1990) ha avuto un errore in un lemma scoperto circa 15 anni dopo.
Jagadish,

2
@shabunc questi tipi di domande richiedono un elenco di risposte, quindi il tag community-wiki è appropriato per questo.
Suresh Venkat,

4
inoltre, questa domanda è collegata: cstheory.stackexchange.com/questions/3616/…
Suresh Venkat,

2
Se chiedere errori è scortese, la domanda stessa è scortese ed evitare la parola "errori" nel titolo non è una soluzione.
Tsuyoshi Ito,

Risposte:


28

Un famigerato esempio di geometria computazionale è la dimostrazione errata del teorema di zona per gli arrangiamenti di hyperplane pubblicati da Edelsbrunner, O'Rourke e Seidel [FOCS 1983, SICOMP 1986]. La prova compare anche nel libro di testo di geometria computazionale di Edelsbrunner del 1987.

Teorema di zona: in qualsiasi disposizione di iperpiani in R d , la complessità totale di tutte le cellule che intersecano un qualsiasi iperpiano è O ( n d - 1 ) .nRdO(nd1)

Il Teorema di Zona è un passo fondamentale nella dimostrazione che l'algoritmo incrementale ricorsivo standard per costruire una disposizione di iperpiani in R d corre nel tempo O ( n d ) .nRdO(nd)

Nel 1990, Raimund Seidel scoprì che la prova pubblicata era errata, dopo essere stata sfidata su un sottile punto tecnico da uno studente nella sua classe di geometria computazionale. Nel frattempo, era stata sviluppata un'enorme letteratura sulla ricerca di distanze hyperplane / halfspace / simplex / semialgebraic, che si basava tutto sul tempo di costruzione per le disposizioni, che a sua volta si basava sul teorema di zona. (Nessuno di quegli autori ha notato il bug. Raimund aveva insegnato dettagliatamente la "prova" pubblicata per diversi anni prima di essere contestato.)O(nd)

Fortunatamente, Edelsbrunner, Seidel e Sharir hanno quasi immediatamente trovato una prova corretta (e molto più semplice!) Del Teorema di Zona [Nuovi risultati e nuove tendenze in CS 1991, SICOMP 1993].


@ Jɛ ff E, questo è un ottimo esempio, grazie!
Shabunc,

4
Sai per caso chi era lo studente intelligente?
Suresh Venkat,

4
No, non lo so. Raimund mi ha raccontato la storia> 15 anni fa, quando ero a Berkeley; se mi ha detto il nome dello studente, ho da tempo dimenticato. (E probabilmente anche Raimund.) Il giornale SICOMP del 1993 non menziona nemmeno lo studente.
Jeffε

10

Il protocollo di crittografia a chiave pubblica Needham-Shroeder, un protocollo a 5 righe, è stato mostrato insicuro 17 anni dopo la sua pubblicazione. Questo è l'esempio preferito delle persone di verifica per fare analisi formale dei protocolli crittografici.


8
A meno che il documento originale non fornisca una prova errata della sicurezza del protocollo, ciò non viene considerato un errore. Mostrare che i sistemi crittografici proposti sono insicuri è in realtà una parte della ricerca in criptovaluta.
MCH

1
d'accordo con MCH, i protocolli crittografici sono una storia leggermente diversa.
shabunc,

6
Esistono due concetti diversi in questo protocollo: lo schema di crittografia e il protocollo di comunicazione. L'autore era consapevole che potevano esserci attacchi allo schema di crittografia, ma hanno discusso della sicurezza del protocollo di comunicazione e hanno concluso che è sicuro: "Partiamo dal presupposto che un intruso può interporre un computer in tutti i percorsi di comunicazione, e quindi può alterare o copiare parti di messaggi, riprodurre messaggi o emettere materiale falso. Anche se questo può sembrare una visione estrema, è l'unico sicuro quando si progettano protocolli di autenticazione "E l'attacco è di tipo man-in-the-middle.
Loïck,


8

Ci sono state congetture che si sono rivelate false (ad esempio, incorporamento a distorsione costante di metriche di tipo negativo smentite da Khot e Vishnoi), ma non c'è nulla di sbagliato nel proporre una falsa congettura poiché dopo tutto è una congettura.

ϵϵkk

PNP


+1 per Feynman. Potete fornire maggiori dettagli su Feynman e P vs NP?
becko,

2
Chiedi a Scott Aaronson, conosce bene queste cose.
MCH

2
Guarda questo discorso su TED . Ma pensare che qualcosa sia ovvio non dimostra nulla e non serve a niente.
Pratik Deoghare,

6
@MCH: Sia che Feynman abbia creduto a queste cose o meno, non credo che sia un esempio rilevante. In primo luogo, si ritiene che entrambe queste affermazioni siano vere, e in secondo luogo non ha mai affermato di aver dimostrato queste cose.
Joe Fitzsimons,

2

7

"Sono rimasto scioccato nell'apprendere che il programma di ricerca binaria che Bentley ha dimostrato corretto e successivamente testato nel Capitolo 5 di Programmazione delle perle contiene un bug. Una volta che ti dico di cosa si tratta, capirai perché è sfuggito al rilevamento per due decenni. Sto prendendo in considerazione Bentley, lascia che ti dica come ho scoperto il bug: la versione della ricerca binaria che ho scritto per il JDK conteneva lo stesso bug. Recentemente è stato segnalato a Sun quando ha rotto il programma di qualcuno, dopo essere rimasto in attesa di circa nove anni ".

-

Joshua Bloch "Extra, Extra - Leggi tutto su di esso: quasi tutte le ricerche binarie e le fusioni sono interrotte" 2006


7
Questo non è in realtà un bug nell'algoritmo, ma un bug nell'implementazione. L'algoritmo è corretto; il problema è che il tipo "int" non può effettivamente gestire numeri interi arbitrari.
Aaron Roth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.