정지 문제의 제한된 버전에 대해 무엇을 알고 있습니까?


16

( 업데이트 : 아래에 허용 된 답변에 대한 주석 이이 질문이 잘 정의되어 있지 않기 때문에 더 나은 질문이 여기 에 제기 됩니다)


정지 문제의 불가능성에 대한 고전적인 증거는 정지 감지 알고리즘을 입력으로 적용하려고 할 때 모순을 입증하는 데 달려 있습니다. 자세한 내용은 아래 배경을 참조하십시오.

설명 된 모순은 자기 참조 역설 때문에 적용됩니다 (예 : "이 문장은 사실이 아닙니다"). 그러나 우리가 그러한 자기 참조를 엄격히 금지한다면 (즉, 그러한 자기 참조가 중단 될 수 없다는 사실을 받아 들였다), 우리는 어떤 결과를 남게 될까요? 나머지 비 자기 참조 기계 세트에 대한 정지 문제가 중지되는지 여부를 결정할 수 있습니까?

질문은 :

자체 참조가 아닌 가능한 모든 튜링 머신의 서브셋을 고려한다면 (즉, 입력으로 자발적으로 취하지 않는 경우),이 서브셋의 정지 문제에 대해 무엇을 알고 있습니까?

최신 정보

어쩌면 내가 따르는 것에 대한 더 나은 개혁은 결정 가능한 세트를 정의하는 것에 대한 더 나은 이해 일 것입니다. HALT 자체를 실행하는 경우를 제외하고는 결정 불가능성에 대한 정보를 추가하지 않기 때문에 고전적 결정 불가능 증거를 분리하려고했습니다.

배경 : 튜링 머신이 있다는 모순으로 가정 입력을 결정할 수 M 튜링 기계에 대한 인코딩 인 X 여부, M ( X ) 가 정지. 이어서 튜링 기계 고려 K 얻어 MX를 하고 사용 Q를 여부를 결정하기 위해 M ( X ) 반대쪽을 정지하거나 생략하고 수행을, 즉 K의 경우 정지하는 M ( X는 ) 정지하지 않고, 경우에 중단없는 M ( X )QMXM(X)KMXQM(X)KM(X)M(X)정지합니다. 그런 다음 K 가 멈추지 않으면 멈추어야하고 멈추더라도 멈추지 않아야하기 때문에 모순을 나타냅니다 .K(K)K

동기 부여 : 동료가 소프트웨어 시스템의 공식 검증 작업을 수행하고 있습니다 (예 : 시스템이 이미 소스 코드 수준에서 검증 된 후 컴파일 된 버전에 대해 교정하고 컴파일러 문제를 중화하려는 경우). 자체 참조되지 않을 것임을 확실히 알고있는 특수한 임베디드 제어 프로그램 세트. 그가 수행하고자하는 검증의 한 측면은 입력 소스 코드가 종료 된 것으로 판명되면 컴파일 된 프로그램이 중단 될 것이라는 보장입니다.

최신 정보

아래의 의견을 바탕으로 비 자기 참조 튜링 기계의 의미를 명확하게 설명합니다.

목표는이를 증명에 제기 된 모순으로 이어지지 않는 집합으로 정의하는 것입니다 (위의 "배경"참조). 다음과 같이 정의 될 수 있습니다.

튜링 기계가 있다고 가정 튜링 머신 세트의 정지 문제 판정 S를 한 다음, (S)은 비 자기 - 참조에 대하여 인 Q 가 호출 모든 기계 제외 경우 Q가S를 (직접 또는 간접적으로). ( QS 의 멤버가 될 수 없음 을 분명히 의미합니다 .)QSSQQSQS

S에서 를 간접적으로 호출하여 의미하는 바를 명확하게 설명하려면 다음을 수행하십시오.QS

S에서 를 호출 하는 것은 튜링 머신 Q 로 표시되며, 상태의 세트와 테이프의 특정 가능한 초기 입력 ( S의 모든 멤버에 해당 )은 처음에 입력의 시작 부분에 머리가 있습니다. 기계 W 원용 QS "간접적으로"는 해당 단계의 (유한) 시퀀스가 있는지 WQSQSWQSW 초기 구성으로 그 구성은 "호모 모르 픽"만드는 데 걸리는 .Q(S)

업데이트 2

아래의 답변에서 동일한 작업을 수행하는 무한한 많은 Turing 기계가 있다고 주장합니다. 고유하지 않습니다, 우리가 말하는 이상 정의를 변경 Q는 하나의 튜링 기계가 아니라 모든 기계의 (무한) 세트 컴퓨팅 동일한 기능 (HALT). 여기서 HALT는 튜링 기계가 특정 입력에서 정지되는 기능을 결정하는 기능입니다.QQ

