자료구조와 알고리즘/그리디
그리디(greedy) 알고리즘 탐욕법
juwanseo
2025. 3. 22. 15:00
그리디 알고리즘이란?
➡️현재 상태에서 보는 선택지가 전체 선택지 중 최선의 선택지라고 가정하는 알고리즘
그리디 알고리즘 3단계
- 해 선택 : 현재 상태에서 가장 최선이라고 생각되는 해를 선택
- 작잘상 감시 : 현재 선택한 해가 전체 문제의 제약 조건에 벗어나지 않는지 검사
- 해 검사 : 현재까지 선텍힌 해 집합이 전체 문제를 해결할 수 있는지 검사
➡️전체 문제 해결 못할시 다시 1단계로 가서 같은 과정 반복
그리디 알고리즘의 장점
- 단순성: 그리디 알고리즘은 직관적이고 이해하기 쉬워서 구현이 간단합니다.
- 속도: 매 단계에서 최적의 선택을 하므로 계산 속도가 빠릅니다.
- 효율성: 많은 문제에서 그리디 알고리즘은 적절한 해를 빠르게 제공합니다.
그리디 알고리즘의 단점
- 최적해 보장 불가: 그리디 알고리즘은 항상 최적해를 보장하지 않습니다. 즉, 그리디 알고리즘으로 풀 수 없는 문제가 존재합니다.
- 문제 특성: 그리디 알고리즘이 최적해를 보장하려면 문제 자체가 그리디 특성을 가져야 합니다.
<우선순위 큐 : 그리디 알고리즘에서 자주 사용하는 자료구조>
[PriorityQueue]
from queue import PriorityQueue
#생성방법
myqueue = PriorityQueue()
put(data) #원소 추가하기
get() #큐에서 데이터 꺼내기
qsize() #큐 사이즈 가져오기
empty() #큐가 비어있는지 확인하기