1 minute read

그리디 알고리즘

  • 그리디 알고리즘 글로벌 최적을 찾기 위해 각 단계에서 로컬 최적의 선택을 하는 휴리스틱 문제 해결 알고리즘 눈 앞의 이익만을 좇는 알고리즘 최적화 문제를 대상으로 하며 최적해를 찾을 수 있으면 그것을 목표로 삼고, 찾기 어려운 경우에는 주어진 시간 내에 그런대로 괜찮을 해를 찾는 것을 목표로 삼음 우선순위 큐 자체가 그때그때 최소, 최대 값 추출하기 때문에 그리디에 어울리는 대표적인 자료구조 그리디 문제 대부분은 우선순위 큐 활용해 풀이
    • 잘 작동하는 문제 탐욕 선택 속성과 최적 부분 구조를 동시에 갖고 있음
      • 탐욕 선택 속성 앞의 선택이 이후 선택에 영향을 주지 않는 것을 말함 선택을 다시 고려하지 않음
      • 최적 부분 구조 문제의 최적 해결 방법이 부분 문제에 대한 최적 해결 방법으로 구성되는 경우 DP 와 비교되지만 서로 풀 수 있는 문제의 성격이 다르며 알고리즘의 접근 방식 또한 다름
    • 사용 예
      • 배낭 문제 짐을 쪼갤 수 있냐 없냐에 따라 그리디/DP 로 해결 단가가 높은 짐부터 차례대로 채워나가는 방식으로 해결
      • 동전 바꾸기 문제 이전 액면의 배수 이상/이하 면 그리디/DP 큰 동전 부터 차례대로 채워나가는 방식으로 해결
      • 가장 큰 합 노드를 계속 더해가다가 마지막에 가장 큰 합이 되는 경로 찾기 문제 간선으로 연결된 2가지 선택지 중 더 큰 수를 더해나가도 트리가 정렬되어 있지 않기 때문에 불가능
    • DP 와의 차이 DP 가 하위 문제에 대한 최적의 솔루션을 찾은 다음 이 결과들을 결합한 정보에 입각해 전역 최적 솔루션 선택 그리디는 각 단계마다 로컬 최적해를 찾는 문제로 접근해 문제를 더 작게 줄여나는 형태 서로 반대방향