업데이트 3

튜링 머신 동형의 정의 :

A의 전이 그래프가 라벨링 된 노드 AND 에지를 갖는 그래프의 동질성 에 대한 표준 의미 에서, A의 전이 그래프가 B의 그것과 동형 인 경우, TM A는 TM B 와 동형이다. TM의 전이 그래프 (V, E)는 V = 상태, E = 전이 상태 사이에서 호가되도록한다. 각 호에는 (S, W, D), S = 기호 판독 테이프 및 W = 기호 표시, D = 헤드 표시 방향이 표시됩니다.


5
"나머지 자체 참조가 아닌 나머지 세트"이 세트를 현명하게 논의하기 전에 "자체 참조"의 정의를 원합니다. 그러나 나는 그것이 정의하기 까다로운 것이라고 생각합니까?
Sam Nead

1
아마도 정지 프로그램에 대한 연구가 있습니다 (이 수업은 모든 정지 프로그램을 포함하지는 않습니다). 기본적으로 그들은 한 쌍의 프로그램이며 중지한다는 증거입니다. 예를 들어, 내가 실수하지 않으면 Agda 는 중지되는 프로그램 만 허용합니다. 나는 논리와 프로그래밍 언어로 일하는 사람들이 이것에 대해 더 많이 이야기한다고 생각합니다.
이토 쓰요시

1
@미디엄. 알라 간. 이제 나는 " 간접적 으로 S에서 를 호출한다"라는 정의를 원한다. 이것은 원래 "자체 참조"처럼 정의하기가 어렵다고 생각된다. :)Q에스
Rob Simmons

2
이것은 흥미로운 질문을 일으킨다 : 모든 계산 불능 (불확실성) 증명이 Cantor의 대각선 화 방법으로 추적 할 수 있는가? 대각선 화 방법에 직접 또는 간접적으로 의존하지 않는 결정 불가능한 증거가 있습니까?
Mohammad Al-Turkistany

답변:


9

"잘 정의 된"질문에 도달하려면 약간의 작업이 더 필요할 것입니다. 특히 이것은 문제가 있습니다.

S에서 Q를 호출하는 것은 튜링 머신 Q로 표시되며 상태의 세트와 테이프의 특정 가능한 초기 입력 (S의 모든 구성원에 해당)은 처음에 입력의 시작 부분에 헤드가 있습니다. W (S)의 구성이 Q (S)의 초기 구성과 "동형"이되도록하는 단계의 (유한 한) 순서가있는 경우, 기계 (W)는 S에서 "간접적으로"Q를 호출합니다.

한 가지 문제는 동일한 기능을 계산하는 무한대의 Turing 머신이 있다는 것입니다. 표준 대각선 화 논쟁에서 나는 Q 서브 루틴을 HALT에 대한 다른 결정자로 대체 할 수 있습니다. 또는 HALT와 계산적으로 동등한 기능입니다. 따라서 "간접 호출"이라는 개념을 정의하는 방법이 완전히 명확하지 않습니다.

다른 질문은 다음과 같습니다. 어떤 튜링 기계 세트에서 정지 문제를 결정할 수 있습니까? 여기에는 자원이 제한된 TM (예 : f (n) 공간 만 사용, f는 특정 계산 가능한 함수 임), 특정 방식으로 작동이 제한되는 TM (예 : 읽기 헤드는 한 방향으로 만 이동) 등 풍부한 답변이 있습니다. 그러나 또 다른 흥미로운 질문은 제한된 세트의 멤버십을 결정할 수 있는지 또는 "약속 된"일부 입력에 대해 정답을 보증하지만 검증하지 않는 "문제 약속"으로 자신을 제한해야하는지 여부입니다. 회원.


QH

그렇게 간단하지 않습니다. 계산 가능한 HALT를 찾고 있으므로 정의가 역설적입니다. 그러나 이것이 계산 가능한 경우 계산 가능한 기능은 계산 가능한 기능과 동일합니다. 그러나 입력 집합에 반 계산 가능한 문제 (TM)가 포함 된 경우 그러한 TM에 대한 중지 문제를 결정하면 해당 문제에 대한 결정 절차가 제공되므로 모순이 생길 수 있습니다.
Mark Reitblatt

