SlideShare a Scribd company logo
컴퓨터 공학 스터디 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

What's hot

Rolling hash
Rolling hashRolling hash
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 
선형대수 06. 영벡터공간과 해집합
선형대수 06. 영벡터공간과 해집합선형대수 06. 영벡터공간과 해집합
선형대수 06. 영벡터공간과 해집합
AHRA CHO
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
 
Forward-Forward Algorithm
Forward-Forward AlgorithmForward-Forward Algorithm
Forward-Forward Algorithm
Dong Heon Cho
 
資料結構-20個經典題型
資料結構-20個經典題型資料結構-20個經典題型
資料結構-20個經典題型
逸 張
 
ゲーム開発におけるバックトラック法
ゲーム開発におけるバックトラック法ゲーム開発におけるバックトラック法
ゲーム開発におけるバックトラック法大介 束田
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会Yuuki Ono
 
Intriguing properties of contrastive losses
Intriguing properties of contrastive lossesIntriguing properties of contrastive losses
Intriguing properties of contrastive losses
taeseon ryu
 
次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --
次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --
次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --
Shu Tanaka
 
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミングPythonではじめる競技プログラミング
Pythonではじめる競技プログラミング
cocodrips
 
뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피
겨울 정
 
Geert Driessen et al. (2014). Zittenblijven in het Nederlandse basisonderwijs...
Geert Driessen et al. (2014). Zittenblijven in het Nederlandse basisonderwijs...Geert Driessen et al. (2014). Zittenblijven in het Nederlandse basisonderwijs...
Geert Driessen et al. (2014). Zittenblijven in het Nederlandse basisonderwijs...Driessen Research
 
動的計画法
動的計画法動的計画法
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4in1)ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4in1)
Dimitris Psounis
 
系統程式 -- 附錄
系統程式 -- 附錄系統程式 -- 附錄
系統程式 -- 附錄
鍾誠 陳鍾誠
 
Claude gordon practice routines
Claude gordon   practice routinesClaude gordon   practice routines
Claude gordon practice routines
Guilherme Silva Chagas
 

What's hot (20)

Rolling hash
Rolling hashRolling hash
Rolling hash
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
선형대수 06. 영벡터공간과 해집합
선형대수 06. 영벡터공간과 해집합선형대수 06. 영벡터공간과 해집합
선형대수 06. 영벡터공간과 해집합
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
Forward-Forward Algorithm
Forward-Forward AlgorithmForward-Forward Algorithm
Forward-Forward Algorithm
 
資料結構-20個經典題型
資料結構-20個經典題型資料結構-20個經典題型
資料結構-20個經典題型
 
ゲーム開発におけるバックトラック法
ゲーム開発におけるバックトラック法ゲーム開発におけるバックトラック法
ゲーム開発におけるバックトラック法
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会
 
Intriguing properties of contrastive losses
Intriguing properties of contrastive lossesIntriguing properties of contrastive losses
Intriguing properties of contrastive losses
 
次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --
次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --
次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --
 
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミングPythonではじめる競技プログラミング
Pythonではじめる競技プログラミング
 
뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피
 
Geert Driessen et al. (2014). Zittenblijven in het Nederlandse basisonderwijs...
Geert Driessen et al. (2014). Zittenblijven in het Nederlandse basisonderwijs...Geert Driessen et al. (2014). Zittenblijven in het Nederlandse basisonderwijs...
Geert Driessen et al. (2014). Zittenblijven in het Nederlandse basisonderwijs...
 
動的計画法
動的計画法動的計画法
動的計画法
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4in1)ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4in1)
ΠΛΗ30 ΜΑΘΗΜΑ 1.1 (4in1)
 
系統程式 -- 附錄
系統程式 -- 附錄系統程式 -- 附錄
系統程式 -- 附錄
 
Claude gordon practice routines
Claude gordon   practice routinesClaude gordon   practice routines
Claude gordon practice routines
 

Similar to 동적 계획법 Dynamic Programming

피보나치 수열과 파이썬.pptx
피보나치 수열과 파이썬.pptx피보나치 수열과 파이썬.pptx
피보나치 수열과 파이썬.pptx
ssuser791410
 
3장 자동적으로 움직이는 게임 에이전트 생성법
3장 자동적으로 움직이는 게임 에이전트 생성법3장 자동적으로 움직이는 게임 에이전트 생성법
3장 자동적으로 움직이는 게임 에이전트 생성법suitzero
 
프리젠테이션-제목없음
프리젠테이션-제목없음프리젠테이션-제목없음
프리젠테이션-제목없음suitzero
 
컴퓨터개론09
컴퓨터개론09컴퓨터개론09
컴퓨터개론09
Edward Hwang
 
IPython
IPythonIPython
IPython
Kyunghoon Kim
 
03. dp easy
03. dp easy03. dp easy
03. dp easy
승혁 조
 
생각하는 프로그래밍 1부
생각하는 프로그래밍 1부생각하는 프로그래밍 1부
생각하는 프로그래밍 1부sj k
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
영기 김
 
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
HYUNJEONG KIM
 
[2장] 딥러닝을 위한 파이썬 기초학습 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝 | 반병현
[2장] 딥러닝을 위한 파이썬 기초학습 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝  | 반병현[2장] 딥러닝을 위한 파이썬 기초학습 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝  | 반병현
[2장] 딥러닝을 위한 파이썬 기초학습 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝 | 반병현
Byunghyun Ban
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기
라한사 아
 

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

피보나치 수열과 파이썬.pptx
피보나치 수열과 파이썬.pptx피보나치 수열과 파이썬.pptx
피보나치 수열과 파이썬.pptx
 
3장 자동적으로 움직이는 게임 에이전트 생성법
3장 자동적으로 움직이는 게임 에이전트 생성법3장 자동적으로 움직이는 게임 에이전트 생성법
3장 자동적으로 움직이는 게임 에이전트 생성법
 
프리젠테이션-제목없음
프리젠테이션-제목없음프리젠테이션-제목없음
프리젠테이션-제목없음
 
컴퓨터개론09
컴퓨터개론09컴퓨터개론09
컴퓨터개론09
 
IPython
IPythonIPython
IPython
 
03. dp easy
03. dp easy03. dp easy
03. dp easy
 
생각하는 프로그래밍 1부
생각하는 프로그래밍 1부생각하는 프로그래밍 1부
생각하는 프로그래밍 1부
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
 
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
 
[2장] 딥러닝을 위한 파이썬 기초학습 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝 | 반병현
[2장] 딥러닝을 위한 파이썬 기초학습 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝  | 반병현[2장] 딥러닝을 위한 파이썬 기초학습 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝  | 반병현
[2장] 딥러닝을 위한 파이썬 기초학습 | 수학 통계를 몰라도 이해할 수 있는 쉬운 딥러닝 | 반병현
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기
 

동적 계획법 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