Długotrwałe błędy w informatyce

26

To jest moje pierwsze pytanie na stosie cstheory, więc nie bądź zbyt niegrzeczny, jeśli w jakiś sposób naruszam etykietę)

Jak wiemy, w matematyce nawet znani matematycy, supergwiazdy i geniusze od czasu do czasu popełniają poważne błędy. Na przykład, zarówno twierdzenie 4-kolorowe, jak i twierdzenie Fermata dostarczają nam dramatycznych przypadków, w których nawet najmądrzejsze umysły mogą zostać zwiedzione. Potwierdzenie nieprawidłowości niektórych dowodów fałszowania może zająć nawet lata.

Moje pytanie brzmi - czy możesz podać wybitne przykłady takich błędów w informatyce? Nie wiem, coś w rodzaju „Dr X udowodnił w 1972 r., Że niemożliwe jest wykonanie Y w czasie krótszym niż O (log n), ale w 1995 r. Okazało się, że tak naprawdę się mylił”.

shabunc
źródło
13
Nie jest to wybitny przykład: algorytm dopasowywania dwustronnego on-line przez Karpa, Vazirani i Vazirani (1990) miał błąd w jednym lemacie odkrytym około 15 lat później.
Jagadish,
2
@shabunc tego rodzaju pytania wymagają listy odpowiedzi, więc tag społeczności-wiki jest do tego odpowiedni.
Suresh Venkat
4
również to pytanie jest powiązane: cstheory.stackexchange.com/questions/3616/…
Suresh Venkat
2
Jeśli pytanie o błędy jest niegrzeczne, samo pytanie jest niegrzeczne, a unikanie słowa „błędy” w tytule nie jest rozwiązaniem.
Tsuyoshi Ito
3
Odpowiedni wpis na blogu Math Is Like The Stock Market .
Pratik Deoghare

Odpowiedzi:

28

Niesławnym przykładem geometrii obliczeniowej jest niepoprawny dowód twierdzenia o strefie dla układów hiperpłaszczyzn opublikowanego przez Edelsbrunner, O'Rourke i Seidel [FOCS 1983, SICOMP 1986]. Dowód pojawia się również w podręczniku geometrii obliczeniowej Edelsbrunnera z 1987 roku.

Twierdzenie o strefie: w dowolnym układzie hiperpłaszczyzn w całkowita złożoność wszystkich komórek przecinających jakąkolwiek hiperpłaszczyznę wynosi .nRdO(nd1)

Twierdzenie o strefie jest kluczowym krokiem w dowodzie, że standardowy rekurencyjny algorytm inkrementalny do budowy układu hiperpłaszczyzn w działa w czasie .nRdO(nd)

W 1990 roku Raimund Seidel odkrył, że opublikowany dowód jest niepoprawny, po tym, jak uczeń podważył go w swojej subtelnej kwestii technicznej w swojej klasie geometrii obliczeniowej. W międzyczasie opracowano ogromną literaturę dotyczącą przeszukiwania hiperpłaszczyzny / półprzestrzeni / simpleksu / semialgebraicznego, z których wszystkie opierały się na czasie budowy dla układów, który z kolei opierał się na twierdzeniu o strefie. (Żaden z tych autorów nie zauważył błędu. Raimund nauczył szczegółowo opublikowanego „dowodu” przez kilka lat, zanim został zakwestionowany.)O(nd)

Na szczęście Edelsbrunner, Seidel i Sharir prawie natychmiast znaleźli poprawny (i znacznie prostszy!) Dowód twierdzenia o strefie [Nowe wyniki i nowe trendy w CS 1991, SICOMP 1993].

Jeffε
źródło
@ Jɛ ff E, ten jest świetnym przykładem, dziękuję!
shabunc
4
Czy wiesz, kim był bystry uczeń?
Suresh Venkat
4
Nie ja nie. Raimund opowiedział mi tę historię> 15 lat temu, kiedy byłem w Berkeley; jeśli powiedział mi imię studenta, dawno już zapomniałem. (I prawdopodobnie również Raimund.) Artykuł SICOMP 1993 również nie wspomina o uczniu.
Jeffε,
10

Protokół kryptografii klucza publicznego Needham-Shroeder, 5-liniowy, okazał się niepewny 17 lat po jego opublikowaniu. Jest to ulubiony przykład osób weryfikujących przeprowadzanie formalnej analizy protokołów kryptograficznych.

