모든 문제를 한 번에 해결하는 방법은 없다

개발자든 연구자든 모든 문제를 단번에 해결하는 방법을 찾고 싶어 한다.
하지만 여러 분야의 이론은 그런 기대가 잘못된 접근이라고 말한다.
어떤 기술도 어떤 알고리즘도 모든 상황에서 항상 잘 작동하지 않는다.

대표적인 예가 No Silver BulletNo Free Lunch이다.
두 이론은 서로 다른 분야에서 나왔지만 같은 결론을 말한다.
비슷한 내용은 다른 분야에서도 반복된다.


이들은 모두 이렇게 말한다.

단일 도구로 모든 문제를 해결하려 하지 마라.

내용은 달라도 대부분의 정리는 다음의 구조를 따른다.

  • 첫째. 해결하려는 대상에는 제거할 수 없는 제한이 있다.
  • 둘째. 어떤 방법도 평균적으로 항상 더 낫지는 않다.
  • 셋째. 결국 무엇을 선택하고, 무엇을 포기할지 정해야 한다.

분야별 정리

정리명분야핵심 내용
No Silver Bullet (1986) 소프트웨어 개발 복잡함은 사라지지 않는다.
No Free Lunch (1997) 최적화 하나의 알고리즘이 항상 우수할 수 없다.
CAP 정리 (2002) 분산 시스템 일관성, 가용성, 분리 허용성을 동시에 충족할 수 없다.
Arrow 정리 (1951) 집단 선택 모든 조건을 만족하는 집계 방법은 없다.
Gödel 정리 (1931) 수학 증명할 수 없는 참이 반드시 존재한다.
Halting Problem (1936) 계산 이론 정지 여부를 판단하는 일반 알고리즘은 없다.
Bias–Variance Trade-off 머신러닝 편향과 분산은 동시에 줄일 수 없다.
Shannon 압축 한계 (1948) 정보 처리 모든 데이터를 항상 더 짧게 만들 수는 없다.
  • No Silver Bullet
    소프트웨어 개발에서 단숨에 생산성을 높이는 방법은 없다.
    효율을 높이는 기술은 존재하지만, 반복적인 개선 없이는 큰 변화가 생기지 않는다.
  • No Free Lunch
    어떤 최적화 알고리즘도 모든 문제에 대해 평균적으로 항상 우수할 수는 없다.
    알고리즘의 성능은 문제마다 다르다.
  • CAP 정리
    분산 시스템에서 일관성, 가용성, 분리 허용성 중 세 가지를 모두 만족할 수 없다.
    네트워크 장애가 발생하면 하나는 포기해야 한다.
  • Bias–Variance Trade-off
    모델이 복잡하면 훈련 데이터에는 잘 맞지만, 새로운 데이터에는 민감하게 반응해 성능이 떨어질 수 있다.
    단순한 모델은 일관되지만 오차가 크다.
    결국 완벽한 모델은 없다.

다른 정리들

  • Arrow 정리
    선거 방식에서 비독재, 만장일치, 독립성, 완전성 같은 조건을 모두 만족하는 집계 방식은 없다.
  • Gödel 정리
    표현력이 충분한 수학 체계에는 참이지만 증명할 수 없는 명제가 반드시 존재한다.
  • Halting Problem
    모든 프로그램의 정지 여부를 판별하는 알고리즘은 존재하지 않는다.
  • Shannon 압축 한계
    무손실 압축에서 모든 데이터를 항상 줄일 수는 없다.
    어떤 입력은 오히려 길어질 수밖에 없다.

 

이 이론들은 모두 불가능한 것이 있다는 사실을 알려 준다.
하지만 단순히 포기하라는 의미는 아니다.

모든 조건을 만족하는 방법은 없다.
그래서 우리는 상황에 따라 선택하고 제한을 감수해야 한다.
불가능을 인정하면 가능한 것의 범위가 드러난다.
무엇을 얻기 위해 무엇을 포기할지 판단하는 기준이 생긴다.

+ Recent posts