SlideShare a Scribd company logo
7
Most read
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 Dynamic Programming
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 1
피보나치 수열 Fibonacci numbers
• 제2항까지는 1, 제3항부터는 바로 앞의 두 수를 더한 수
(0), 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89…
재귀를 이용해 피보나치 수열의 n번째 수를 구하는 함수
int fib(int n)
{
if (n<=2)
return 1;
else
return fibo(n-1) + fibo(n-2);
}
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 2
피보나치 수열 Fibonacci numbers
• fibo(6)
fibo(2) fibo(1)
fibo(3) fibo(2)
fibo(4)
fibo(2) fibo(1)
fibo(3)
fibo(5)
fibo(2) fibo(1)
fibo(3) fibo(2)
fibo(4)
fibo(6)
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 2
피보나치 수열 Fibonacci numbers
• fibo(6)
fibo(2) fibo(1)
fibo(3) fibo(2)
fibo(4)
fibo(2) fibo(1)
fibo(3)
fibo(5)
fibo(2) fibo(1)
fibo(3) fibo(2)
fibo(4)
fibo(6)
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 2
피보나치 수열 Fibonacci numbers
• fibo(6)
fibo(2) fibo(1)
fibo(3) fibo(2)
fibo(4)
fibo(2) fibo(1)
fibo(3)
fibo(5)
fibo(2) fibo(1)
fibo(3) fibo(2)
fibo(4)
fibo(6)
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 2
피보나치 수열 Fibonacci numbers
• fibo(6)
fibo(2) fibo(1)
fibo(3) fibo(2)
fibo(4)
fibo(2) fibo(1)
fibo(3)
fibo(5)
fibo(2) fibo(1)
fibo(3) fibo(2)
fibo(4)
fibo(6)
fibo(3), fibo(4) 연산이 반복된다
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 3
동적 계획법의 등장
• 처음 진행되는 연산은 기록, 진행되었던 연산은 기록된 값을 이용해 연산 횟수를 줄인다.
메모이제이션(Memoization)
int fiboData[100] = {0,};
int fibo(int n)
{
if (n<=2)
return 1;
if (fiboData[n]==0)
fiboData[n] = fibo(n-1) + fibo(n-2);
return fiboData[n];
}
DP를 이용해 피보나치 수열의 n번째 수를 구하는 함수
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 4
개념
•문제를 풀기 위해 한 문제를 여러 개의 하위 문제로 나누어 푼 다음, 그것들을 결합하여 최종적인 목적에
도달한다.
•하위 문제를 해결한 뒤 그 해결책을 저장하여 똑같은 문제 발생 시 간단하게 해결한다.
A B
1
2
3
모든 방법을 검토한 후 가장 짧은 2번을 선택한다
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 5
장점과 단점
•모든 방법을 일일이 검토하여 최적의 해를 찾아내는 방식
•그리디 알고리즘(탐욕 알고리즘)
•모든 해를 구하지 않고 순간순간 최적의 해를 찾는 방식
•그리디 알고리즘으로 도출된 값이 항상 최적의 해라고는 할 수 없다
•동적 계획법은 그리디 알고리즘에 비해 시간이 오래 걸리나, 결과적으로 항상 효율적인 값을 구할 수 있다.
컴퓨터 공학 스터디 W1 자료구조와 알고리즘
동적 계획법 6
Q&A

More Related Content

PDF
머신 러닝을 해보자 1장 (2022년 스터디)
PDF
머신 러닝을 해보자 3장 (2022년 스터디)
PPTX
컴퓨터개론09
PPTX
03. dp easy
PDF
2021 1학기 정기 세미나 6주차
PDF
2012 Ds 01
PDF
2021 여름방학 정기 세미나 3주차
PPTX
Amugona study 1회 jjw
머신 러닝을 해보자 1장 (2022년 스터디)
머신 러닝을 해보자 3장 (2022년 스터디)
컴퓨터개론09
03. dp easy
2021 1학기 정기 세미나 6주차
2012 Ds 01
2021 여름방학 정기 세미나 3주차
Amugona study 1회 jjw

Similar to 동적 계획법 Dynamic Programming (20)

