LTCT KOREA인류가 증명하려 했던 것들
19 / 20   ·   대각선 논법과 계산불가능성

THE PROOFS HUMANKIND PURSUED · 19

어떤 목록을 아무리 길게 만들어도 빠지는 계산이 있을까?

모든 무한 이진열을 번호로 나열하려 하면 어떤 한 열이 반드시 빠집니다. 칸토어의 이 대각선 구성을 프로그램 목록과 정지 문제에 적용할 때에는 무엇을 새로 가정해야 할까요? 집합의 크기와 계산 판정의 한계를 구별합니다.

대각선 자리를 뒤집는 같은 형태의 구성이 집합론과 계산 이론에서 왜 서로 다른 결론을 가져올까요?
게오르크 칸토어의 초상
게오르크 칸토어
Georg Cantor · 1845–1918
수학·집합론
러시아 제국 상트페테르부르크 출생 · 독일 할레대학교 등에서 연구
1894년경 게오르크 칸토어의 초상. 저작자 미상
초상 원본·출처 ↗ · Wikimedia Commons 퍼블릭 도메인 표시
사진 원본 파일은 편집하지 않고 승인된 화면 틀에 배치합니다.
01 · THE QUESTION AND THE PERSON

행 번호와 자리 번호를 먼저 구별합니다

친숙한 사례와 용어의 뜻을 먼저 정하고, 역사적 맥락과 연구 질문을 연결합니다.

01 · 읽어 보기

1. 백 명의 학생이 쓴 답안과 백 가지 규칙

어떤 문제에 학생마다 예 또는 아니요 하나를 쓰게 하면 답이 두 종류뿐입니다. 이번에는 문제를 한 개가 아니라 자연수로 번호를 붙인 무한히 많은 문제 0번, 1번, 2번, …으로 확장해 봅시다. 한 학생이 모든 문제에 답하는 방식을 '답안 규칙'이라고 부르겠습니다. 그러면 한 규칙은 0번 문제에 0 또는 1, 1번 문제에 0 또는 1, 2번 문제에 0 또는 1을 계속 배정합니다.

이 규칙의 전체 결과를 0과 1로 이루어진 무한한 수열로 나타낼 수 있습니다. 예를 들어 첫 번째 규칙이 0,0,0,0,…이면 모든 문제에 0이라고 답하는 규칙입니다. 두 번째가 0,1,0,1,…이면 짝수 번호와 홀수 번호에 서로 다른 답을 배정하는 규칙입니다. 각 수열의 행 번호와 수열 안의 자리 번호는 전혀 다른 역할을 합니다. 행 번호는 어떤 규칙인지 나타내고, 자리 번호는 그 규칙이 몇 번 문제에 어떤 답을 주는지를 나타냅니다.

이제 누군가 '가능한 모든 무한 답안 규칙을 0번 줄, 1번 줄, 2번 줄, …에 빠짐없이 적었다'고 주장했다고 합시다. 정말 가능한지 확인하는 데 필요한 도구가 대각선 논법입니다.

02 · 읽어 보기

2. 먼저 비교할 집합을 정확하게 정합니다

자연수 집합을 N={0,1,2,3,…}이라고 쓰겠습니다. 무한 이진열 전체의 집합을 B={f | f:N→{0,1}}라고 정합니다. 여기서 f는 각각의 자연수 n에 0 또는 1 한 값을 배정하는 함수입니다. f(0), f(1), f(2), …를 이어 적으면 하나의 무한 이진열이 됩니다.

B의 원소가 모두 자연수로 번호를 붙일 수 있을지를 묻는다는 것은, 어떤 함수 L:N→B가 B의 모든 원소를 빠짐없이 값으로 내놓을 수 있을지를 묻는 것입니다. L(0)은 첫째 행의 이진열, L(1)은 둘째 행의 이진열입니다. 한 이진열이 여러 행에 반복되어도 좋으니, 우선 가장 약한 조건인 '빠지는 열이 없다'만 가정하겠습니다. 이런 함수를 전사함수라고 부릅니다.

