알고리즘

그리디 알고리즘

Codult 2024. 1. 19. 15:21
728x90

그리디 알고리즘 (Greedy Algorithm)

매 단계마다 최적이라고 생각되는 것을 선택하는 방식으로 최종적인 값을 구해내는 알고리즘

 

1) 탐욕 선택 속성 (Greedy Choice Property)

  : 각 단계에서 최선의 선택을 했을 때 전체 문제에 대한 최적해를 구할 수 있는 경우를 뜻함.

2) 최적 부분 구조 (Optional Substructure)

  : 부분 문제의 최적해를 조합하여 전체 문제의 최적해를 구할 수 있는 경우를 뜻함.

 

* 알고리즘 과정

(i) 선택 절차 (Selection Procedure)

  : 현재 상태에서 가장 최선이라고 생각되는 해를 선택한다.

(ii) 적절성 검사 (Feasibility Check)

  : 선택한 해가 문제의 조건을 만족시키는지 확인한다. 만족시키지 않을 경우, 해당 항목은 제외된다.

(iii) 해답 검사 (Solution Check)

  : 모든 선택이 완료되면, 그 최종 선택이 문제의 조건을 만족시키는지 확인한다. 만족시킨다면 해답으로 인정된다.

 

 

예시) 특정 금액을 가장 적은 동전 갯수로 지불하기

(i) 선택 절차 - 가장 가치가 큰 동전부터 선택

(ii) 적절성 검사 - 선택된 동전의 가치가 지불할 금액보다 크다면, 다음으로 작은 동전을 선택한다.

(iii) 합이 지불할 금액과 일치하면, 문제가 해결된 것이다.

 

출처: [Java/알고리즘] 그리디 알고리즘(탐욕법, Greedy Algorithm) 이해하기

 

 

728x90