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

    SMALL

    1. Greedy Algorithm이란?

    - Greedy: 탐욕스러운, 욕심 많은

    - 탐욕 알고리즘: 선택의 순간마다 당장 눈 앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법

    - 최적 해를 구하는 데에 사용하는 근사적인 방법

    - 여러 경우 중 하나를 결정할 때마다 그 순간 최적이라고 생각되는 것을 선택하는 방식 > 최종적 해답에 도달

    (지금의 선택이 앞으로 남은 선택들에 어떤 영향을 끼칠지 고려 X)

    - 그 순간에는 지역적으로 최적이라도, 지역적인 최적을 수집한 최종적(전역적)인 답이 최적이라는 보장은 없다.

    - 탐욕 알고리즘에 적용할 수 있는 문제: 지역적, 전역적 모두 최적!

     

    * 간단한 예시

    - 문제: 노드에서 가장 합이 높은 방법을 선택하는 방법

    - 그리디 알고리즘: 상황에 맞게 가장 큰 수를 고름

    Greedy Algorithm


    2. 탐욕 알고리즘을 적용하는 문제의 2가지 조건 (알고리즘 정당성 증명)

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

    - 앞의 선택이 이후의 선택에 영향을 주지 않는다.

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

    - 문제에 대한 최종 해결 방법은 부분 문제에 대한 최적 문제 해결 방법으로 구성된다. 

    - 문제에 대한 최적해가 부분 문제에 대해서도 역시 최적해

     

    - 매트로이드: 탐욕 알고리즘이 언제나 최적해를 찾을 수 있는, 어떤 문제의 특별한 구조


    3. 탐욕 알고리즘 문제 해결법

    (1) 선택 절차(Selection Procedure) 

    - 현재 상태에서의 최적의 해답 선택 (순간에서의 최적 답 선택)

     

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

    - 선택된 해가 문제의 조건을 만족하는지 검사

     

    (3) 해답 검사(Solution Check)

    - 원래의 문제가 해결되었는지 검사

    - 해결되지 않았다면, 선택 절차로 돌아가 위의 과정을 반복


    4. 탐욕 알고리즘의 장점

    (1) 근사 알고리즘으로 사용 가능

    - 탐욕 알고리즘이 항상 최적의 결과를 도출하진 않는다.

    - But 어느정도 최적에 근사한 값을 빠르게 도출할 수 있다.

    * 근사 알고리즘? 어떤 최적화 문제에 대한 해의 근사값을 구하는 알고리즘

                                > 빠른 시간에 계산이 가능하며, 어느정도 보장된 근사해를 계산할 수 있다.

    * 참고

    - 근사해를 찾는 문제는 대개 출제되지 않음.

    - 근사해를 구할 때는, 실제로 조합 탐색이나 메타휴리스틱 알고리즘이 더 좋은 답을 주는 경우 多

     

    (2) 실용적인 알고리즘

    - 매트로이드 구조를 가진 문제에 탐욕 알고리즘을 적용하면 빠른 계산이 가능하다.


    5. 그리디 알고리즘 vs 동적 계획법

    분류 그리디 알고리즘 (Greedy Algorithm) 동적 계획법 (DP: Dynamic Programming)
    설명 각 단계에서 최적의 선택을 하는 방식으로 문제를 해결 작은 문제의 해를 메모이제이션하여 중복 계산을 피하고, 이를 이용하여 큰 문제를 해결
    성립 조건 1. 탐욕 선택 속성(Greedy Choice Property)
    2. 최적 부분 구조(Optimal Substructure)
    1. 중복 부분 문제 (Overlapping Subproblems)
    2. 최적 부분 구조 (Optimal Substructure)
    중복 부분 문제 중복 부분 문제를 해결하지 않는다.  중복 부분 문제를 해결할 수 있다.
    상황 모든 상황을 계산하여 최적의 경로를 구함.
    * 모든 상황을 계산하기에 시간이 오래 걸림.
    각 단계의 상황에서 최적을 선택하여 최적의 경로를 구함.
    * 최적이 아닌 경우가 될수 있거나 혹은 풀리지 않는 문제가 될 가능성

    6. 탐욕 알고리즘의 예시

    - 매트로이드

    - 회의실 배정


    7. 참고

    - https://hanamon.kr/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%ED%83%90%EC%9A%95%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-greedy-algorithm/

    - https://loosie.tistory.com/515

    - https://adjh54.tistory.com/212

     

     

    728x90

    댓글