콘텐츠로 이동

간접 추론 (Indirect Reasoning)

개요

간접 추론은 명제의 대우(contrapositive)와 모순(contradiction)의 논리를 활용하여 복잡한 문제를 해결하는 기법입니다. 직접 증명이 어려운 경우, 간접적인 방법으로 접근하면 더 효과적인 결과를 얻을 수 있습니다.

연구(Zhang et al., 2024)에 따르면, 간접 추론은 직접 추론보다: - 사실 추론 정확도 27.33% 향상 - 수학적 증명 정확도 31.43% 향상

핵심 개념 설명

1. 모순에 의한 증명 (Proof by Contradiction)

원리: - 명제 P를 증명하기 위해, P의 부정(¬P)이 거짓임을 보입니다 - ¬P → False라면, P는 참입니다

한글 예제:

명제: "√2는 무리수이다"

증명:
1. 가정: √2가 유리수라고 가정 (모순 시작)
2. √2 = a/b (a, b는 서로소인 정수)
3. 2 = a²/b²
4. a²은 짝수 → a도 짝수
5. a = 2k이면, 4k² = 2b² → b도 짝수
6. 모순! a와 b가 모두 짝수라면 서로소가 아님
7. 따라서 √2는 무리수

2. 대우 활용 (Contrapositive Logic)

원리: - "P이면 Q" ≡ "¬Q이면 ¬P" (논리적으로 동치) - 원명제가 증명 어려우면 대우를 증명합니다

한글 예제:

원명제: "x > 0이면, x² > 0이다"
대우: "x² ≤ 0이면, x ≤ 0이다"

대우가 쉬운 경우: "음수의 제곱은 양수이다"를 증명하는 것이
직접 증명보다 더 간단할 수 있습니다

3. 배제법 (Proof by Elimination)

여러 가능성 중 거짓인 것들을 제거하여 참인 것을 찾습니다.

한글 논리 퍼즐 예제:

문제:
철수, 영희, 민수 중 누가 도둑인가?

조건:
- 도둑은 거짓을 말한다
- 철수: "영희가 도둑이다"
- 영희: "민수가 도둑이다"
- 민수: "영희는 도둑이 아니다"

풀이:
1. 도둑이 영희라면: 영희가 거짓 말하므로 민수가 도둑이어야 함 (모순)
2. 도둑이 민수라면: 민수가 거짓 말하므로 영희가 도둑이어야 함 (모순)
3. 도둑이 철수라면: 철수가 거짓 말하므로 영희는 도둑 아님 (일관성)
   - 영희(진실): 민수가 도둑이다 (거짓) ✓
   - 민수(진실): 영희는 도둑 아니다 ✓

정답: 철수가 도둑

프롬프팅 템플릿

단계별 간접 추론 프롬프트

주어진 명제를 다음 단계로 증명하시오:

Step 1: 증명할 명제와 조건을 명확히 정리하시오
- 명제:
- 주어진 조건:

Step 2: 조건들을 통합하여 핵심 요소를 정의하시오
- 핵심 요소:

Step 3: 단계별로 논리적으로 검토하시오
- 가능한 모든 경우를 고려했는가?
- 모순되는 경우가 있는가?
- 명제의 부정이 불가능한가?

결론: 따라서 [명제]는 참이다/거짓이다

코드 예제

Claude 4.6을 이용한 간접 추론

from anthropic import Anthropic

client = Anthropic()

prompt = """
수학 명제를 증명하시오:
"모든 완전제곱수는 4로 나눈 나머지가 0 또는 1이다"

다음 단계를 따르시오:
1. 조건을 명확히 정리
2. 모든 경우를 나누어 분석
3. 각 경우에서 나머지 계산
4. 결론 도출
"""

response = client.messages.create(
    model="claude-4.6",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": prompt}
    ]
)

print(response.content[0].text)

o4-mini를 이용한 복잡한 증명

prompt = """
논리 퍼즐을 풀이하시오:

4명(A, B, C, D)이 있고, 한 명만 진실을 말합니다.
- A: "C가 진실을 말한다"
- B: "나는 거짓을 말한다"
- C: "A나 B가 진실을 말한다"
- D: "C는 거짓을 말한다"

모순에 의한 증명 기법을 사용하여 누가 진실을 말하는지 찾으시오.
각 경우에 대해 모순이 발생하는지 검토하시오.
"""

response = client.messages.create(
    model="o4-mini",
    thinking={"type": "enabled", "budget_tokens": 10000},
    messages=[
        {"role": "user", "content": prompt}
    ]
)

실전 응용: 한글 퍼즐 풀기

문제

한국에서 서울, 부산, 대구, 인천 중 한 도시에 신공항이 건설됩니다.

조건:
1. 부산의 의원: "부산에 지어진다"
2. 대구의 의원: "부산이나 인천에 지어진다"
3. 인천의 의원: "대구에 지어진다"
4. 서울의 의원: "부산에 지어진다"

각 조건은 50% 정확도입니다 (참 또는 거짓).

간접 추론으로 정답을 찾으시오.

풀이 과정

단계별 풀이

  1. 각 경우(서울/부산/대구/인천)를 가정
  2. 각 경우에서 조건들이 몇 개 만족되는지 확인
  3. 정확히 2개 조건이 참인 경우가 정답
  4. 모순되지 않는 유일한 해를 찾음

효율적 사용 방법

💡 간접 추론이 효과적인 경우:

  • 논리 퍼즐이나 수수께끼
  • 복잡한 수학적 증명
  • 다중 조건의 제약 만족 문제
  • 범죄 수사, 진범 찾기

💡 간접 추론이 비효율적인 경우:

  • 단순 계산 문제
  • 명확한 정답이 있는 문제
  • 단계가 많은 복잡한 추론

성능 비교

직접 추론 vs 간접 추론

작업 유형         | 직접 추론 | 간접 추론 | 개선율
수학 정리 증명    |  65%     |  85%    | +20%
논리 퍼즐        |  52%     |  78%    | +26%
사실 추론        |  70%     |  97%    | +27%
복잡한 경우의수  |  48%     |  73%    | +25%

핵심 정리

  • 간접 추론은 모순과 대우 논리를 활용합니다
  • 직접 증명이 어려울 때 더 효과적입니다
  • 25-30% 높은 정확도를 달성할 수 있습니다
  • 논리 퍼즐, 수학 증명에 특히 효과적입니다
  • 단계별 템플릿을 활용하면 신뢰성이 높아집니다

참고 자료

학습 확인

  • 모순에 의한 증명 방법 이해
  • 대우 논리와 원명제의 동치성 이해
  • 배제법으로 논리 퍼즐 풀 수 있음
  • 한글 퍼즐 문제 해결 가능
  • 적절한 경우에 간접 추론 선택 가능