1) 계산 불가능한 HALT가 결정 불가능 성을 의미하지 않습니까? 나는 모순을 기대하면서 그러한 계산 가능한 HALT가 있다고 가정했습니다. 2) 나는 모든 계산 가능한 기능이 서로 계산 가능하다는 개념에 익숙하지 않으며, 인용하고 있으며 이는 HALT 문제를 해결하는 기능이라는 것을 의미합니다. 분명히 λx.1은 계산 가능하지만 HALT를 결정하지는 않습니다. 내가 틀렸다면 정정 해주세요. 반 계산 가능한 문제에 대해 HALT는 무한한 단계를 밟을 수 있으며, 이는 HALT를 결정할 수 없다는 원래의 증거에 여전히 모순되지 않습니다.
M. Alaggan

1) 그렇습니다. 그러나 문제는 "비 자기 참조"라는 개념을 정의하려는 것입니다. 내가 주장한 것처럼 대각선 화를 허용하는 약한 제한이거나 모든 것을 제거하는 강력한 제한입니다. 2) 간단하다. "계산적으로 동등한"은 대략 하나에서 다른 것으로 계산 가능한 매핑이 있으며 응답을 유지한다는 의미입니다. 그러나 답을 계산할 수 있다면 속임수로 매핑을 간단하게 만들 수 있습니다. 3) HALT를 결정하는 TM이 자체적으로 종료되지 않으면 HALT의 결정자가 아닙니다.
Mark Reitblatt

약간 혼동되는 다른 것은 TM의 계산 문제와 TM의 혼동입니다. TM이 서로 계산적으로 동등한 것에 대해 말하는 것은 정상이 아닙니다. 오히려, 그것들에 의해 계산 된 함수는 동등하거나 동등 할 수 있습니다. 문제는 TM이 다른 TM을 시뮬레이트하지 않는다고 말하는 것은 계산 된 함수를 분리하기 위해 구체적인 것을 제공하지 않고는 일반적으로 정의하기가 어렵다는 것입니다. 예를 들어, Log-space TM은 EXP 공간 문제를 해결하는 TM을 시뮬레이션 할 수 없습니다.
Mark Reitblatt

9

귀하의 동기를 올바르게 이해하면 이것이 "제한된 정지 문제"문제 이상의 "컴파일러 정확성"문제인 것 같습니다. 소스 수준 프로그램 Prog에 대해 입증 된 속성 (종료)이 있으며 컴파일 된 코드로 확장하여 동일한 속성의 compilation (Prog) 을 얻습니다 . 그러나 컴파일러는 일반적으로 튜링 완료 런타임 구현 (예 : JVM)을 임의로 종료하고 종료 프로그램을 JVM 바이트 코드로 컴파일 한 다음 JVM을 시작하는 실행 파일을 덤프하여 컴파일 된 바이트 코드를 제공 할 수 있습니다.

실제로 컴파일러가 작동하는 방법에 대한 암묵적 지식을 활용하여 컴파일 된 프로그램이 올바른 소스 프로그램에서 올바른 것으로 입증하는 검증 절차를 구현할 수 있습니다. 프로그래머의 두뇌에있는 알고리즘-코드 "컴파일러" 그러나 일반적 으로 컴파일러 정확성 문제를보고있을 것입니다. 내가 이해하는 것처럼 두 가지 고전적인 방법이 있습니다.

하나의 옵션은 프로그램으로 Prog 를 입력 하고 그 증거를 종료 (Prog) 하고 출력을 컴파일 (Prog) 하고 종료 (컴파일 (Prog)) 하는 컴파일러를 갖는 것입니다 . 후자는 독립적으로 이중 점검 할 수있는 증거입니다. 컴파일러 이것에 대한 고전 논문은 Necula and Lee의 것입니다. 인증 컴파일러의 설계 및 구현 이라고 생각합니다.

또는 compiles () 함수에 대한 사실을 증명할 수 있습니다. compiles () 가 종료 입력을 줄 때마다 종료 출력을 생성합니다. 컴파일러 정확성에 대한 이러한 사고 방식에 대한 접근 가능한 소개는 Xavier Leroy의 CACM 기사 인 현실적인 컴파일러의 공식 검증입니다 .

(PS 나는이 답변이 도움이되기를 바랍니다-나는 그것이 당신이 질문 한 것과는 조금 다르다는 것을 알고 있습니다. 따라서 내가베이스에서 벗어나거나 이미 알고있는 것을 반복하고 있는지 알려주십시오.)


큰 답변 주셔서 감사합니다. 이것은 내 동료에게 확실히 유용 할 것입니다. 그러나 나는 (동료와 독립적으로) 중단 문제의 증거에 대한 이론적 의미에 더 관심이 있습니다. 모순을 보여 주었던 사건을 없애면 중지 문제의 결정 가능성에 대해 우리는 무엇을 알고 있습니까?
M. Alaggan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.