이 조건을 명시하는 것이 중요합니다. 한 학생이 0과 1을 적은 짧은 표만 생각하는 문제와, 무한히 많은 자리로 이어지는 모든 이진열을 대상으로 하는 문제는 크기가 다릅니다. 유한한 표의 경우에는 가능한 답안 규칙이 많아도 유한 개이므로 모두 나열할 수 있습니다. 대각선의 강력한 결론은 무한한 전체 집합에 관한 것입니다.

03 · 읽어 보기

3. 네 줄만 적어 보는 작은 표

어떤 목록의 앞부분이 다음과 같다고 합시다. 행 0은 '0 0 1 1 …', 행 1은 '1 0 1 0 …', 행 2는 '1 1 0 1 …', 행 3은 '0 1 1 0 …'입니다. 점 세 개는 뒤에 더 많은 자리가 계속됨을 나타냅니다.

행 0의 0번 자리는 0입니다. 행 1의 1번 자리는 0입니다. 행 2의 2번 자리는 0입니다. 행 3의 3번 자리는 0입니다. 이것들이 대각선 자리입니다. 각 행마다 같은 번호의 자리를 하나씩 고르는 규칙이므로, 행의 모든 값을 합치거나 세로열 하나를 고르는 절차와 다릅니다.

이 네 자리의 값을 0에서 1로 바꾸면 새 열의 앞 네 값은 1,1,1,1이 됩니다. 새 열은 첫째 행과 0번 자리에서 다르고, 둘째 행과 1번 자리에서 다르고, 셋째 행과 2번 자리에서 다르고, 넷째 행과 3번 자리에서 다릅니다. 여기서는 표의 앞부분만 확인한 것입니다. 모든 자연수 번호의 행에 같은 규칙을 적용하면 무한 전체에 대한 결론을 얻습니다.

04 · 읽어 보기

4. 대각선으로 새 이진열을 정의합시다

모든 이진열을 나열했다는 가정 L을 세웁니다. 그러고 나서 새 함수 d를 다음과 같이 정합니다.

d(n)=1−L(n)(n)

L(n)은 n번째 행의 이진열입니다. L(n)(n)은 그 행의 n번째 자리 값입니다. 값이 0이면 d(n)=1이고, 값이 1이면 d(n)=0입니다. 그래서 반드시 d(n)≠L(n)(n)입니다.

이 식은 모든 자연수 n에 대해 정의되어 있으므로 d도 B에 속하는 이진열입니다. 그런데 d는 0번째 행과 0번 자리에서 다르고, 1번째 행과 1번 자리에서 다르며, 일반적으로 n번째 행과 n번 자리에서 다릅니다. 따라서 목록에 있는 어느 행과도 완전히 같지 않습니다. 모든 이진열을 빠짐없이 나열했다는 가정과 충돌합니다.

∀L:N→B, ∃d∈B, ∀n∈N[d≠L(n)]

이것이 증명된 결론입니다. 자연수로 번호를 붙여 B의 모든 원소를 나열하는 함수는 존재하지 않습니다. 칸토어의 대각선 논법은 이런 방식으로 특정한 목록 가정에서 언제나 하나의 빠진 대상을 만들어 냅니다.

각 행의 같은 번호 자리 뒤집기
d(n)=1−L(n)(n)
한국어로 읽기

n번째 행에서 n번째 자리의 0·1 값을 반대로 정의합니다. 그래서 새 열 d는 반드시 n번째 행과 그 자리에서 다릅니다.

칸토어의 집합론

모든 이진열을 자연수로 나열할 수 있다는 가정을 반박합니다.

튜링의 계산 이론

모든 프로그램의 종료를 반드시 결정한다는 범용 판정기의 가정을 반박합니다.

02 · THE ARGUMENT STEP BY STEP

