컴퓨터 과학의 오래 지속되는 오류


26

이것은 cstheory 스택에 대한 첫 번째 질문이므로 에티켓을 어길 경우 무례하지 마십시오.)

우리가 알고 있듯이, 수학에서도 유명한 수학자, 수퍼 스타 및 천재들도 때때로 심각한 실수를하고 있습니다. 예를 들어, 4 색 정리와 페르마 정리는 가장 밝은 마음을 어떻게 표현할 수 있는지에 대한 극적인 사례를 제공합니다. 일부 잘못된 증거의 부정확성을 입증하는 데 몇 년이 걸릴 수도 있습니다.

내 질문은-컴퓨터 과학에서 그러한 실수의 탁월한 예를 제공 할 수 있습니까? "Dr. X 박사는 1972 년에 O (log n) 미만의 시간에 Y를 수행하는 것이 불가능하다는 것을 증명했지만 1995 년에는 실제로 그가 틀렸다는 것을 알았습니다."


13
Karp, Vazirani & Vazirani (1990)에 의한 온라인 이분법 매칭 알고리즘은 15 년 후 발견 된 하나의 정리로 잘못되었다.
Jagadish

2
@shabunc 이러한 종류의 질문은 답변 목록을 요구하므로 community-wiki 태그가 적합합니다.
Suresh Venkat

4
또한,이 질문과 관련이 있습니다 : cstheory.stackexchange.com/questions/3616/…
Suresh Venkat

2
오류에 대한 질문이 무의미한 경우 질문 자체가 무의미하며 제목에서 "오류"라는 단어를 피하는 것은 해결책이 아닙니다.
이토 쓰요시

답변:


28

계산 기하학에서 악명 높은 예는 Edelsbrunner, O'Rourke 및 Seidel이 발표 한 초평면 배열에 대한 Zone 정리의 잘못된 증거입니다 [FOCS 1983, SICOMP 1986]. 이 증거는 Edelsbrunner의 1987 년 계산 기하학 교과서에도 나와 있습니다.

영역 정리 : 에서 초평면 배열 에서 임의의 초평면을 교차하는 모든 셀의 총 복잡도는 입니다.nRdO(nd1)

Zone Theorem은 에서 초평면 배열을 구축하기위한 표준 재귀 증분 알고리즘이 시간에 실행 된다는 증거의 핵심 단계입니다 .nRdO(nd)

1990 년 Raimund Seidel은 학생이 계산 기하학 수업에서 미묘한 기술적 요점에 도전 한 후 출판 된 증거가 잘못되었음을 발견했습니다. 한편 초평면 / 반 공간 / 단면 / 혈장 대장 범위 탐색에 관한 거대한 문헌이 개발되었으며,이 모든 것은 배열을위한 구성 시간에 의존했으며, 이는 결국 존 정리에 의존했다. (그들 중 어느 누구도 버그를 발견하지 못했다. 라이 문 트는 도전하기 전에 몇 년 동안 출판 된 "증거"를 자세히 가르쳤다.)O(nd)

다행히 Edelsbrunner는, 델, 그리고 Sharir 거의 즉시 정확한 (발견 훨씬 [CS 1991 SICOMP 1993 년에 새로운 결과 및 새로운 동향] 존 정리의 간단한!) 증거를.


@ Jɛ ff E, 이것은 훌륭한 예입니다, 감사합니다!
shabunc

4
당신은 영리한 학생이 누구인지 알고 있습니까?
Suresh Venkat

4
아뇨 라이먼 드는 15 년 전 버클리에있을 때 그 이야기를 들려 주었다. 그가 학생의 이름을 말해 주면 오랫동안 잊어 버렸습니다. (아마도 라이 문트도 마찬가지입니다.) SICOMP 1993 논문에는 학생에 대한 언급이 없습니다.
Jeffε

10

5 줄 프로토콜 인 Needham-Shroeder 공개 키 암호화 프로토콜은 게시 후 17 년 동안 안전하지 않은 것으로 나타났습니다. 이것은 암호화 프로토콜의 공식 분석을 수행하는 검증 사람들이 가장 좋아하는 예입니다.


