[알고리즘] 그리디 Greedy Algorithm
1. Divide and Conquer
- 같은 일을 반복할 수 있음
- bottom -> top
2. Dynamic progamming
1) Optimal substructure
: Problem에 대한 최종 Solution은 Sub problem에 대한 Optimal Substructure (최적 문제 해결 방법)으로 구성
문제의 최적해가 부분문제의 최적해로 구성된 것을 일컫는다.
쉽게 말해서 전체 문제의 답은 서브 문제의 답으로 구성된다는 것
2) Overlapping problems
테이블에 저장해두고 자주 봄
중복 사용하니까 - overlap.
[알고리즘] Dynamic Programming (동적계획법)
Dynamic Programming 1. 개요 한국어로 번역하면 동적 계획법 혹은 동적 프로그래밍. 말이 좀 이상하게 붙었는데, 프로그래밍이 아니고 테이블을 붙이면 이해가 빠르다. 즉 dynamic table을 만들어서 계산
jangu5000.tistory.com
- 같은 일을 반복x 한번만 함 (- list에 저장하면서 진행)
- 재 계산하는 일이 없으므로 divide and conquer보다 빠름 (?)
- top -> down
>문제
1. Matrix Chain Multiplication: O(n^3) (정확히는 세타)
2. Longest common subsequence: O(mn)
3. Optimal binary search trees : O(n^3) - 다루진 않았음.
3. Greedy Algorithm
: 탐욕 알고리즘이란 매순간 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 최적해에 도달하는 기법
- local optimal한 해만 채워 나가는 문제 해결법 (global 한 해를 생각하는게 아님)
- Greedy Choice Property : 앞의 선택이 이후의 선택에 영향을 주지 않는다.
내가 global한 그림 따위는 집어치우고
오직 locally optimal 선택만을 하는데
그게 모아보니 globally optimla 한 (!!) 특성을 가진다는 것이다.
2. Optimal Substructure : 문제에 대한 최종 해결 방법은 부분 문제에 대한 최적 문제 해결 방법으로 구성
> 탐욕 알고리즘 문제를 해결하는 방법
- 선택 절차(Selection Procedure): 현재 상태에서의 최적의 해답을 선택한다.
- 적절성 검사(Feasibility Check): 선택된 해가 문제의 조건을 만족하는지 검사한다.
- 해답 검사(Solution Check): 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아가 위의 과정을 반복한다.
> 예시
동전 거스름돈
740원 - 500원, 50원, 10원
10원짜리 740개보다는 500원1개 (240원 거스름돈) - 50원 4개(40원 거스름돈) - 10원 4개
1. 선택 절차 : 500원 선택
- 거스름돈의 동전 개수를 줄이기 위해 현재 가장 가치가 높은 동전을 우선 선택한다.
2. 적절성 검사 :
- 1번 과정을 통해 선택된 동전들의 합이 거슬러 줄 금액을 초과하는지 검사
- 초과하면 가장 마지막에 선택한 동전 삭제, 1번으로 돌아가 한 단계 작은 동전을 선택
3. 해답 검사
- 선택된 동전들의 합 거슬러 줄 금액과 일치하는지 검사
- 액수 부족하면 1번 과정부터 다시 반복
참고 블로그 :
[알고리즘] 탐욕 알고리즘(Greedy Algorithm) - 하나몬
❗️탐욕 알고리즘(Greedy Algorithm)이란? Greedy는 ‘탐욕스러운, 욕심 많은’ 이란 뜻이다. 탐욕 알고리즘은 말 그대로 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에
hanamon.kr
https://jangu5000.tistory.com/entry/알고리즘-Greedy-Algorithm-그리디-알고리즘
[알고리즘] Greedy Algorithm (그리디 알고리즘)
Greedy Algorithm 1. 개요 말 그대로 탐욕적으로 푸는거. 탐욕적이라는 말이 암시하듯 문제를 풀고자 하는 욕망이 너무 강한 나머지 (;;) global한 해를 생각하는게 아니고 locally optimal한 해만 채워 나가
jangu5000.tistory.com