SAFFY
Greedy알고리즘
E재HO
2022. 8. 28. 18:39
그리디 알고리즘은 특정 알고리즘을 구현하는 틀이나 방식이 정해져있지 않다. 그냥 그 문제를 보고 최선의 해결책을 떠올려서 믿고 가는 것이다.
맞는지 틀린지 검증해볼 방법은 직접 반례를 구성해보는 것이다. 그럼에도 몰랐던 반례가 튀어 나올 수 있고 그래서 생각을 잘해야하는 문제다.
대표적으로 분할가능한 배낭문제, 회의실 배정 문제 등이 있다.
분할가능한 배낭 문제는
배낭을 최대한 비싼 물건들로 가득채우는 문제이다.
하지만 배낭은 넣을 수 있는 무게가 정해져있기때문에 제일 가성비가 좋은 물건들로 채워야한다.
가성비 좋은 물건을 고른다는 행위 자체가 그리디한 접근방식이며 이게 그리디 알고리즘이다.
즉, 그림의 맨 밑줄을 선택해서 배낭을 채워야하는 것이다.
하지만 이런 접근 방법은 0-1배낭 문제에선 통하지 않는다. 따라서 상황을 잘 고려해서 코드를 짜야 한다.