정확성 증명이없는 알고리즘의 예


18

우리는 Hoare 논리를 가지고 있습니다. 알고리즘이 옳다는 것이 여전히 가능하지만 그것이 옳다는 증거가없는 이유는 무엇입니까? 알고리즘이 C로 표현되었다고 가정하면 단계적으로 알고리즘이 수행해야 할 작업을 수행한다고 주장 할 수 있습니다.

그래서 내 질문은 :

옳지 만 정확성을 증명할 수없는 알고리즘의 예를 알려주세요.

편집 : 작은 배경은 내가 가고있는 곳을 명확히하는 데 도움이 될 것이라고 생각합니다. Scott Aaronson을 인용하겠습니다.

1970 년대 이래로 P NP는 Zermelo-Fraenkel과 같은 수학에 대한 표준 공리 시스템과 독립적 일 수 있습니다 (즉, 입증 할 수도, 입증 할 수없는)다는 추측이 있었습니다. 분명히, 이것은

  1. NP- 완전 문제에 대한 다항식 시간 알고리즘은 존재하지 않지만 (우리는 적어도 공식적인 시스템에서는 그렇지 않음) 그것을 증명할 수 없습니다.

  2. NP- 완전 문제에 대한 다항식 시간 알고리즘 존재하지만, 그것이 작동한다는 것을 결코 증명할 수 없거나 다항식 시간에 그것이 정지한다는 것을 결코 증명할 수 없습니다.

나는 두 번째 가능성을 언급하고 있습니다. Aaronson은 그것을 자신있게 가능성을 표명 할 수 있기 때문에, 기존 유형 2의 예가 있어야한다고 생각합니다. 이것이 제가이 질문을하는 이유입니다. 그러나 빠르고 명확한 답변이 보이지 않는 것 같습니다.


17
정확성을 증명할 수없는 알고리즘이 정확하다는 것은 무엇을 의미합니까?
David Richerby

14
"정확한 증거는 불가능하다"또는 "아무도 정확하지 않다는 것을 의미합니까?"
gnasher729

12
알고리즘이 정확할 필요는 없습니다 ... 다음과 같이 가정 해 봅시다. (1) 아침에 창턱에 빈 통을 놓습니다. (2) 저녁에 가져 가십시오. (3) 버킷의 물량을 측정하십시오. (4) 다음날 아침에 반복하십시오. 이것은 알고리즘에 대한 설명이지만 "올바른"이라고 할 수있는 어떤 것도 설명하지 않습니다. 흥미롭게도, 세계의 대부분의 프로그래밍 코드는 이러한 특정 방식으로 작성됩니다. 코드가 수행하는 작업의 정확성에만 관심이 없습니다.
wvxvw 2012 년

@wvxvw 나는 혼란스러워한다. 그러면 알고리즘이 "정확하다"는 것은 무엇을 의미 하는가? 그것이 의도 한 것을 행한다면 그것이 맞다는 것을 의미하지 않습니까? 시나리오의 목표가 강우 중 버킷에서 수집 된 평균 물량을 찾는 것이 매일이라면 알고리즘이 정확하지 않습니까?
Abdul

8
@chi 당신은 이해하지 못한다 ... 프로그래머가 코드의 정확성을 신경 쓰지 않는다는 것이 아니라 일부 알고리즘의 경우 "정확도"의 개념은 적용 할 수 없다는 것입니다. .NET WindowsForms 응용 프로그램을 사용하면 효과가 있습니다. "이 레이블을이 위치에 놓고이 단추를 다른 위치에 두십시오."-이 항목에 대한 해석이있을 수 있습니다. 프로그램이 수행하는 작업이 (in) 올바르다 고 판단 될 수 있지만 (예 : 그래픽 디자이너가 "보기 흉하다"고 말함), 그 정도는 아닙니다.
wvxvw

답변:


50

identity 함수에 대한 알고리즘은 다음과 같습니다.

  • 입력 : n
  • 경우 생성 확인 진 스트링 일이 증명 부호화 0 > 1 ZFC하여, 만약 그렇다면, 출력을 N + 1n0>1n+1
  • 그렇지 않으면 출력 n

대부분의 사람들은이 알고리즘이 아이덴티티 함수를 계산한다고 생각하지만, 우리는 모른다. 그리고 우리는 그것을 수학으로 알려진 프레임 워크 ZFC 에서 그것을 증명할 수 없다 .


2
ZFC 에서 번째 이진 문자열이 0 > 1 의 증거를 인코딩n0>1 하는지 알고리즘인지 확인 하시겠습니까?
Dmitry Grigoryev의

23
아니요, 그러나 확인은 알고리즘 적으로 (즉, 튜링 머신에 의해) 구현 될 수 있습니다. 실제로 이것은 증명 시스템에 대한 요구 사항 중 하나입니다. 증명 유효성은 알고리즘 적으로 확인할 수 있습니다.
Yuval Filmus

6
@Puppy ZFC는 증명 합니다. 그러나 일치하지 않으면 0 > 1을 증명할 수도 있습니다 . 거의 모든 사람들이 ZFC는 물론 일관성이 있다고 생각하지만 불완전 성 이론으로 인해 우리는 그것을 확실히 알 수 없습니다. ¬(0>1)0>1
chi