PPTX
Dynamic Programming : Step by Step
PPTX
코딩테스트 합격자 되기 C++ 15장 동적계획법에 대한 강의자료 입니다.
PPTX
피보나치 수열과 파이썬.pptx
PDF
자료구조01
PDF
자료구조01
PDF
자료구조01
PDF
PDF
알고리즘과 자료구조
PDF
DP 알고리즘에 대해 알아보자.pdf
PPTX
Dynamic Programming
PPT
3장 자동적으로 움직이는 게임 에이전트 생성법
PPT
프리젠테이션-제목없음
PDF
자료구조1보고서
PPTX
4. dynamic programming(1)
PPTX
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
PPTX
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
PDF
BOJ10547_STUDENTSKO_LIS(Longest Increasing Subsequence) Algorithm
DOCX
자료구조 Project2
PDF
BOJ10547
PPT
1.자료구조와 알고리즘(강의자료)
Dynamic Programming : Step by Step
코딩테스트 합격자 되기 C++ 15장 동적계획법에 대한 강의자료 입니다.
피보나치 수열과 파이썬.pptx
자료구조01
자료구조01
자료구조01
알고리즘과 자료구조
DP 알고리즘에 대해 알아보자.pdf
Dynamic Programming
3장 자동적으로 움직이는 게임 에이전트 생성법
프리젠테이션-제목없음
자료구조1보고서
4. dynamic programming(1)
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
BOJ10547_STUDENTSKO_LIS(Longest Increasing Subsequence) Algorithm
자료구조 Project2
BOJ10547
1.자료구조와 알고리즘(강의자료)
Ad

동적 계획법 Dynamic Programming

  • 1. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 Dynamic Programming
  • 2. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 1 피보나치 수열 Fibonacci numbers • 제2항까지는 1, 제3항부터는 바로 앞의 두 수를 더한 수 (0), 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89… 재귀를 이용해 피보나치 수열의 n번째 수를 구하는 함수 int fib(int n) { if (n<=2) return 1; else return fibo(n-1) + fibo(n-2); }
  • 3. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 2 피보나치 수열 Fibonacci numbers • fibo(6) fibo(2) fibo(1) fibo(3) fibo(2) fibo(4) fibo(2) fibo(1) fibo(3) fibo(5) fibo(2) fibo(1) fibo(3) fibo(2) fibo(4) fibo(6)
  • 4. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 2 피보나치 수열 Fibonacci numbers • fibo(6) fibo(2) fibo(1) fibo(3) fibo(2) fibo(4) fibo(2) fibo(1) fibo(3) fibo(5) fibo(2) fibo(1) fibo(3) fibo(2) fibo(4) fibo(6)
  • 5. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 2 피보나치 수열 Fibonacci numbers • fibo(6) fibo(2) fibo(1) fibo(3) fibo(2) fibo(4) fibo(2) fibo(1) fibo(3) fibo(5) fibo(2) fibo(1) fibo(3) fibo(2) fibo(4) fibo(6)
  • 6. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 2 피보나치 수열 Fibonacci numbers • fibo(6) fibo(2) fibo(1) fibo(3) fibo(2) fibo(4) fibo(2) fibo(1) fibo(3) fibo(5) fibo(2) fibo(1) fibo(3) fibo(2) fibo(4) fibo(6) fibo(3), fibo(4) 연산이 반복된다
  • 7. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 3 동적 계획법의 등장 • 처음 진행되는 연산은 기록, 진행되었던 연산은 기록된 값을 이용해 연산 횟수를 줄인다. 메모이제이션(Memoization) int fiboData[100] = {0,}; int fibo(int n) { if (n<=2) return 1; if (fiboData[n]==0) fiboData[n] = fibo(n-1) + fibo(n-2); return fiboData[n]; } DP를 이용해 피보나치 수열의 n번째 수를 구하는 함수
  • 8. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 4 개념 •문제를 풀기 위해 한 문제를 여러 개의 하위 문제로 나누어 푼 다음, 그것들을 결합하여 최종적인 목적에 도달한다. •하위 문제를 해결한 뒤 그 해결책을 저장하여 똑같은 문제 발생 시 간단하게 해결한다. A B 1 2 3 모든 방법을 검토한 후 가장 짧은 2번을 선택한다
  • 9. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 5 장점과 단점 •모든 방법을 일일이 검토하여 최적의 해를 찾아내는 방식 •그리디 알고리즘(탐욕 알고리즘) •모든 해를 구하지 않고 순간순간 최적의 해를 찾는 방식 •그리디 알고리즘으로 도출된 값이 항상 최적의 해라고는 할 수 없다 •동적 계획법은 그리디 알고리즘에 비해 시간이 오래 걸리나, 결과적으로 항상 효율적인 값을 구할 수 있다.
  • 10. 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 동적 계획법 6 Q&A