Loïck
źródło
8
O ile oryginalny dokument nie przedstawi złego dowodu, że protokół jest bezpieczny, nie jest to traktowane jako błąd. Wykazanie, że proponowane kryptosystemy są niepewne, jest w rzeczywistości częścią badań w dziedzinie kryptografii.
MCH
1
zgadzają się z MCH, protokoły kryptograficzne są subtelną inną historią.
shabunc
6
W tym protokole istnieją dwie różne koncepcje: schemat szyfrowania i protokół komunikacyjny. Autor zdawał sobie sprawę, że mogą istnieć ataki na schemat szyfrowania, ale omówił bezpieczeństwo protokołu komunikacyjnego i stwierdził, że jest bezpieczny: „Zakładamy, że intruz może przenikać do komputera na wszystkich ścieżkach komunikacyjnych, a tym samym może zmieniać lub kopiować części wiadomości, odtwarzają wiadomości lub emitują fałszywe materiały. Choć może się to wydawać ekstremalne, jest to jedyne bezpieczne rozwiązanie przy projektowaniu protokołów uwierzytelniania. ”Atak jest typu man-in-the-the-middle.
Loïck,
9

Dick Lipton opublikował nowy post na temat niemonotoniczności wiedzy matematycznej, w którym dokumentuje przykłady twierdzeń, które okazały się fałszywe lub przynajmniej wymagały naprawy.

Suresh Venkat
źródło
8

Istnieją przypuszczenia, które okazały się fałszywe (np. Osadzanie stałego zniekształcenia metryk typu negatywnego obalonego przez Khota i Vishnoi), ale nie ma nic złego w przedstawianiu fałszywej domniemania, ponieważ w końcu jest to domniemanie.

Przykładem zamieszania, które nie trwało długo, jest równoległe powtarzanie. Początkowo sądzono, że w przypadku protokołu interaktywnego z prawdopodobieństwem błędu , błąd zmniejsza się do dla równoległych powtórzeń. Twierdzenie to okazało się fałszywe, a w rzeczywistości próby lepszego zrozumienia równoległych powtórzeń okazały się otwarte na wiele pięknych matematyki.ϵ k kϵϵkk

Uważa się również, że Feynman uważał za oczywiste, że (a może mechanika kwantowa oczywiście nie może być skutecznie symulowana przez klasyczne komputery). Ale nie był on teoretycznym informatykiem ani nikt nie jest pewien dokładności tej historii.PNP

MCH
źródło
+1 dla Feynmana. Czy możesz podać więcej szczegółów na temat Feynman i P kontra NP?
becko,
2
Zapytaj Scotta Aaronsona, on dobrze o tym wie.
MCH
2
Obejrzyj tę rozmowę TED . Ale myślenie, że coś jest oczywiste, niczego nie dowodzi i jest bezużyteczne.
Pratik Deoghare
6
@MCH: Bez względu na to, czy Feynman w to wierzył, czy nie, nie wydaje mi się, żeby był to odpowiedni przykład. Po pierwsze, oba te stwierdzenia są powszechnie uważane za prawdziwe, a po drugie nigdy nie twierdził, że udowodnił te rzeczy.
Joe Fitzsimons,
2
Prawdziwe. Większość z nas uważa, że oczywiście P NP. Po prostu nie możemy tego udowodnić!
MCH
7

„Byłem zszokowany, gdy dowiedziałem się, że program do wyszukiwania binarnego, który Bentley okazał się poprawny, a następnie przetestowany w rozdziale 5 Programowania pereł, zawiera błąd. Gdy powiem ci, co to jest, zrozumiesz, dlaczego uniknął wykrycia przez dwie dekady. Wybieram Bentleya, powiem wam, jak odkryłem błąd: wersja wyszukiwania binarnego, którą napisałem dla JDK, zawierała ten sam błąd. Niedawno został zgłoszony firmie Sun, gdy złamał program, po tym, jak czekał na około dziewięciu lat. ”

-

Joshua Bloch „Extra, Extra - Przeczytaj wszystko na ten temat: Prawie wszystkie wyszukiwania binarne i Mergesorts są zepsute” 2006

David Cary
źródło
7
Ten w rzeczywistości nie jest błędem w algorytmie, ale błędem w implementacji. Algorytm jest poprawny; problemem jest to, że typ „int” nie jest w stanie poradzić sobie z dowolnymi liczbami całkowitymi.
Aaron Roth,