대각선 구성에서 범용 정지 판정기로

가정과 추론을 실제로 따라가며 수식의 뜻, 반론, 결과의 적용 범위를 구분합니다.

N자연수 전체
L(n)n번째 행의 이진열
d(n)대각선 자리의 값을 뒤집은 결과
01 · 논증1 / 5

모든 목록의 밖에 있는 똑같은 열을 만든다는 뜻일까요?

05 · 읽어 보기

5. 모든 목록의 밖에 있는 똑같은 열을 만든다는 뜻일까요?

주의해야 할 대목이 있습니다. d는 목록 L에 따라 만들어집니다. L을 바꾸면 대각선 자리의 값도 바뀌며 새 열 d도 달라집니다. 따라서 모든 목록에 대해 단 하나의 고정된 이진열이 항상 빠져 있다는 주장과는 다릅니다.

또한 새 열을 만드는 규칙이 간단해 보인다고 해서 언제나 컴퓨터가 계산할 수 있다는 뜻도 아닙니다. L(n)(n) 값을 얻으려면 해당 목록의 n번째 행과 n번째 자리 값을 계산할 방법이 필요합니다. L이 전혀 계산 가능한 방식으로 제공되지 않았다면 d를 계산할 수 있다는 보장은 없습니다. 이 구별은 뒤에서 컴퓨터 프로그램의 한계를 다룰 때 결정적입니다.

대각선 논법은 주어진 목록의 모든 행과 적어도 한 자리에서 다른 열을 만든다는 집합론적 증명입니다. 이 결과를 바로 '어떤 특정 프로그램으로도 모든 계산을 할 수 없다'는 주장으로 바꾸려면, 프로그램을 어떤 방식으로 나열하고 어떤 값을 실제 계산할 수 있는지를 새롭게 정의해야 합니다.

06 · 읽어 보기

6. 컴퓨터 프로그램에도 자연수 번호를 붙일 수 있나요?

프로그램은 유한한 길이의 기호열로 기록됩니다. 0과 1로 된 코드로 모든 프로그램을 표현할 수도 있습니다. 유한한 이진 문자열은 길이가 0인 것부터 1인 것, 2인 것 순으로 나열할 수 있습니다. 각 길이의 문자열은 유한 개이므로 모든 유한 문자열에 자연수 번호를 붙일 수 있습니다.

정확한 코딩 방법과 문법의 차이는 있지만, 이 사실로부터 프로그램 전체가 많아야 가산 무한임을 알 수 있습니다. 모든 프로그램이 서로 다른 계산을 하지는 않습니다. 한 프로그램이 여러 입력에서 같은 결과를 내거나 어떤 입력에서는 끝나지 않을 수도 있습니다. 그럼에도 서로 다른 프로그램의 총수는 가산이라는 사실은 유지됩니다.

여기서 앞의 B와 프로그램의 집합을 비교할 수 있습니다. B에는 모든 무한 이진열이 있고 그 수는 비가산입니다. 반면 프로그램 코드는 유한 문자열이므로 가산입니다. 따라서 계산 가능한 이진열은 전체 B보다 훨씬 적습니다. 계산할 수 없는 무한 이진열이 존재한다는 결론을 얻습니다. 이것은 집합 크기의 비교로 얻은 존재 정리입니다.

07 · 읽어 보기

7. '가산'인데도 모든 것을 계산하지 못한다는 사실

이 결론이 의아할 수 있습니다. 프로그램에도 0번부터 번호를 붙이고, 자연수에도 0번부터 번호를 붙이는데 왜 프로그램으로 모든 이진열을 만들 수 없을까요? 핵심은 프로그램 한 개가 나타내는 것이 무한 이진열 하나라는 점입니다. 자연수로 셀 수 있는 개수만큼의 프로그램으로 표현할 수 있는 이진열은 가산 개뿐입니다. 그런데 모든 이진열의 집합은 비가산입니다.

