관리 메뉴

CASSIE'S BLOG

DP (Dynamic Programming) vs 그리디 알고리즘 본문

PROGRAMMING/기타

DP (Dynamic Programming) vs 그리디 알고리즘

ITSCASSIE1107 2023. 9. 9. 05:12

동적 계획법의 두가지 방법론

메모이제이션(하향식 방법)

메인 문제를 분할하면서 해결하는 방법이다.
태뷸레이션(상향식 방법)

가장 작은 문제를 먼저 해결하고 최종적으로 메인 문제를 해결하는 방법이다.


그리디 알고리즘의 이해
그리디 알고리즘은 동적 계획법을 보완하는 개념이다

브루트 포스, 동적 계획법 그리고 그리디 알고리즘을 비교한다


위 그림을 참고해 서울 → 부산을 가는 최소 경로를 구해보자

브루트 포스, 동적 계획법, 그리고 그리드 알고리즘을 토대로 구해볼 것이다



브루트 포스

서울에서 부산으로 갈 수 있는 모든 해를 구한다(왼쪽부터)

250km + 100km / 80km / 120km

200km + 100km / 80km / 120km

300km + 100km / 80km / 120km

위 9개의 값 중 최소값인 280km를 결과로 반환한다



동적 계획법

1항: 서울 → 대구 경로에서 최소값을 기록한다

= 250km, 200km, 300km 중 최소값을 기록

→ dp[1] = 200km



2항: 서울 → 부산 경로까지 최소값을 기록한다

= 200km+100km, 200km+80km, 200km+120km 중 최소값을 기록

→ dp[2] = 280km



그리디 알고리즘
250km / 200km / 300km 중 최소값을 구한다

100km / 80km / 120km 중 최소값을 구한다

최소값을 모두 더한다 = 280km

→ 이 문제의 경우 세가지 방법 중 가장 효율적인 방식이라 할 수 있다

그리디 알고리즘의 적용
그리디 알고리즘은 현재의 선택이 미래에 영향을 주지 않을 때 사용할 수 있다

위 문제의 경우 서울 → 대전의 1번 경로를 선택해도 대전 → 부산의 길 선택에 영향을 주는 것은 아니다매 순간의 선택이 제한조건에 영향을 주지 않을 때 순간마다 최적의 해를 구하는 경우를 알아본다

출처:

https://devyoseph.tistory.com/m/132

반응형

'PROGRAMMING > 기타' 카테고리의 다른 글

이모지 "윈도우키 + . "  (0) 2023.10.14
vs code 단축키  (0) 2023.10.14
TypeScript & MERN 시스템  (0) 2023.07.18
VS 코드 단축키  (0) 2023.06.23
논문이나 메일 쓸 때  (0) 2023.06.22