[알고리즘] 탐욕법(Greedy Algorithm)

go_go_·2022년 7월 20일
0

알고리즘

목록 보기
4/12
post-thumbnail

✔ 목차

  1. 탐욕법(Greedy Algorithm)이란?
  2. 탐욕법 적용 조건
  3. 탐욕법 예시


🔎 탐욕법(Greedy Algorithm)이란?

Greedy는 탐욕스러운, 욕심 많은이라는 뜻이다. 뜻에서 알 수 있듯이 이 알고리즘은 탐욕스럽게 가장 좋은 것만 선택하여 해결해나간다.

탐욕법(Greedy Algorithm)

  • 각 단계마다 가장 좋은 것만 선택하여 해답을 구함
  • 지금 선택이 앞으로 남은 선택에 어떤 영향을 끼칠지 고려하지 않음
  • 단계마다 하는 선택은 지역적으로 최선이지만, 모든 단계를 거쳐 최종적(전역적)으로 나온 해답은 최적이란 보장은 없음
  • 탐욕법을 적용하기 위해서 지역적으로 최적이면서 전역적으로 최적이어야함



🔎 탐욕법 적용 조건

1) 탐욕스런 선택 조건(greedy choice property)

  • 앞의 선택이 이후 선택에 영향을 주지 않음
  • 각 단계에서 가장 좋은 것을 선택하는 행위가 최적해로 가는 길

2) 최적 부분 구조 조건(optimal substructure)

  • 문제의 최적해가 부분 문제에서도 최적해
  • 전체 문제 안에 여러 단계가 있고, 모든 여러 단계에서 최적해가 도출되어야 함


📌 탐욕법 예시

탐욕법을 사용한 대표적인 알고리즘: 최소 신장 트리 구하기

📝 최소 신장 트리


📝 최소 신장 트리 구하는 알고리즘

크루스칼 알고리즘


프림 알고리즘

profile
개발도 하고 싶은 클라우드 엔지니어

0개의 댓글