이 논증에는 중요한 한계도 있습니다. 비가산성을 이용하면 계산할 수 없는 이진열의 존재를 보일 수 있지만, 그 자체로 특정한 유명한 문제 하나가 계산 불가능하다고 증명하지는 않습니다. '어떤 수는 계산 불가능하다'와 '정지 문제는 결정할 수 없다'는 다른 강도의 질문입니다. 실제 문제의 판정 불가능성을 얻으려면 문제의 구조를 구체적으로 사용해야 합니다.

이제 표의 값 0과 1을 프로그램이 멈추는지 여부로 바꿔 봅시다.

02 · 논증2 / 5

정지 문제의 두 입력을 구분합니다

08 · 읽어 보기

8. 정지 문제의 두 입력을 구분합니다

프로그램 P와 입력 x를 주었을 때 P가 x를 받아 유한한 단계 뒤에 멈출지 알아내는 문제를 생각합니다. 여기서 '멈춘다'는 뜻은 프로그램의 실행이 종료된다는 뜻입니다. 프로그램이 1을 출력하거나 0을 출력하는 것과 구별해야 합니다. 어떤 프로그램은 계산을 끝내고 0을 출력할 수 있고, 어떤 프로그램은 1을 출력할 수도 있으며, 어떤 프로그램은 끝없이 반복할 수도 있습니다.

정지 판정기 H(P,x)를 가정해 봅시다. 이 프로그램은 어떤 유효한 프로그램 코드 P와 입력 x를 넣어도 반드시 멈춰서 정확한 답을 내놓는다고 가정합니다. 멈춘다고 판단하면 1, 끝나지 않는다고 판단하면 0을 돌려줍니다.

H(P,x)=1 ⇔ P(x)가 언젠가 멈춘다

H(P,x)=0 ⇔ P(x)가 끝없이 실행된다

실제로 이러한 H가 있다는 뜻은 아닙니다. 지금은 그 가능성을 가정하고, 그 가정과 충돌하는 프로그램을 만들어 보려는 것입니다. 판정기가 반드시 종료해야 한다는 조건을 빼면 정지 문제를 정확히 규정한 것이 아닙니다.

정지 판정 가설
H(P,x) ∈ {0,1}
한국어로 읽기

P가 입력 x에서 멈추면 1, 멈추지 않으면 0을 돌려주며 항상 종료한다고 가정한 가상의 범용 판정기입니다.

09 · 읽어 보기

9. 한 프로그램을 자기 자신의 입력으로 넣습니다

모든 프로그램은 유한한 코드로 표현되므로 그 코드를 입력 데이터로도 취급할 수 있습니다. P의 코드를 다시 P 자신에게 주는 실행을 P(P)라고 간단히 적겠습니다. 실제 프로그램 언어에서는 코드를 입력 가능한 문자열 형태로 부호화해야 합니다. 여기서 P(P)는 그 부호화 절차를 생략한 교육용 표기입니다.

이제 H(P,P)를 계산하면 판정기 H는 프로그램 P가 자기 코드를 입력받았을 때 멈추는지 답해야 합니다. H가 정말 모든 P와 x에 대해 정확하게 작동한다면 이런 자기 입력 사례도 예외일 수 없습니다.

집합론의 대각선 규칙에서는 n번째 행과 n번째 자리를 비교했습니다. 계산 문제에서는 n번째 프로그램의 자기 입력을 조사합니다. 둘 다 같은 번호를 두 위치에 사용하는 것이 핵심이지만, 새 결과가 놓이는 수학적 맥락은 다릅니다.

10 · 읽어 보기

10. 판정기의 대답을 뒤집는 프로그램 D

다음과 같은 새 프로그램 D를 생각합시다. 입력으로 프로그램 코드 P를 받습니다. 먼저 H(P,P)를 실행합니다. H가 1이라고 답하면 D는 무한 반복에 들어가고, H가 0이라고 답하면 D는 즉시 멈춥니다.

