중단 문제의 결정 불가능한 증거


25

Halting Problem의 결정 불가능한 증거를 이해하는 데 어려움을 겪고 있습니다.

http://computing.guide/wp-content/uploads/2014/12/HaltingProblem1.jpg

만약 반환 프로그램 여부 입력에가 정지 왜 우리의 코드를 통과해야 할 모두 와 ?a b P a bH(a,b)abPab

왜 에 와 와 같은 임의의 입력 을 공급할 수 없습니까?P xH()Px


여기에서 사용되는 계산 모델에서는 모든 (인코딩 된) 입력이 허용됩니다. 타입 검사 나 그와 비슷한 것은 없습니다. 항상 프로그램을 인코딩하여 입력으로 전달할 수 있습니다.
asmeurer

2
당신은 할 수 공급 당신이 원하는대로 입력. 이 증명의 구조는 특정 입력을 고려해야합니다. H
David Richerby

1
프로그램에 입력을 제공 할 수 있습니다. 목표는 모순을 찾는 것입니다. 이론적으로 기계 'H'는 모든 종류의 입력에 작동해야합니다. 따라서 우리는 가능한 모든 입력 중 하나를 고려하여 모순을 초래합니다.
우그 네스

이 증거는 미묘하게 결함이 있습니다. 내가 아닌 모든 것을 위해 작동하는 H ()가 있는지 고려하십시오. 그것은 여전히 ​​멈춤 문제에 대한 일반적인 해결책 일 것입니다.
Joshua

답변:


27

증거는 모순을 찾는 것을 목표로합니다. 가 왜 자신에 대한 입력으로 사용 되는지 이해하려면 모순이 무엇인지 이해해야 합니다. 비공식적으로 모순은 : "a는 b를 받아 들인다"고 결정하는 기계 H (a, b)를 가지고 있다면 스스로 받아들이지 않는 기계를 받아들이는 기계를 만들 수있다. (읽기 당신이 때까지 몇 번 그것을 얻을.) 그림과 같이 기계를 -하자가 전화 - 않습니다 동의하지 ?M M ( P ) = P P PMM(P)=PP

당신이 요청하면 모순이 발생합니다 않는 동의 ? 모순이 있는지 두 가지 옵션을 찾아보십시오.MM

M M M M 이 허용 하지 않는 경우에만 은 허용합니다 . ; 이것은 분명히 모순입니다.MMM

그렇기 때문에 증거가 임의의 입력이 아닌 자체 를 실행하는 것이 필수적입니다 . 이것은 대각선 인수로 알려진 불가능한 증거에서 공통적 인 주제입니다.P


38

잠시 동안 그림을 무시하십시오. 우리는 곧 그것을 얻을 것이다. 프로그램 중단 테스터 있어야하는데 우리가 줄 하는 A 프로그램의 입력 (생각 에 대한 모든에있는 프로그램의 목록으로) 아무것도 , 다음과 같이 행동H a a b H ( a , b )H(a,b)HaabH(a,b)

  1. 가 입력으로 주어 졌을 때 정지로 표시된 프로그램 정지하면 는 "예"라고 대답합니다. 한편, 프로그램에 의해 기술 입력주지 영원히 실행 다음 "아니오"를 대답한다.b H ( a , b ) a b H ( a , b )abH(a,b)abH(a,b)
  2. 중요하게도, 프로그램 는 항상 정지하고 모든 쌍 대한 정답을 제공합니다 .( a , b )H(a,b)

를 구축 할 수 없다는 주장 은 를 서브 루틴으로 사용 하는 특정 "가상"프로그램 의 동작에 의존합니다 . 는 입력으로 프로그램 의 목록을 취하고 다음을 수행합니다.P H P xHPHPx

P(x) =
  run H(x, x)
  if H(x, x) answers "yes"
      loop forever
  else
      halt

그것을 보는 것은 어렵지 않습니다

xP(x) 는 입력으로 자체 설명이 주어지면 프로그램 가 영원히 실행될 경우에만 중단됩니다 .x

지금까지 너무 좋은 : 확실히 프로그램을 것입니다 긴만큼 의 서브 루틴 프로그램입니다.HPH

이제 그림으로 돌아갑니다. 에 자체 설명 을 입력 하면 어떻게됩니까 ? 그림은 그 시나리오에 대해서만 설명합니다. 는 프로그램 의 설명이 되며 위의 강조 표시된 부분으로 대체하면p PPpP

( p )P(p)프로그램 가 영원히 실행될 경우에만 가 중지됩니다 .P(p)

분명히,이 역설적 인 행동은 불가능하기 때문에, 서브 루틴 는 입력으로 주어진 경우에 실패하기 때문에 정지 테스터가 될 수 없다는 결론을 내야합니다 . 어디 다른 경우가있을 수 있습니다 예상대로 작동하지만, 이후 적어도 하나의 상황에서 실패 필요에 따라, 그것은 완전한 정지 테스터가 될 수 없습니다.( P , P ) H HH(p,p)HH


