3월 7일-그리디

Yullgiii·2024년 3월 7일
0
post-thumbnail

그리디 알고리즘과 동적 계획법 비교

그리디 알고리즘과 동적 계획법(Dynamic Programming, DP)은 최적화 문제를 해결하기 위한 대표적인 전략들이다. 두 방법은 문제를 해결하는 접근 방식에서 근본적인 차이를 가진다.

그리디 알고리즘

  • 정의: 그리디 알고리즘은 매 선택에서 가장 최적이라고 생각되는 것을 선택해 나가는 방식이다. 이 방식은 전체를 고려하지 않고, 각 단계에서의 최선의 해결책만을 추구한다.

  • 특징:

    • 각 단계에서의 최적의 해결책을 찾기 때문에, 계산 속도가 빠르다.
    • 모든 문제에 적용할 수 있는 범용적인 방법은 아니며, 문제에 따라 그리디 방식이 최적의 해를 보장하지 않을 수 있다.
  • 적용 사례: 화폐 거스름돈 문제, 최소 신장 트리(Minimum Spanning Tree), 크루스칼(Kruskal) 알고리즘, 프림(Prim) 알고리즘 등

동적 계획법 (Dynamic Programming)

  • 정의: 동적 계획법은 복잡한 문제를 재귀적으로 분할하여, 작은 문제의 답을 메모리에 저장함으로써 중복 계산을 줄이는 방식이다. 이 방식은 각 하위 문제의 해결책을 기반으로 전체 문제의 최적 해결책을 구한다.

  • 특징:

    • 복잡한 문제를 간단한 하위 문제로 나누어 접근한다는 "분할 정복"의 개념을 활용한다.
    • 하위 문제의 결과를 저장해 두었다가 재활용(메모이제이션)함으로써, 연산 속도를 향상시킨다.
    • 대부분의 경우에 최적의 해를 찾을 수 있다는 이점이 있다.
  • 적용 사례: 피보나치 수열, 배낭 문제(Knapsack Problem), 최장 공통 부분 수열(Longest Common Subsequence), 최단 경로 찾기(Dijkstra's Algorithm) 등

비교

  • 접근 방식:

    • 그리디 알고리즘은 매 순간 최적이라고 생각되는 선택을 하여 문제를 해결한다.
    • 동적 계획법은 전체 문제를 작은 문제로 나누어 해결한 뒤, 이를 합쳐 전체 문제의 최적 해결책을 도출한다.
  • 효율성:

    • 그리디 알고리즘은 특정 문제에 대해 빠른 해결책을 제공하지만, 항상 최적의 해를 보장하지는 않는다.
    • 동적 계획법은 하위 문제의 중복 계산을 방지함으로써, 많은 최적화 문제에서 최적의 해를 보장한다.
  • 사용 사례: 그리디 알고리즘은 문제마다 그 적용 가능 여부를 분석해야 하며, 동적 계획법은 메모리를 추가로 사용하여 넓은 범위의 문제에 대한 최적의 해를 찾는 데 적합하다.

결론

그리디 알고리즘과 동적 계획법은 각각의 문제에 대해 적절한 해결 방법을 선택하여 사용해야 한다. 그리디 알고리즘은 구현이 간단하고 빠르게 해를 찾을 수 있는 반면, 동적 계획법은 보다 복잡한 문제에 대해 최적의 해를 찾는 데 유리하다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글