D(P): H(P,P)=1이면 계속 반복, H(P,P)=0이면 즉시 종료

이것은 H를 호출한 다음 결과에 따라 두 동작 중 하나를 택하는 유한한 코드입니다. H가 언제나 끝나고 정확한 답을 준다는 가정이 있으므로 D도 유효한 프로그램으로 작성할 수 있습니다. 이 단계에서 아직 모순은 생기지 않았습니다.

이제 D 자신의 코드를 입력으로 넣어 D(D)를 실행합니다. H가 자기 입력 사례인 H(D,D)에 대해 답을 해야 하므로, 가능한 답 1과 0을 모두 검토하겠습니다.

03 · 논증3 / 5

첫째 경우: H(D,D)=1이라고 답한다면

11 · 읽어 보기

11. 첫째 경우: H(D,D)=1이라고 답한다면

H가 1이라고 답한다는 것은 D(D)가 언젠가 멈춘다는 예측입니다. 그러나 D의 규칙은 H의 답이 1이면 무한 반복에 들어가도록 정의되어 있습니다. 따라서 D(D)는 끝나지 않습니다. H의 예측과 D의 실제 동작이 서로 충돌합니다.

이 모순은 실행 시간이 길다는 뜻이 아닙니다. 1초, 100년, 무한히 긴 시간 중 어느 시점에 끝날지 추측하는 문제가 아니라, '멈춘다'고 한 답과 '멈추지 않는다'는 정의된 동작이 양립할 수 없다는 뜻입니다.

12 · 읽어 보기

12. 둘째 경우: H(D,D)=0이라고 답한다면

이번에는 H가 D(D)가 끝나지 않는다고 예측합니다. 그런데 D의 규칙은 H가 0을 내놓으면 즉시 종료하도록 되어 있습니다. 그러므로 D(D)는 멈춥니다. 이번에도 판정기의 예측과 실제 동작이 충돌합니다.

H는 항상 0 또는 1을 내놓도록 가정했으므로 가능한 답을 모두 검토했습니다. 두 경우 모두 모순입니다. 따라서 처음에 세운 가정, 즉 모든 프로그램과 입력에 대해 항상 종료하며 정지 여부를 정확하게 판정하는 알고리즘 H의 존재가 부정됩니다.

¬∃H ∀P ∀x [H(P,x)가 항상 종료하고 정확하게 정지 여부를 판정한다]

이 결론은 모든 프로그램이 실행되지 않는다거나 어떤 특정 프로그램의 정지 여부도 결코 알 수 없다는 주장이 아닙니다. 개별 프로그램이 멈춘다는 사실은 직접 실행해 확인할 수 있습니다. 다만 모든 프로그램과 입력을 처리하는 범용적인 완전 판정기는 존재하지 않습니다.

13 · 읽어 보기

13. 정지 여부를 부분적으로 알아내는 방법도 있나요?

P(x)를 직접 실행하다가 끝나면 '멈춘다'라고 답할 수 있습니다. 이 절차는 P(x)가 실제로 멈추는 경우에는 언젠가 답을 내놓습니다. P(x)가 끝없이 반복되면 그 절차 또한 계속 기다리게 됩니다. 이런 성질을 '멈춤 사례를 반결정할 수 있다' 또는 '정지 집합이 재귀적으로 열거 가능하다'고 설명합니다.

반결정과 완전 결정을 분리하면 정지 문제에 대한 과장된 설명을 피할 수 있습니다. 어떤 프로그램의 종료를 증명하거나 테스트하는 일은 실제로 가능합니다. 컴퓨터가 모든 프로그램에 대해 '멈춤/무한 반복'을 반드시 답하는 일반 알고리즘을 가질 수 없다는 것이 정리의 정확한 내용입니다.

