(이전까지는 욕망의 항아리만 알고있었음 ㅋ 😝)
Greedy의 사전적 정의는 "탐욕스러운, 욕심 많은" 이라는 의미를 가진다.
탐욕 알고리즘
은 결정의 순간마다 당장 눈앞에 보이는 최적의 상황만을 탐욕적으로 쫓아 최종적인 해답에 도달하는 방법이라고 한다.
간단한 예시로는 거스름돈을 돌려주는 상황을 볼 수 있다.
손님으로온 B는
4,040원
이라는 결제 금액이 나왔다. 그는 계산을 위해서5,000원
을 주었다. 이때 거스름돈은 동전의 갯수를 최소한으로 하여 달라고 하였다. 동전을 어떻게 주어야 할까?
선택 절차
적절성 검사
해답 검사
-> 500원 1개, 100원 4개, 50원 1개, 10원 1개
로 거슬러 주기
탐욕 알고리즘은 문제를 해결하는 과정에서 그 순간순간마다 최적이라 생각되는 해답(locally optimal solution)을 찾으며, 이를 토대로 최종 문제의 해답(globally optimal solution)에 도달하는 문제 해결 방식입니다. 하지만 도둑의 예와 같이 항상 최적의 결과를 보장하지는 못한다는 점을 명심해야 합니다.
예시는 간단하지만 실제 알고리즘 문제에 접했을때에는 어떻게 접근해야하는 아직까지는 어색하고 어렵다...
개념만 이해한다고 되는것은 아닌것같고 문제를 자주 접하고 생각하는 연습을 계속 해야겠다.