이상적인 컴퓨터에서 순수한 프로그램에 대해 중지 문제를 결정할 수 있습니까?


25

불완전한 프로그램 (예 : I / O 및 / 또는 시스템 전역 상태에 종속 된 상태)에 대해 중지 문제가 결정 불가능한 이유를 이해하는 것은 매우 간단합니다. 그러나 직관적으로, 이상적인 컴퓨터에서 순수한 프로그램의 정지는 정적 분석 등을 통해 결정될 수 있습니다.

이것은 사실입니까? 그렇지 않다면이 주장을 반증하는 반례 나 논문은 무엇입니까?


35
중지 문제가 결정 불가능하다는 표준 증거 (예 : wikipedia : en.wikipedia.org/wiki/Halting_problem#Sketch_of_proof )는 모두 I / O를 나타내려고 시도하지 않는 계산 모델과 함께 작동합니다. 예를 들어 튜링 머신은 상태가 양호하지만 동작은 순수한 기능 측면에서 공식적으로 정의됩니다. 어떤 의미에서 "이상적인 컴퓨터의 순수한 프로그램"은 실제로 정지 문제가 일반적으로 결정 불가능한 설정입니다.
Ben

1
어떤 연구를 했습니까? 인터넷 검색 "Halting problem"이이 질문에 이미 답변되어 있어야합니다.
Jonathan Cast

답변:


38

Halting 문제를 줄임으로써 결정할 수없는 증거입니다.

감소 : 기계 과 입력 주어지면 입력을 읽지 않고 테이프에 과 를 기록 하고 정지 할 때까지 을 시뮬레이션 하는 새로운 Turing Machine 를 만듭니다.MxHMxMxM

이 새로운 기계 의 동작은 입력 테이프와 무관하므로 정적 분석 만 적용 할 수 있는 순수한 Turing Machine입니다. 정적 분석이 충분하다면 정지 하는지 여부를 보여줄 수 있습니다 . 이는 이 에서 정지 하는지 여부를 보여줍니다 . 이로 인해 불순한 기계의 정지 문제를 해결할 수 있습니다.HHMx



@HendrikJan 정확하게!
Lieuwe Vinkhuijzen

16

아닙니다. 또한 I / O에 의존하지 않습니다.

간단한 반례 : 완벽한 홀수를 찾기 위해 프로그램을 작성하십시오 (이것은 열린 문제입니다 : 우리는 아직 존재하는지 여부를 알지 못합니다)-입력을받지 않고 불완전한 작업을 수행하지 않습니다 . 하나를 찾으면 중단되거나 무한히 작동 할 수 있습니다 (이러한 숫자가 존재하지 않는 경우). 정지 분석이 정지 사례를 결정하기에 충분히 강력하다면 정지는 이러한 숫자의 긍정적 인 존재를 의미하고 정지하지 않으면 그러한 숫자가 없지만 불행히도 정적 분석을 의미하는이 질문 (및 더 많은 질문)에 대답하는 데 사용됩니다. 그렇게 강력하지 않습니다.


18
나는이 답변에서 요점을 실제로 보지 못합니다. 현재 우리는 그러한 숫자가 존재하는지 여부를 알지 못하기 때문에 숫자가 존재하지 않는다는 것을 암시하지 않으며 앞으로 이것을 결정할 수있는 정적 분석기를 작성할 수 없습니다. 더 좋은 대안은 알려지지 않은 알려진 문제를 사용하는 것입니다. 예를 들어, 모든 디오 판틴 방정식을 해결할 수있는 프로그램이 없으며, 그러한 방정식을 푸는 것이 답에 표시된 것과 유사한 작업입니다.
Bakuriu

2
만약 Halting 문제가 결정될 수 있다면, 프로그램이 멈추었는지 아닌지를 묻는 양식에 넣을 수 있다면 모든 문제를 결정할 수있을 것입니다. 또는 형식의 질문 : 셀 수있는 세트가 있으며 개별 잠재적 요소가 세트에 있는지 여부를 결정할 수 있습니다. 세트가 비어 있습니까? Diophantine 방정식에는 셀 수있는 잠재적 솔루션이 있으며 각 개별 솔루션이 솔루션인지 여부를 확인할 수 있습니다. Halting 문제가 결정 가능한 경우 Diophantine 방정식을 결정할 수 있습니다.
gnasher729

10
@ gnasher729 그렇습니다. Halting 문제가 아니기 때문에 결정할 수 없습니다. 그게 내 요점이야 이 답변의 진술에는 실제 의미가 없습니다. "이 수학적 정의를 고려하십시오. 현재 우리는 이것을 결정하는 프로그램이 중지 될지 여부를 알지 못하지만 내일 사람은 그것이 그렇지 않은지 알 수 있으며이 답변은 100이됩니다. 의미없는 % ".
Bakuriu

6
이것은 π에 일련의 숫자가 있는지 어떻게 결정할 수 있습니까? 와 비슷한 경우가 아닙니까? 중단 문제는 단일 문제가 아니라 문제의 종류 에 따라 결정될 수 없습니다 .
npostavs

2

대각선 화 의한 고전적인 증거 는 순수한 기계 이며 순수한 Turing Machine 일뿐만 아니라 "Open Problems"에 의존하지 않습니다.

예를 들어, Collatz Conjecture 를 실행하는 Turing 시스템 은 정지 상태를 알 수 없지만 Collatz Conjecture에 대한 우리의 무지에 의존합니다. (일부 입력의 경우 정지되지 않거나 항상 정지합니다).

따라서 Collatz Conjecture는 이미 귀하의 질문에 대답 할 수 있지만 (임시로) 우리가 모르는 것에 의존합니다 . 대신에 고전적인 증거는 해결 된 문제입니다. 우리는 이미 결정 불가능하다는 것을 알고 있습니다.


0

기록을 위해, 정지 문제의 결정 불가능성에 대한 표준 증거는 quines와 동일한 아이디어에 의존합니다. 일부 하위 용어는 전체 프로그램의 소스 코드로 평가되는 프로그램을 작성할 수 있다는 것입니다. 그런 다음 halts프로그램의 소스 코드가 주어진 경우 해당 프로그램이 모든 입력에서 중지되면 True를 반환하고 그렇지 않으면 False를 반환 하는 함수 가 있으면 다음 과 같은 합법적 인 프로그램입니다.

prog() = if halts "prog" then prog() else ()

"prog"소스 코드로 평가 된 표현식은 어디 에서 prog; 그러나 prog모든 입력에 대해 중단이 멈추지 않으면 중단되는 것을 빠르게 알 수 있습니다 . 이는 모순입니다. 이 증명의 어떤 것도 I / O에 의존하지 않습니다 (퀴네를 작성하려면 I / O가 필요합니까?).

그런데 I / O가 문제와 전혀 관련이 없다는 추가 증거를 보려면 "대화 상자 기반 I / O"를 참조하십시오 (기본적으로 I / O를 수행하는 프로그램은 입력을받는 프로그램으로 축소 될 수 있음). (명시 적) 기능적 인수 및 게으른 언어의 (명시 적) 추가 결과로 출력을 반환) 불행히도, 현재 웹에서 합리적이고 편견이없는 (또는 대화 상자) 페이지를 찾을 수 없습니다.

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