실제 소프트웨어 검증 시스템이 많은 프로그램의 성질을 검사한다고 해서 정지 문제의 정리와 충돌하지 않습니다. 그 시스템은 검사 대상 언어·규칙·시간·자원 또는 답변 가능한 사례의 범위를 제한할 수 있습니다.

04 · 논증4 / 5

칸토어의 대각선과 튜링의 대각선은 같은 정리일까요?

14 · 읽어 보기

14. 칸토어의 대각선과 튜링의 대각선은 같은 정리일까요?

두 논증은 모두 목록의 n번째 항목과 같은 번호의 자리를 사용한 뒤 그 값을 뒤집는 구조를 공유합니다. 칸토어에서는 무한 이진열의 목록 L에서 d(n)=1−L(n)(n)이라고 정했습니다. 튜링의 현대적 교육용 정지 논증에서는 H(P,P)의 답과 반대로 움직이는 D(P)를 정의했습니다.

하지만 칸토어의 결론은 모든 무한 이진열이 가산 목록에 들어갈 수 없다는 집합의 크기에 관한 결과입니다. 정지 문제의 결론은 특정 성질을 모든 프로그램에 대해 정확히 판정하는 계산 절차가 존재하지 않는다는 결과입니다. 튜링의 논증에서 계산 가능한 H를 가정했기 때문에 D도 계산 가능한 프로그램으로 정의할 수 있고, 그 D가 바로 H의 가정에 모순을 일으킵니다.

그래서 '같은 대각선 발상'이라는 말은 맞지만, 두 결과의 증명 조건과 대상까지 동일하다는 뜻으로 쓰지 않습니다.

15 · 읽어 보기

15. 왜 계산 가능한 전체 함수만 나열하면 조심해야 하나요?

'모든 계산 가능한 함수 f₀,f₁,f₂,…를 나열한 다음 g(n)=1−fₙ(n)을 계산하자'는 생각은 매우 그럴듯합니다. 그러나 결정적인 질문이 있습니다. n을 입력하면 fₙ(n)을 항상 계산할 수 있는 통일된 절차가 주어졌나요?

각각의 fₙ이 개별적으로 계산 가능한 함수라는 사실만으로 n에서 fₙ을 찾아 그 값을 계산하는 통일된 알고리즘이 존재한다는 결론은 나오지 않습니다. 특히 0과 1을 반환하는 모든 전역 계산 가능 함수의 목록을 항목과 입력에 따라 일관되게 계산 가능한 표로 만드는 일은 불가능합니다. 그런 표가 있다고 가정하면 대각선 뒤집기를 한 결과 g 역시 계산 가능하면서 목록의 어느 행에도 없게 되어 모순이 생기기 때문입니다.

이 대목을 생략하고 '대각선으로 만든 함수는 언제나 계산 가능하다'고 설명하면 증명이 틀립니다. 목록이 단순히 존재하는지와 그 목록을 프로그램이 실제로 계산할 수 있는지에 대한 조건을 구별해야 합니다.

16 · 읽어 보기

16. 괴델의 대각화에서는 무엇을 뒤집을까요?

제11회에서 살핀 괴델의 불완전성 정리는 산술 명제와 형식적 증명에 번호를 붙이는 데서 시작합니다. 특정 산술 명제 안에 그 명제 자신의 번호를 집어넣는 고정점 구성으로, 자신이 주어진 이론에서 증명되지 않는다는 성질과 연결되는 명제를 얻습니다.

전문적으로는 대각화 보조정리에 따라 적절한 공식 A(x)에 대해 F ⊢ G ↔ A(⌜G⌝)인 문장 G를 구성합니다. ⌜G⌝는 G의 기호열에 배정된 수, 즉 괴델 번호입니다. A가 '그 번호의 문장이 F에서 증명되지 않는다'는 성질을 나타내도록 택하면 불완전성의 핵심 구성이 됩니다. 실제 정리에는 이론 F의 공리화 가능성, 산술 표현 능력, 무모순성 등 조건이 따릅니다.