1
@Nathaniel 전혀 아닙니다. 예를 들어 모든 교과서 알고리즘의 정확성을 쉽게 증명할 수 있습니다. 이 알고리즘은 ZFC 자체가 증명할 수없는 ZFC 의 일관성 에 의존한다는 점에서 다릅니다 .
Yuval Filmus

1
@Nathaniel : 원한다면 채팅에서이 토론을 계속 하겠습니다 .
user21820 2019

9

대부분의 알고리즘은 Hoare 로직에서 올바른 것으로 입증되지 않았습니다. 주된 이유는 이러한 정확성 증명이 2017 년 1 월 현재 '단순한'프로그래밍에 비해 몇 배나 비싸기 때문입니다. 자동화를 통해이 비용을 절감하기위한 많은 노력이 진행되고 있지만 이는 어려운 일입니다.

알고리즘에 정확성 증명이 없을 수있는 또 다른 이유는 Yuval과 chi가 언급 한 불완전 성 현상보다 실제로 관련성이 높은 이유는이 사양이 무엇인지 알 수 없기 때문입니다. 이 문제는 두 가지 차원이 있습니다.

  • 고객은 원하는 것을 모릅니다. 이것은 소프트웨어 엔지니어링에서 잘 알려진 문제이며 소프트웨어 엔지니어는이를 해결하기위한 많은 접근 방식을 개발했습니다.

  • 사양이 어렵다. 암호화 알고리즘의 정확성이 좋은 예입니다. 최근 Micali & Goldwasser 만이 암호화 보안의 의미를 지정하여 Turing 상수상했습니다 . 그러나 그 정의는 보안 매개 변수 n 이있는 "이론적 암호화"에 대한 것입니다 (알고있는 한)n자연수 이상의 범위를 가지며, 대수는 다항식 확률 론적 튜링 기계입니다. 내가 아는 한, (잘못되면 바로 잡으십시오) 이론과 실천 사이에 불일치가 있으며 AES와 SHA256과 같은 구체적인 알고리즘은 이론적 사양 범위 내에 있지 않습니다. 이러한 알고리즘에 대한 전체 사양이 있다고 생각하지 않으므로 원칙적으로 Hoare 논리와 같은 의미로 알고리즘을 확인할 수 없습니다.


AES는 암호화 보안의 정의 범위 내에 있습니다. (점근 적 정의보다는 구체적인 보안 정의를 사용해야하지만 실제로 보안을 원한다면 어쨌든 그렇게해야합니다.)
DW

@DW 재미있는. 나는 이것을 몰랐다. 이론적 암호의 점근 적 특성은 어떻게 우회됩니까? 이것에 대한 논문으로 나를 가리켜 주시겠습니까? 구체적인 암호화 해시 함수는 어떻습니까?
Martin Berger

en.wikipedia.org/wiki/Concrete_security 및 여기에 나열된 참조 자료 해시 함수는 사용하는 용도에 따라 달라지기 때문에 좀 더 복잡한 경우입니다. 그러나 복잡성은 점근 적 보안 대 구체적인 보안과 직교합니다.
DW

2
암호화를 위해서는 두 개의 알고리즘이 필요합니다. 하나는 암호화하고 다른 하나는 해독합니다. 그들 중 하나는 자체적으로 정확할 수 없습니다. 쌍으로 만 정확할 수 있습니다 (암호화 된 입력을 해독하면 원본이 생성됨을 증명할 수 있습니다). 그러나 암호화의 경우 암호화가 불가능하기를 원하며 "정확성"으로 잡을 수없는 것입니다.
gnasher729

1
@DW 나는 약간 동의하지 않는다. Rogaway와 Bellare의 논문은 어떤 식 으로든 기본 형식의 보안 증명을 허용한다는 것이 잘못되었음을 암시합니다. 두 논문 모두 본질적으로 프로토콜에 관한 것입니다 (즉, AES, SHA, RSA 등과 같은 프리미티브를 가정합니다). 프리미티브 자체를 확보하는 데있어 본질적인 문제는 여전히 남아 있습니다. 프리미티브의 증거에 대한 참조가 있으면 관심을 가질 것입니다. 예를 들어 두 번째 논문은 RSA가 어렵다고 가정하는데 이는 매우 개방적인 문제입니다.
DRF

5

PP{P}c{Q}QQ{P}c{Q}
PP,QQ

P(n)P(0)P(1)P(2)nN. P(n)

MnP(n)Mn. P(n)Mn. P(n)


5

문제 : 짝수 ≥ 4가 두 소수의 합이면 "예"를 인쇄하고, 짝수 ≥ 4가 두 소수의 합이 아닌 경우 "아니오"를 인쇄하십시오.

알고리즘 : "예"인쇄

대부분의 사람들은 알고리즘이 정확하다고 생각합니다. 알려진 증거 없으며 증거 없을 수도 있습니다.


3

정확하지만 실행하는 데 걸리는 시간을 모르는 알고리즘은 보장 된 시간 내에 중지되는 알고리즘으로 변환 될 수 있지만 올바른지 확실하지 않습니다.

nn+10log(n)20n

P=NP

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.