나는이 답변을 좋아한다. 이제 증명을 이해했지만 H가 재귀 제한 예외를 던질 수 있음을 증명하는 것처럼 보입니다.
팩스

2
@Fax H는 두 번 이상 호출되지 않으며 재귀가 P없습니다. H(P, P)실행하지 않고 P"매직 적으로" P자체적으로 전달 될 때 중지 할지 여부를 결정합니다 .
Ajedi32

@ Ajedi32 H(P,P)는 실행할 P필요는 없지만 중단 H(x ↦ H(x,x), P)여부를 결정하는 과정 에서 실행 해야합니다 P. 어느쪽으로 확장 되는가 H(x ↦ H(y ↦ H(y,y), x), P).
팩스

@Fax H이 증명 에는 구현 이 지정되어 있지 않습니다. 따라서 아닙니다 . 자체 이든 아니든 아무 것도 실행할 필요 가 없습니다 P. 증거는 어떤 종류의 프로그램 H이 존재하여 정지 문제를 마술로 결정 한다는 가정에서 시작하여 그런 프로그램의 존재가 모순이라는 것을 증명하기 위해 계속됩니다.
Ajedi32

1
@Fax 당신은 호출 될 때를 제외하고 중지 문제를 결정하는 프로그램이 존재할 수 있는지에 대해 좋은 지적을합니다. 참조 어떤 증거가 자체 참조 또는 대각에 의존하지 않는 정지 문제의 결정 불가능 있습니까? 그것에 대한 흥미로운 질문에 대해.
Ajedi32

9

애니메이션 으로 예쁘게 교정 해보십시오 . 그리고 답변에는 사이트 링크 만 포함되어야하므로 질문에 대한 답변이 여기에 있습니다.

먼저, Halting 오라클이 존재하지 않는다는 증거가 어떻게 작동하는지 상기 해 봅시다. 우리는 어떤 후보 주어진 것을 증명 H함침 된 오라클를 들어, 프로그램이 P및 입력 a되는 H정확하게 예측할하지 P(a)않습니다.

정리 : 하자가 H소요 어떤 프로그램이 될 이 개 항상 입력과 반환하거나 halt또는 loop. 그런 다음 if 및 if 만 반환 하는 중지 하는 프로그램 Q과 입력 이 있습니다 .aQ(a)H(Q,a)loop

증명. 프로그램을 고려

program P(y):
  if H(y,y) = halt then
    loop forever
  else:
    return

하자 Q = Pa = P. 하나 H(Q,a) = halt또는 H(Q,a) = loop:

  • 경우 H(Q,a) = halt한 다음 Q(a)(단지 인 P(P))의 정의에 의해 영원히 실행됩니다 P.
  • 만약 H(Q,a) = loop한 다음 Q(a)의 definitoin 의해 중단 P.

QED

왜 우리가 다른 사람 H(P,P)대신에 우리를 고려했는지 물었습니다 . 확실한 대답은 " 증거가 작동 하기 때문 "입니다! 임의의을 사용했다면 멈출 것입니다. 실제로 증명은 다음과 같습니다.H(P,X)XH(P,P)H(P,X)X

깨진 증거. 프로그램을 고려

program P(y):
  if H(y,y) = halt then
    loop forever
  else:
    return

하자 Q = Pa = X일부 임의의에 X. 하나 H(Q,X) = halt또는 H(Q,X) = loop:

  • 중단 여부는 무엇을 반환 하는지에 따라 달라 지기 때문에 H(Q,X) = halt우리는 무엇을 할 수 없다고 가정하십시오 . 우리는 붙어 있습니다. 우리가 알고 경우, 그리고 같은, 우리는 진전을 만들 수 있습니다. (그래서 우리는 정말로 가져 가야합니다 ).P(X)P(X)H(X,X)P(X)X(X)X = P
  • 경우에 H(Q,a) = loop우리는 다시 붙어 있으며, 우리는 경우에 떨어지게 될 것이다 X = P.

QED가 없습니다.

이것이 H(P,P)우리가 아이디어를 작동시키기 위해 고려해야한다는 것을 보여주기를 바랍니다 .


하하. 대박! :)
aelguindy

2

증거의 결론은 다음과 같습니다.

사람의 경우 주장 s는 / 그는 모든 사람의 감정 인식 할 수있는 의 / 그 때 무언가를보고, 다음 원고에게 가 보는 모든 사람에게 그 정서 의 반대 를 모방합니다 . 그리고 거울 앞에 그녀의 를 두십시오 . S / he 는 어떤 감정을 표현해야할지 모릅니다( P ) P ' ( P ' ) P ( P ) ( P ) ( P )P(P)P(P)P(P)(P)(P) . 🙂

아래 첨자 및 은 대명사를 명확하게하기 위해 사용됩니다.( P ' )(P)(P)

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