이 구성은 칸토어가 무한 이진열의 대각선 자리를 뒤집는 방법이나 정지 판정 프로그램을 역행시키는 방법과 닮았지만, 단순한 자기 부정 문구만으로 성립하는 것은 아닙니다. 부호화가 정확하고 증명 가능성을 산술 안에서 표현할 수 있어야 논리학의 정리가 됩니다.

05 · 논증5 / 5

자기 언급이 나오면 언제나 역설일까요?

17 · 읽어 보기

17. 자기 언급이 나오면 언제나 역설일까요?

'이 문장은 한국어로 적혀 있다'는 자기 언급은 모순을 일으키지 않습니다. 어떤 프로그램이 자기 코드의 길이를 계산한다고 해도 그 자체가 논리적 모순은 아닙니다. 자기 언급이 등장한다는 사실만으로 역설이 발생하지 않는다는 점을 기억해야 합니다.

대각선 논증은 자기 번호의 자리에 접근해 기존 목록 또는 가정된 판정과 강제로 어긋나도록 구성하는 규칙이 핵심입니다. 칸토어에서는 0과 1을 뒤집었고, 튜링에서는 멈춘다는 답을 받으면 무한 반복을, 멈추지 않는다는 답을 받으면 종료를 실행하도록 만들었습니다. 괴델에서는 형식적 증명 가능성에 관한 표현과 자기 번호의 대입을 정교하게 결합했습니다.

모순이 실제로 발생하는 위치는 각 증명에서 명확하게 보여야 합니다. 단지 '스스로를 가리키기 때문에 불가능하다'고 요약하면 논증을 이해할 수 없습니다.

두 대각화 증명이 보여 주는 것

가정한 전체 목록과 어긋나는 대상을 구성한다

칸토어의 비가산성 증명과 튜링의 계산불가능성 증명은 비슷한 구성을 사용하지만, 각각 증명하는 대상과 결론은 구별됩니다.

03 · OBJECTIONS, PRACTICE, AND NEXT QUESTIONS

같은 논증 방법, 서로 다른 대상과 조건

반론과 독자의 검산 문제를 다루며 주장할 수 있는 결론을 확정합니다.

18 · 읽어 보기

18. 역사적 연도를 한 줄에 놓아 봅시다

1891년 칸토어는 무한 배열을 통한 대각선 방법으로 자연수 목록과 크기가 다른 집합의 존재를 보였습니다. 1931년 괴델은 형식화된 산술에서 증명 가능성의 한계를 논증했습니다. 1936년에 작성·투고된 튜링의 「계산 가능한 수에 관하여, 결정문제에 응용하여」는 수학적 기계의 계산 개념을 정밀하게 제시했고, 1937년 학술지에 발표되었습니다.

이 연도는 하나의 정리가 세 차례 그대로 반복되었다는 뜻이 아닙니다. 수학적 대상이 이진열에서 산술의 증명, 계산 가능한 기계로 확장·변환되었고, 각각의 연구 문제에 맞는 새로운 전제가 필요했습니다. 튜링 논문의 1936년 접수와 1937년 공식 출판을 구별하는 것도 정확한 역사 서술에 필요합니다.

19 · 읽어 보기

19. 두 문제를 직접 검산해 봅시다

문제 1. 첫 네 행의 대각선 자리 값이 1,0,1,0이라면 뒤집어 만든 열의 첫 네 값은 무엇일까요? 풀이: 0,1,0,1입니다. 이 열은 0번째 행과 0번 자리에서, 1번째 행과 1번 자리에서, 2번째 행과 2번 자리에서, 3번째 행과 3번 자리에서 다릅니다. 행의 전체 값이 우연히 뒤의 자리에서 같아지는 것은 무관합니다.

