요약

Greedy Algorithm

탐욕 알고리즘은 주어진 상황에서 최선이라고 판단되는 선택을 하기 때문에 항상 좋은 선택을 고르지는 않는다.

tree

1. 동전 거스름돈

- Pseudo-code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* 입력: 거스름돈 액수 W */
/* 출력: 거스름돈 액수에 대한 최소 동전 수 */

/* 동전 수를 위한 변수 */
change = W n500=n100=n50=n10=n1=0

/* 500원짜리 동전 수 1증가 */
while( chang >= 500){
  change = change - 500, n500++;
}
/* 100원짜리 동전 수 1증가 */
while(change >= 100){
  change = change - 100, 100++;
}
/* 50원짜리 동전 수 1증가 */
while(change >= 50){
  change = change - 50, 50++;
}
/* 10원짜리 동전 수 1증가 */
while(change >= 10){
  change = change - 10, 10++;
}
/* 1원짜리 동전 수 1증가 */
while(change >= 1){
  change = change - 1, 1++;
}
/* 총 동전 수 리턴 */
return (n500+n100+n50+n10+n1)

2. 최소 신장 트리

- Pseudo-code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
* 입력: 가중치 그래프 G=(V,E), V(절대값) = n (점의 수),
* E(절대값) = m(선분의 수)
*/

/* 출력: 최소 신장 트리 T */

while( T의 선분  < n-1 >){
  L에서 가장 작은 가중치를 가진 선분 e를 가져오고,
  e를 L에서 제거한다.
  if(선분e가 T에 추가되어 사이클이 만들어지지 않으면)
  e를 T에 추가.
}else{
  e를 버린다
}
return T

3. 마시멜로 실험

알고리즘과 심리학 실험??

마시멜로 실험
이미지: PPT 캡쳐

이 마시멜로 실험은 이후에 문제가 많다고 알려졌지만 그리디 알고리즘의 성격을 가지고 있어서 작성하였다.

정리

그리디 알고리즘 문제는 분할정복 알고리즘보다 구현하기가 수월했던것 같다. 하지만 그만큼 데이터셋이 많아졌을때 효율적이지 않다는 단점도 가지고 있다.

문제가 주어졌을때 효율적으로 해결하기 위해 상황에 맞는 알고리즘을 적용하는 능력이 중요한 것 같다.

그리디 알고리즘의 사용 예시로 AI 결정 트리 학습법을 찾아 보았다. 통계학과 데이터 마이닝, 기계학습에서 사용하는 예측 모델링 방법중 하나라고 한다. 아직 블로그에 작성하기에는 좀더 공부가 필요할 것 같다.

REFERENCEES