8
원본 용지가 프로토콜이 안전하다는 잘못된 증거를 제시하지 않는 한 오류로 간주되지 않습니다. 제안 된 암호 시스템이 안전하지 않다는 것을 보여주는 것은 실제로 암호 연구의 일부입니다.
MCH

1
MCH에 동의하면 암호화 프로토콜은 미묘한 이야기입니다.
shabunc

6
이 프로토콜에는 암호화 체계와 통신 프로토콜이라는 두 가지 개념이 있습니다. 저자는 암호화 체계에 대한 공격이있을 수 있음을 알고 있었지만 통신 프로토콜의 보안에 대해 논의하고 안전하다고 결론을 내 렸습니다. "우리는 침입자가 모든 통신 경로에 컴퓨터를 개입 시켜서 변경하거나 복사 할 수 있다고 가정합니다. 메시지의 일부, 재생 메시지 또는 잘못된 자료를 전송해야합니다. 이는 극단적 인 관점으로 보일 수 있지만 인증 프로토콜을 설계 할 때 유일하게 안전한 방법입니다. "공격은 중간자 (man-in-the-middle) 유형입니다.
Loïck


8

거짓으로 판명 된 추측이 있었지만 (예를 들어, Khot과 Vishnoi에 의해 반증 된 부정적 유형 메트릭의 지속적인 왜곡 포함) 추측이어서 거짓 추측을하는 데 아무런 문제가 없습니다.

오래 지속되지 않은 실제 혼란의 예는 병렬 반복입니다. 이것은 초기 오류 확률과 상호 작용 프로토콜 것으로 생각되었다 오류가 감소 ε K 에 대한 K의 병렬 반복. 이 주장은 허위로 판명되었으며, 실제로 병렬 반복을 더 잘 이해하려는 시도는 많은 아름다운 수학의 문을 여는 것으로 밝혀졌습니다.ϵϵ케이케이

또한 Feynman은 (또는 아마도 양자 역학은 분명히 고전적인 컴퓨터로는 효율적으로 시뮬레이션 할 수 없음) 라고 생각했다고 믿었습니다 . 그러나 그는 이론적 인 컴퓨터 과학자가 아니었고이 이야기의 정확성을 아무도 확신하지 못했습니다.


Feynman의 경우 +1 Feynman 및 P vs NP에 대한 자세한 정보를 제공 할 수 있습니까?
becko

2
Scott Aaronson에게 물어보십시오. 그는 이것을 잘 알고 있습니다.
MCH

2
시청 이 TED의 이야기를 . 그러나 어떤 것이 명백하다고 생각하는 것은 아무 것도 증명하지 않으며 아무 소용이 없습니다.
Pratik Deoghare

6
@MCH : Feynman이 이런 것들을 믿었 든 말든, 나는 그가 적절한 예라고 생각하지 않습니다. 첫째,이 두 진술은 모두 사실이라고 널리 알려져 있으며, 둘째로 그는 이러한 것들을 증명하지 않았다고 주장합니다.
Joe Fitzsimons

2
참된. 우리 대부분은 분명히 P NP 라고 생각합니다 . 우리는 단지 그것을 증명할 수 없습니다!
MCH

7

"Bentley가 프로그래밍 진주 5 장에서 올바르게 증명하고 테스트 한 바이너리 검색 프로그램에 버그가 포함되어 있다는 사실에 놀랐습니다. 그것이 무엇인지 말해 주면 20 년 동안 탐지에서 벗어날 수 있었던 이유를 알게 될 것입니다. Bentley를 선택하고 버그를 어떻게 발견했는지 알려 드리겠습니다. JDK 용으로 작성한 바이너리 검색 버전에 동일한 버그가 포함되어 있습니다. 최근에 누군가의 프로그램을 중단했을 때 Sun에보고되었습니다. 9 년 정도 됐습니다. "

-

Joshua Bloch "추가, 추가-모든 내용 읽기 : 거의 모든 이진 검색 및 Mergesort가 손상되었습니다" 2006


7
이것은 실제로 알고리즘의 버그가 아니라 구현의 버그입니다. 알고리즘이 정확합니다. 문제는 "int"유형이 실제로 임의의 정수를 처리 할 수 ​​없다는 것입니다.
Aaron Roth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.