문제 2. H(D,D)=1인 경우 D(D)가 멈춘다고 결론 내릴 수 있을까요? 풀이: H의 가정에 따르면 멈춘다고 답한 것이지만 D는 바로 그 답을 받으면 무한 반복하도록 정의했습니다. H의 예측이 틀립니다. H(D,D)=0인 경우에도 D는 곧바로 종료하므로 예측이 틀립니다. 양쪽 모두 모순이라는 점이 핵심입니다.

문제 3. 정지 문제를 결정할 수 없으니 어떠한 프로그램의 종료도 검사할 수 없다는 주장을 평가해 봅시다. 풀이: 잘못된 일반화입니다. 끝나는 특정 프로그램은 실행으로 확인할 수 있고, 종료가 보장되는 제한된 프로그램들의 집합도 있습니다. 불가능한 것은 제한 없이 모든 프로그램과 입력을 다루는 범용 판정기입니다.

20 · 읽어 보기

20. 두 종류의 한계를 나란히 읽으며

칸토어의 논증은 어떤 무한 목록을 가정하더라도 그 목록의 각 행과 다른 새 이진열을 정의할 수 있음을 보입니다. 계산 이론에서 비슷한 생각은 모든 프로그램에 대해 정지 여부를 판정한다는 가정을 직접 겨냥합니다. 공통적인 구성 규칙이 있더라도 필요한 전제와 도출되는 결론은 구별해야 합니다.

이제 우리는 적어도 세 종류의 주장을 구분할 수 있습니다. 첫째, 어떤 집합은 자연수로 모두 나열할 수 없다는 주장입니다. 둘째, 어떤 대상은 유한 프로그램으로 계산할 수 없다는 주장입니다. 셋째, 어떤 구체적인 판정 문제는 모든 입력에 대해 종료하는 알고리즘으로 해결할 수 없다는 주장입니다. 첫째에서 둘째의 존재가 따라오지만 셋째에 관한 구체적 증명은 추가 구성이 필요합니다.

다음 최종 제20회에서는 괴델의 '증명의 한계'와 튜링의 '계산의 한계'를 나란히 놓겠습니다. 단지 두 이름을 연결하는 이야기를 넘어, 무엇이 증명 가능한지와 무엇을 알고리즘으로 판정할 수 있는지 수식의 뜻과 적용 조건까지 비교할 것입니다.

대각선 자리를 뒤집는 같은 형태의 구성이 집합론과 계산 이론에서 왜 서로 다른 결론을 가져올까요?

모든 무한 이진열을 번호로 나열하려 하면 어떤 한 열이 반드시 빠집니다. 칸토어의 이 대각선 구성을 프로그램 목록과 정지 문제에 적용할 때에는 무엇을 새로 가정해야 할까요? 집합의 크기와 계산 판정의 한계를 구별합니다.

맨 위로 ↑
SOURCES & EDITORIAL NOTES

학술 자료와 확인 범위

공개 원전 번역·연구기관·학술 해설의 확인 가능한 범위를 구분했습니다. 원문 전체의 직접 검독을 완료했다고 주장하지 않으며, 수업 상황과 수식의 현대적 기호화는 교육적 재구성입니다. 이미지는 출처 표기·이용 조건을 개별적으로 확인해야 합니다.

  1. 집합론의 전개 · SEP
    칸토어의 1891년 대각선 정리 관련 배경
    자료 보기 ↗
  2. Computability and Complexity · SEP
    정지 문제 및 계산 가능성의 형식적 정의
    자료 보기 ↗
  3. A. M. Turing, On Computable Numbers (1937)
    1936년 접수·1937년 출판 서지 확인; 전체 논문 교감 미수행
    자료 보기 ↗
  4. Gödel’s Incompleteness Theorems · SEP
    대각화와 자기 언급에 관한 정리 비교
    자료 보기 ↗
  5. 칸토어 초상 · Wikimedia Commons
    초상 출처 및 공개 영역 표시 확인
    자료 보기 ↗
집필 및 논리 검수: LTCT KOREA