더북(TheBook)

1.7 탐욕 접근법

탐욕 접근법(greedy approach)은 최적화 문제를 푸는 방법 중 하나로, 완전한 풀이가 만들어질 때까지 부분적으로 구축된 풀이를 확장해가며 일련의 단계를 밟아가는 접근법이다. 단계마다 문제에서 주어진 제약 조건 안에서 가장 유리한 것을 선택하는 것이 이 전략의 핵심이다. 이렇게 매 단계에서 최선의 방안을 “탐욕적으로” 고르는 방식의 밑바탕에는 국소적으로 최적화된 모든 선택을 모으면 전체 문제에 대한 (전역적인) 최선의 해가 만들어지리라는 바람이 깔려 있다. 이런 단세포적 접근법이 먹힐 수도 있지만 그렇지 않을 수도 있다.

탐욕 접근법으로 풀 수 있는 퍼즐은 별로 좋은 퍼즐이라고 할 수 없다. 좋은 퍼즐은 대체로 그런 직선적인 방법으로 풀기에는 까다로운 편이다. 그런데도 탐욕 알고리즘으로 풀 수 있는 퍼즐도 있다. 그런 경우, 알고리즘을 설계하는 것은 별로 어렵지 않다. 탐욕 접근법으로 진정 최적화된 풀이를 구할 수 있다는 것을 증명하는 것이 오히려 더 어렵다. 다음과 같은 퍼즐을 예로 풀어보자.

공격하지 않는 킹 8 × 8 체스판에 어떤 킹도 다른 킹을 공격할 수 없도록 - 수평, 수직, 대각선 방향으로 옆 칸에 있지 않도록 - 킹을 최대한 많이 배치할 방법을 구하라.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.