PhilosophyThought

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ PhilosophyThought ] in KIDS
글 쓴 이(By): yschoe (마술사)
날 짜 (Date): 1998년 6월 20일 토요일 오후 06시 32분 01초
제 목(Title): Re: 질문] Turing Computable Function에

Halting problem은 파라독스와 같은 형태를 띕니다.

먼저 M_h라는 머신이 있어서 입력으로는 코딩이 된 임의의 다른 머신 M을 받고
출력으로는 만일 M이 halt하면 1을, 아니면 0을 출력한다고 합시다.
(이게 바로 halting problem이죠. 임의의 turing 머신이 주어졌을때
그것이 halt하나 안하나 결정하는 문제)

이 M_h를 이용해서 새로운 머신 M_o를 만들어봅시다.
M_o은 역시 코딩된 다른 머신을 입력으로 받아서 M_h를 사용해서

M_h의 결과가 0 이면 halt를 하고 
     1 이면 무한루프를 돌게 (즉 halt안하게) 합니다.




M_o ==      code(M)===> M_h --> if 0 --> halt
  1 --> 무한루프 (head를 무한히 
계속 이동시킴)

그럼, 이 M_o역시 하나의 합법적인 머신이므로 halt할지 안할지를
M_h에 넣어서 돌려보면 0 또는 1의 값이 반환이 되겠죠.

그러나.. M_o에 code(M_o)를 줄때 아래의 두 경우가 있을 수 있습니다.

1. M_o가 halt안 할 경우

M_h가 code(M_o)를 입력으로 받아 1을 출력 했어야 함.
즉 M_o가 halt함을 의미함, 고로 모순.

2. M_o가 halt할 경우

M_h가 code(M_o)를 입력 받아 0을 출력 했어야 함.
즉 M_o가 halt안 함을 의미함. 고로 모순.

두 경우 모두 모순이므로.. halt할지 안할지 모르는 머신 M_o의 존재를 
확인하게 된겁니다. 즉, M_h에 code(M_o)를 주면 M_h가 딱 부러지게 
yes/no를 대답할 수 없는 반례가 있음이 입증 된것이죠.

(혹시 틀린거 있으면 지적해주세요.. )

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.