Algorithm
2003.04.23 11:08
[algorithm] Greedy (탐욕 기법)
조회 수 15108 댓글 0
◈ 탐욕 기법
탐욕 기법이란?
- 최적화 문제를 푸는 한가지 방법 (다른 방법도 있는가?)
- 과거나 미래는 생각하지 않고, 오직 현재의 최대 만족만을 추구 (그래서 "greedy"임)
- 입력에 대하여 단계별로 진행하며, 각 단계에서는 현재 최적이라고 판단되는 결정을 한다. (전체적으로 최적인지는 판단하지 않는다.)
- 따라서 문제에 따라 최적해 또는 근사해를 구하게 된다.
- 전체를 고려치 않고 현재만을 생각하므로 비교적 간단히 구현되며 알고리즘을 이해하기 쉽다.
탐욕 기법의 개략적 구조(control abstraction)
greedy (int n , A [ ]) {
solution = 0;
for ( i =1; i <= n ; i ++) {
x = select (A );
if (feasible (solution , x )) solution = UNION (solution , x );
}
return solution ;
}
탐욕 기법의 구성
- 탐욕 기법은 다음의 부분들로 구성되어 있다.
(1) 선택하기: 현재 상태에서 최적의 해를 구하는 부분
(2) 점검하기: 구해진 해가 주어진 문제의 조건을 만족하는지 검사하는 부분
(3) 종료하기: 원래의 문제가 모두 해결되었는지를 검사하는 부분
동전 거슬러 주기
- 문제: 가게에서 거스름 돈을 100원, 50원, 10원, 5원, 1원짜리 동전들로 거슬러 주고자 한다.
- 제약 조건: 손님들은 동전을 많이 받아 가기를 원하지 않는다.
- 탐욕 기법에 의한 해결: 87원 만들기
단계 1: 100원을 선택 (선택하기) → 87원 보다 많으므로 선택을 물림 (점검하기)
단계 2: 50원을 선택 (선택하기) → 87원 보다 적으므로 선택을 인정 (점검하기) → 이제 남은 돈은 37원
단계 3: 다시 50원을 선택 (선택하기) → 37원 보다 많으므로 선택을 물림 (점검하기)
단계 4: 10원을 선택 (선택하기) → 37원 보다 적으므로 선택을 인정 (점검하기) → 이제 남은 돈은 27원
단계 5: 다시 10원을 선택 (선택하기) → 27원 보다 적으므로 선택을 인정 (점검하기) → 이제 남은 돈은 17원
단계 6: 다시 10원을 선택 (선택하기) → 17원 보다 적으므로 선택을 인정 (점검하기) → 이제 남은 돈은 7원
단계 7: 다시 10원을 선택 (선택하기) → 7원 보다 많으므로 선택을 물림 (점검하기)
단계 8: 5원을 선택 (선택하기) → 7원 보다 적으므로 선택을 인정 (점검하기) → 이제 남은 돈은 2원
단계 9: 다시 5원을 선택 (선택하기) → 2원 보다 많으므로 선택을 물림 (점검하기)
단계 8: 1원을 선택 (선택하기) → 2원 보다 적으므로 선택을 인정 (점검하기) → 이제 남은 돈은 1원
단계 8: 다시 1원을 선택 (선택하기) → 1원과 같으므로 선택을 인정 (점검하기) → 이제 남은 돈은 0원 → 남은 돈은 0원이므로 알고리즘 끝 (종료하기)
동전 거슬러 주기를 통해서 본 탐욕 기법
- 단계별로 진행: 한 단계에서 하나의 동전을 포함.
- 선택 방법: 각 단계에서 가능한 최대의 동전을 선택하고자 시도
- 적합성 검사: 남은 돈을 넘는가를 점검
- 종료 검사: 남은 돈이 0원이면 종료.
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
1125 | Develop | SVN 초간단 사용하기 | hooni | 2014.02.28 | 7621 |
1124 | System/OS | SVN(Subversion) 설치와 설정 (sasl 인증 적용 포함) | hooni | 2014.09.11 | 5677 |
1123 | Develop | URI 인코딩, URL 인코딩 | hooni | 2013.04.23 | 18850 |
1122 | Develop | What is difference between Get, Post, Put and Delete? | hooni | 2018.02.28 | 1410 |
1121 | Etc | WM미통기 - 10. 조건부확률 | hooni | 2015.04.20 | 710 |
1120 | Develop | XE Core 1.8.18 본문 작성시 태그(html) 사라지는 버그 | hooni | 2016.04.21 | 871 |
1119 | Develop | XML, JSON, BSON, MSGPACK 장,단점 비교 | hooni | 2017.01.11 | 2249 |
1118 | Develop | ZBar 라이브러리를 이용한 바코드 스캔 앱 개발하기 | hooni | 2015.01.01 | 1629 |
1117 | Develop | [ajax] 샘플 코드와 한글처리에 대한 간단한 설명 | hooni | 2013.04.23 | 6842 |
1116 | Develop | [ajax] 이벤트 코드 생성기 작업중.. ㅋㅋ | hooni | 2013.04.23 | 7120 |
1115 | PPT | [ajax] 크로스 도메인(Cross Domain) 이슈 해결 방안 | hooni | 2013.04.23 | 21940 |
» | Algorithm | [algorithm] Greedy (탐욕 기법) | hooni | 2003.04.23 | 15108 |