JIN_YOUNG _KIM 2023. 1. 4. 13:26

그리디 : 어떤한 것을 기준을 정렬을 해서 시작

1.쪼갤 수 있는(fractional) 배낭 문제에서 그리디는 100프로 최적값을 찾아 줌.

2. canonical Coin System에서 그리디는 100프로 최적값을 찾아 줌

3. Interval Scheduling 알고리즘에서는 그리디가 100프로 최적값을 찾아 줌. 

사용하기 적합할 때

1. DP 처럼 동적으로 데이터가 수시로 바뀔 때!

2. DP는 무조건 중복된 하위 문제가 존재하기에 빠르게 최적값을 구할 수가 있다.

하위 문제가 존재하나 중복되지 않은 경우에는 그리디로 빠르게 구해 볼 수도 있다.(최적값은 보장 못함)

==================================================================================

그리디가 최적값을 보장하는 경우는 문제가 Matroid 구조일 때이다.

그러나 이 Matroid를 증명하는 것이 매우 어려우므로, 그리디는 알고리즘 중에서도 매우 어려운 알고리즘으로 분류가 된

다.

고로, 위에서 언급한 최적값이 보장되는 특정 문제가 아니면 함부로 그리디를 사용하는 것이 더 좋을 것 같다.

그러나 대부분의 문제에서는 예시를 보여 준다.

그 예시에서 local optimal만을 고려하여 최종적으로 global optimal 값을 구하는 것 같을 때에는 그리디를 고려해 볼 수가

있다.(아래의 문제들을 참조)

https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

 

 

https://www.acmicpc.net/problem/13305

 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net