가장 어려운 논리 퍼즐
TED의 설명영상, 한국어 자막을 지원한다.
1. 개요
'''가장 어려운 논리 퍼즐(The Hardest Logic Puzzle Ever)''', 비 공식적으로는 세명의 신 수수께끼라고도 불린다.
천사와 악마, 기사와 건달류의 문제를 저서 <이 책의 제목은 무엇인가?>를 통해서 발표한 적 있던 논리학자 레이먼드 스멀리안(Raymond Smullyan)이 처음 아이디어를 고안했으며, John McCarthy가 수정을 거치고, 미국의 철학자이자 논리학자 조지 볼로스(George Boolos)가 이를 1996년 서적 The Harvard Review of Philosophy을 통해 발표한 논리 퍼즐이다.
2. 문제
세명의 신이 존재한다. 이들의 이름은 '트루(True)', '폴스(False)', '랜덤(Random)' 인데[1]
무엇이 누구의 이름인지는 모른다. '트루'는 언제나 진실을 하고 '폴스'는 언제나 거짓말을 한다. '랜덤'은 완전히 무작위로 진실을 말할 때도 있고 거짓을 말할 때도 있다. 목표는 맞다/아니다 로만 대답 가능한 질문을 단 3번만 하여 세 명의 신 모두 누가 어떤 이름인지를 알아내는 것이다.[2] 신들은 우리의 언어를 알아듣지만 그들의 대답은 '예' 혹은 '아니오'의 뜻을 지닌 그들의 언어 'da/ja' 두개로만 주어지는데[3] , ja와 da중 어떤 단어가 '예'이고 어떤 단어가 '아니오'인지는 모른다.
3. 해답
3.1. 질문의 방식
우선은 ja와 da중 어느게 참이고 어느게 거짓 인지는 알 필요가 없다. "만약 제가 [질문] 이라고 묻는 다면, 당신의 대답은 ja (혹은 da) 인가요?" 라는 식으로 질문을 조건문(if)으로 제시하면 된다. 만약 상대가 트루 혹은 폴스일 경우, 여기서 내가 질문에서 제시한 단어와 같은 단어의 대답이 돌아온다면 그 질문에 대한 긍정이고, 반대로 질문에서 제시한 단어와 반대의 단어가 대답으로 돌아온다면 그 질문에 대한 부정이다.[4]
예를들어 '''"만약 제가 '2+2는 4인가'라고 묻는다면, 당신의 대답은 ja 인가요?"'''라고 질문했다고 치자.
- 만약 ja가 '맞다'이고 da가 '아니다'라는 뜻일 경우
- 질문한 상대가 '트루'일 경우: '2+2=4?'라고 질문할 경우 ja(참)이라 대답할테고, 그 질문에 대한 답이 ja 냐고 대답할 것이냐는 질문도 마찬가지로 문제없이 ja라고 대답할 것 이다.
- 질문한 상대가 '폴스'일 경우: 폴스에게 '2+2=4?' 라고만 질문했다면 거짓말로 da(아니다) 라고 대답할 것 이다. 고로 '그 질문에 ja(맞다)라고 대답할 것 이냐?' 라는건 폴스 입장에선 사실이 아니지만, 이 질문에 대한 답도 거짓말을 해야하니 사실이라고 해야한다. 따라서 '그 질문에 ja라고 대답할 것 이냐'라는 질문에서는 긍정인 ja 라고 답한다.
- 만약 da가 '맞다'이고 ja가 '아니다'라는 뜻일 경우
- 질문한 상대가 '트루'일 경우: 자신은 '2+2=4?'라는 질문에는 da(참) 이라고 대답할 것이기 때문에, 그 질문에 대한 답이 ja(아니다) 냐는 인간의 질문에는 ja(아니다) 라고 대답할 것 이다.
- 질문한 상대가 '폴스'일 경우: 폴스는 '2+2=4?'라는 질문에는 거짓말로 ja(아니다) 라고 대답할 것 이기에, '그 질문에 대한 답이 ja(아니다) 인가?'라는 인간의 질문에는 만약 진실되게 말했다면 참(da) 이라고 하겠지만, 그 질문에서 마저 거짓말을 해야하니 최종적으로는 ja(아니다) 라고 할 것 이다.
- 만약 da가 '맞다'이고 ja가 '아니다'라는 뜻일 경우
- 질문한 상대가 '트루'일 경우: 자신은 '2+2=4?'라는 질문에는 da(참) 이라고 대답할 것이기 때문에, 그 질문에 대한 답이 da(맞다) 냐는 인간의 질문에도 da(맞다) 라고 대답할 것 이다.
- 질문한 상대가 '폴스'일 경우: 폴스는 '2+2=4?'라는 질문에는 거짓말로 ja(아니다) 라고 대답할 것 이기에, '그 질문에 대한 답이 da(맞다) 인가?'라는 인간의 질문에는 만약 진실되게 말했다면 아니다(ja) 라고 하겠지만, 그 질문에서 마저 거짓말을 해야하니 최종적으로는 da(맞다) 라고 할 것 이다.
- 만약 ja가 '맞다'이고 da가 '아니다'라는 뜻일 경우
- 질문한 상대가 '트루'일 경우: '2+2=4?'라고 질문할 경우 ja(참)이라 대답할테고, 그 질문에 대한 답이 da(아니다) 냐고 대답할 것이냐는 질문에는 da(아니다)라고 대답할 것 이다.
- 질문한 상대가 '폴스'일 경우: 폴스에게 '2+2=4?' 라고만 질문했다면 거짓말로 da(아니다) 라고 대답할 것 이다. 고로 '그 질문에 da(아니다)라고 대답할 것 이냐?' 라는건 폴스 입장에선 사실이지만, 이 질문에 대한 답도 거짓말을 해야하니 사실이 아니라고 해야한다. 따라서 '그 질문에 da라고 대답할 것 이냐'라는 질문에서는 부정인 da 라고 답한다.
물론 이 방법은 '랜덤'에게는 통하지 않는다. 따라서 누가 '랜덤'이 아닌지를 알아내는 것을 먼저 해야한다.
3.2. 누가 랜덤이 아닌지 알아내기
- 첫번째 질문: 중간에 있는 신에게 "만약 제가 당신 왼쪽에 있는 신이 '랜덤'이냐고 묻는다면, 당신의 대답은 'ja'인가요?"라고 질문하기
ja라는 대답이 돌아왔다는 가정에서는 오로지 2가지 경우의 수만 존재한다.
1.이미 내가 질문을 한 중간에 있는 신이 랜덤이라서 방금 돌아온 대답은 아무런 의미가 없는 경우
2. 가운데 있는 신이 트루 혹은 폴스이며, (질문에 넣은 것과 같은 단어가 대답으로 돌아왔다면 조건문의 질문이 참이라는 뜻이므로) 왼쪽에 있는 신은 랜덤인게 맞는 경우
물론 이 2개의 경우의 수중에서 어떤게 맞는 건지 아직은 알 수 없지만, 일단 이 질문에서 대답이 ja로 돌아왔다는 것 자체만으로도 오른쪽에 있는 신이 랜덤일 경우의 수는 없다는 것 이다. 같은 논지에서, 만약 대답이 'da' 였다면 반대로 왼쪽에 있는 신이 랜덤이 아니란걸 알 수 있다.
이해를 돕기 위해 추가 설명하자면 이 질문에서 있을 수 있는 경우의 수는 내가 질문한 그 가운데 있는 신은 랜덤일 경우거나, 혹은 트루/폴스일 경우 단 2개의 경우의 수 밖에 없다. 트루/폴스일 경우 1번 목차에서 나온 질문법을 통해서 상대가 트루인지 폴스인지 불확실해도 확실하게 진실을 알 수 있으니 랜덤이 오른쪽에 있는데 ja로 대답하거나, 랜덤이 왼쪽에 있는데 da로 대답할리가 없다. 그나마 질문에 거짓말을 할 가능성이 존재하는게 바로 가운데 있는 그 신이 '랜덤'이여서 50%의 확률로 거짓된 답변으로 돌아오는 경우의 수 뿐인데, 내가 질문을 한 가운데 있는 신이 랜덤이라는 시점에서 이미 왼쪽 오른쪽은 랜덤이 아니라는 말이 된다. 따라서 두 경우의 수 모두 어느쪽이 확실하게 랜덤이 아닌지를 알아낼 수 있다.
이 첫번째 질문을 통해. 1차적으로 누가 랜덤이 아니라고 확신할 수 있는지 알 수 있다.
3.3. 랜덤이 아닌 신에게 질문하기
2번 목차의 방법을 통해 랜덤이 아니라고 확정된 왼쪽 혹은 오른쪽에 있던 신에게 이렇게 질문한다.
- 두번째 질문: "만약 제가 당신에게 <당신은 '트루'입니까?> 라고 묻는다면 'ja'라고 대답할 것 입니까?"
똑같이 같은 신에게, 이번엔 가운데에 있는 신의 정체를 물어본다.
- 세번째 질문: "만약 제가 당신에게 <가운데 있는 신은 '랜덤'입니까?> 라고 묻는다면 'ja'라고 대답할 것 입니까?"
3.4. 다른 풀이
위와 같은 분석을 보고 생각한다면, 두 번째 질문과 세 번째 질문이 바뀌어도 된다는 것을 알 수 있다.
랜덤이 누구인지와 질문하는 신의 정체 (트루 혹은 폴스) 를 알아내는 순서가 바뀌어도 되기 때문이다.
- '랜덤이 아니라고 확정된 신에게 두번째 질문: "만약 제가 당신에게 <가운데 있는 신은 '랜덤'입니까?> 라고 묻는다면 'ja'라고 대답할 것 입니까?"
ja라는 답변이 돌아오면 가운데 있는 신이 랜덤이란걸 알 수 있으니 자동적으로 남은 한명이 또다른 트루/폴스일 것 이고, da 라는 답변이 돌아오면 가운데 있는 신은 또다른 트루/폴스인 것을 알 수 있다. 물론 이와 동시에 남은 한명도 랜덤이란걸 알 수 있다.
고로 여기까지 왔으면 이 상황에서는 랜덤이 누구인지, 그리고 남은 2명이 트루/폴스 인지 알고있는 상태이다. 따라서 마지막으로 할 일은 구체적으로 둘 중 누구 한명이 트루나 폴스냐를 밝혀내는 것 이다. 하나만 밝혀내도 자동적으로 남은 한명의 정체까지 알 수 있다.
- 또다른 트루 혹은 폴스 둘 중 하나인 신에게 질문: "만약 제가 당신에게 <당신은 '트루'입니까?> 라고 묻는다면 'ja'라고 대답할 것 입니까?"