45
Im4u 봄방학 캠프 DAY 3; Discrete Optimization Problems #3 Dynamic Programming (I) Dynamic Programming (I) 구종만 [email protected]

Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Im4u 봄방학 캠프DAY 3; Discrete Optimization Problems #3 Dynamic Programming (I)Dynamic Programming (I)

구종만

[email protected]

Page 2: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 프로그래밍대회의꽃, 동적계획법

� 다양한패턴들� Brute-Force 알고리즘최적화하기

� 최적화문제 (Optimization Problem) 풀기

오늘 할 얘기

� 최적화문제 (Optimization Problem) 풀기

� 경우의수와확률문제풀기

� with a lot of sample problems

Page 3: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Wildcards

Option Volatility And PricingIntroduction to AlgorithmsProgrammer in New YorkProgramming PearlsHarry Potter and the Prisoner of AzkabanHarry Potter and the Sorcerer’s StoneHarry Potter and the Deathly HallowsThe Lord of the Rings

*pr*n*Query:

� ? 는한글자에, * 는 0+개의글자에매칭될수있다. 주어진와일드카드에매칭되는제목의수는?

� 제목과와일드카드의길이는 200 이하

The Lord of the Rings…..….

Page 4: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� string s 와wildcard w 가주어졌을때, s 의 n글자와나머지, w 의첫글자와나머지로각각나눈다.

Wildcards: A Recursive Algorithm

* pr*n** pr*n*

Harry Potter and the Prisoner of Azkaban

Page 5: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Wildcards: A Recursive Algorithm

boolboolboolbool isMatched(stringstringstringstring title, stringstringstringstring wildcard) {ifififif(title.empty() && wildcard.empty()) returnreturnreturnreturn ______;ifififif(title.empty()) retretretreturnurnurnurn ______;

forforforfor(intintintint n = 0; n <= title.size(); ++n)ifififif(matches(wildcard[0], title.substr(0, n)))

ifififif(isMatched(_______, ______))returnreturnreturnreturn truetruetruetrue;

� 빈칸을채워봅시다 ^_^

� bool matches(char ch, string str)� 이있다고가정하고..

returnreturnreturnreturn truetruetruetrue;

returnreturnreturnreturn falsefalsefalsefalse;}

Page 6: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Wildcards: A Recursive Algorithm

boolboolboolbool isMatched(stringstringstringstring title, stringstringstringstring wildcard) {ifififif(title.empty() && wildcard.empty()) returnreturnreturnreturn true;ifififif(title.empty()) returnreturnreturnreturn isAllStars(wildcard);

forforforfor(intintintint n = 0; n <= title.size(); ++n)ifififif(matches(wildcard[0], title.substr(0, n)))

ifififif(isMatched(title.substr(n), wildcard.substr(1)))returnreturnreturnreturn truetruetruetrue;

� 빈칸을채웠습니다 ^_^

returnreturnreturnreturn truetruetruetrue;

returnreturnreturnreturn falsefalsefalsefalse;}

Page 7: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Can We Brute-Force It?

****************…*************z

zzzzzzzzzzzzzzzz…zzzzzzzzzzzzza

� ……..

� 물론, ad-hoc 최적화를할수있지만, 논외로두죠

Page 8: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Optimizing Function Calls

**************…**********z

zzzzzzzzzzzzz…zzzzzzzzzza

* *

z zz

**************…**********z* *

� 빨간경우의답과녹색경우의답은다른가?

� 입력은다른가?

**************…**********z

zzzzzzzzzzzzz…zzzzzzzzzza

* *

zzz

Page 9: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� isMatched(“a”, “z”) 는몇번이나호출될까?

� 이거한번만계산하면안되나요?

같은 입력 == 같은 답

Page 10: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Caching Function Values

stringstringstringstring title, wildcard;intintintint cache[100][100];// title.substr(t) and wildcard.substr(w) can be matched?boolboolboolbool isMatched(intintintint t, intintintint w) {

ifififif(t == title.size() && w == wildcard.size()) returnreturnreturnreturn 1;ifififif(t == title.size()) returnreturnreturnreturn isAllStars(wildcard.substr(w));ifififif(cache[t][w] != -1) returnreturnreturnreturn cache[t][w];forforforfor(intintintint n = 0; n <= title.size() - t; ++n)

ifififif(matches(wildcard[w], title.substr(t, n)))ifififif(isMatched(t+n, w))

� cache[][]는모두 -1 로초기화

� 특정입력에대한계산값을테이블에저장해둠

ifififif(isMatched(t+n, w))returnreturnreturnreturn cache[t][w] = 1;

returnreturnreturnreturn cache[t][w] = 0; }

Page 11: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 최적화이전� 제목의길이 n, 와일드카드길이m 에대해

bino(n+m, m-1)

� bino(200,99) ≈ 9.05 ∙ 1058

How Much Speedup?

� 최적화이후� 모든 t, w 의조합에대해 O(n)

� t , w 의조합은 O(n2) 개수있음

� O(n3)

Page 12: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 재귀호출로문제를푸는과정에서, 한번계산한결과값을두번계산하지않도록저장해두는기법

� (not memorization)

Memoization

� Recurrence 만있으면언제든지쓸수있다� Recurrence relation: 값이자기자신에대해재귀적으로정의되는함수

Page 13: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� Factorial

� Fibonacci Numbers

Recurrence

)1()( ,1)0( −⋅== nfnnff

)2()1()( ,1)1()0( −+−=== nfibnfibnfibfibfib

� 머지소트의시간복잡도

� 관계식과 base case 로구성됨

)2()1()( ,1)1()0( −+−=== nfibnfibnfibfibfib

nn

TnTTT +

⋅===

22)( ,1)1()0(

Page 14: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 여러경우, Recurrence 를 closed form 으로바꿀수도있다.

� Ex)

Solving A Recurrence

)lg()(2

2)( ,1)1()0( nnOnTnn

TnTTT =⇒+

⋅===

� 하지만못푸는경우가더많아요� 이런경우에는직접각인스턴스를계산하는수밖에없죠

� 점화식을어떻게잡느냐에따라동적계획법을할수있느냐없느냐가갈리기도합니다

Page 15: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 재귀적문제정의 + Memoization

� 문제를재귀적으로정의한뒤, 여러번계산되는값을저장해두어알고리즘의속도를높인다

동적 계획법 (Dynamic Programming)

� 컴퓨터과학사에최악의미스네이밍이라고강력히주장중

� Dynamic 이란말도당최왜나왔는지모를뿐더러…

� Programming 은프로그래밍과관련없습니다 (동적프로그래밍이라고쓰지맙시다)

Page 16: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 처음에는최적화문제 (optimization problem) 들을풀기위해고안

� 하지만� 완전탐색을최적화한다거나

동적 계획법의 사용처

� 완전탐색을최적화한다거나

� 확률/경우의수문제를풀때도유용하게사용

� 문제가재귀적으로정의되느냐! 가포인트~!

� 실제로그렇지않은문제인데도재귀적으로바꿔버릴수도있다: 모델링의힘

Page 17: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 맨윗칸에서맨아랫칸으로내려오는방법중숫자의합을최대화하는방법은?

� 가운데줄의길이 = N

Best Path On A Diamond

6 1 2 6 7 4

9 4 1 7� 가운데줄의길이 = N

� N <= 100

9 4 1 76 7 5 9 44 4 3 2 1 2 3 6 17

Page 18: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 당근안되겠죠

� 경로의수를세고싶지만대충넘어갑시다어차피안될거아는데. (이슬라이드를만들고있는지금은목요일새벽 5시)

Can We Brute-Force It?

Page 19: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Best Path On A Diamond: Recursive Sol

6 s s s s1 2 s s s6 7 4 s s9 4 1 7 s6 7 5 9 4

intintintint n, dia[201][101];

intintintint bestpath(intintintint y, intintintint x) {ifififif(x == n) returnreturnreturnreturn s;ifififif(y == n*2-2) returnreturnreturnreturn dia[y][x];intintintint delta = (y < n ? 1 : -1);returnreturnreturnreturn max(bestpath(y+1, x), bestpath(y+1, x+delta))

+ dia[y][x];}

� 가장무식한완전탐색에서부터시작합시다� s 는무지작은수 (-987654321 쯤) 이라고둡시다

6 7 5 9 44 4 3 2 s1 2 3 s s6 1 s s s7 s s s s

}

cout << bestpath(0, 0) << endl;

Page 20: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Introduce Memoization

intintintint n, dia[201][101], cache[201][101];intintintint bestpath(intintintint y, intintintint x) {

ifififif(x == n) returnreturnreturnreturn s;ifififif(y == n*2-2) returnreturnreturnreturn dia[y][x];intintintint delta = (y < n ? 1 : -1);ifififif(cache[y][x] != -1) returnreturnreturnreturn cache[y][x];returnreturnreturnreturn cache[y][x] = max(bestpath(y+1, x), bestpath(y+1, x+delta))+ dia[y][x];

}

� Boom! 동적계획법알고리즘탄생

� 시간복잡도는얼마일까요?

}

],[)),1(),1,1(max(),( xydiaxyCxyCxyC ++++=

Page 21: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

참 쉽죠?

Page 22: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 이알고리즘도모든경로를다보지만, 동적계획

주의, 주의!

intintintint bestpath(intintintint y, intintintint x, intintintint current_path = 0) {ifififif(x == n) returnreturnreturnreturn s;ifififif(y == n*2-2) returnreturnreturnreturn max(max_path, current_path + dia[y][x]);intintintint delta = (y < n ? 1 : -1);returnreturnreturnreturn bestpath(y+1, x, current_path + dia[y][x])

+ bestpath(y+1, x+delta, current_path + dia[y][x]);

}

� 이알고리즘도모든경로를다보지만, 동적계획법으로바꿀수는없어요 (혹은공간복잡도가무지커지거나)

� 부분문제의답은이전까지의답과독립적이어야

])),[,,1(]),,[,,1(max(),,( xydiacpxyCxydiacpxyCcpxyC +++∆++=

Page 23: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� “3부터끝까지가는경로중가장합이큰것은?”

� “이러이러한경로를거쳐서

그 말인즉슨..

6 1 2 6 7 4

9 4 1 76 7 5 9 4

� “이러이러한경로를거쳐서3 까지왔다. 이뒤를잇는경로중가장합이큰것은?”

6 7 5 9 44 4 3 2 1 2 3 6 17

Page 24: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Quantization

� 8개의색깔만으로재현한그림

� Downsampling

Page 25: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Quantization

1,744,755,4,897,902,890,6,777

4,757,757,4,899,899,899,4,757

� [1,1000] 구간의정수수열을, n종류의숫자만사용하도록다운샘플링하고싶다.

� n <= 10, 수열의길이 <= 100

� 오차제곱의합을최소화하는방법은?

4,757,757,4,899,899,899,4,757

Page 26: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 망상A

� 1000^n 으로모든공역을만든다음가장가까운수로매칭하자구..

� 망상B

어떻게 재귀로 풀지?

� 암말안하고있음옆사람이(혹은종만이가)풀어주겠지..

� 망상C

� 아배고프다…

Page 27: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 6 => 10 으로바꿨는데 11 => 9 로바꾸는건사상최대의 _____ 이다.

� 수열을이루는수들의 ______ 는상관이없다.

Key Observation

Page 28: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Key Observation

� 6 => 10 으로바꿨는데 11 => 9 로바꾸는건사상최대의 _개삽질_ 이다.

� 수열을이루는수들의 _순서_ 는상관이없다.

Page 29: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 입력에주어지는수들을정렬하고

� 이들을적절히 n 묶음으로나눈후에, 각묶음에

따라~서

1,4,6,744,755,777,890,897,902

� 이들을적절히 n 묶음으로나눈후에, 각묶음에서의오류를최소화하면되지않겠느냐~

5 760 896

1,4,6 744,755,777 890,897,902

Page 30: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Recurrence

1,4,6,744,755,777,890,897,902

here=3, groups=2 ( , )

� here 부터끝까지의숫자는아직매핑이안됐다

� 만들수있는묶음의개수 groups

� 첫번째묶음과나머지로나눈다면?

Page 31: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

주어진 수열을 쪼개는 문제가 되는데..

intintintint n;intintintint sequence[100];

intintintint quantize(intintintint here, intintintint groups) {ifififif(here == n) returnreturnreturnreturn 0;ifififif(groups == 0) returnreturnreturnreturn INFINITE;intintintint ret = INFINITE;forforforfor(intintintint m = 1; here+m < n; ++m) {

intintintint cand = solve(here, here+m-1) + quantize(here+m, groups-1);ret = min(cand, ret);

� 주어진수열을첫그룹과나머지로나눈다

� Memoization은추가안할게요..

ret = min(cand, ret);}returnreturnreturnreturn ret;

}

)]1,()1,([min),( 0 −++−+= <+= groupsmhereCmhereheresolvegroupshereC nmhere

m

Page 32: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� JM나라에서는 1백원짜리, 3백원짜리, 5백원짜리, 9백원짜리, 2천원짜리동전을쓰고있다 (거짓말)

� 3600원을거슬러줘야하는데, 몇가지방법으로거슬러줄수있을까?

Coin Change

?

� 1백원짜리 36개

� 3백원짜리 12개

� 1백원짜리 3개 + 3백원짜리 11개 + …

Page 33: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

An Iterative Solution

intintintint amt = 3600;intintintint ret = 0;forforforfor(intintintint one = 0; one*100 <= amt; ++one)forforforfor(intintintint three = 0; one*100 + three*300 <= amt; ++three)forforforfor(intintintint five = 0; one*100 + three*300 + five*500 <= amt; ++five)forforforfor(intintintint nine = 0; one*100 + three*300 + five*500 + nine*900 <= amt; ++nine)forforforfor(intintintint twenty = 0; one*100 + three*300 + five*500 + nine*900 + twenty*2000<= amt; ++twenty)

ifififif(one*100 + three*300 + five*500 + nine*900 + twenty*2000 == amt)

� 우와, 정말무식하다

ifififif(one*100 + three*300 + five*500 + nine*900 + twenty*2000 == amt)++ret;

Page 34: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

A Recursive Solution

constconstconstconst intintintint D = 5;constconstconstconst intintintint denom[D] = { 100, 300, 500, 900, 2000 };

intintintint waysChange(intintintint amt, intintintint idx) {ifififif(amt == 0) returnreturnreturnreturn 1;ifififif(idx == D) returnreturnreturnreturn 0;intintintint ret = 0;forforforfor(intintintint thisCoin = 0; thisCoin * denom[idx] <= amt; ++thisCoin)

ret += waysChange(amt - thisCoin * denom[idx], idx+1);

� Memoization도입은여전히안합니다히히

ret += waysChange(amt - thisCoin * denom[idx], idx+1);returnreturnreturnreturn ret;

}

Page 35: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

The Recurrence

}2000,900,500,300,100{=denom

]1~[ into gdecomposin of Ways),( −= nidxdenomamtidxamtC

)0 (if 1 == amt

)(otherwise )1,][(][/

0

∑=

+⋅−=idxdenomamt

n

idxnidxdenomamtC

Page 36: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Diamonds

......#............................

..#.######.........................

.##########..........###...........

..#.#########......#######.........

......#............#######.........

....................####.#.........

.......................##..........

� Diamonds 는가로길이 n, 세로길이 n의마름모꼴이다.

� 주어진 (n,m) 크기의격자에서, 찾을수있는다이아몬드의개수는?

Page 37: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 다이아몬드개수세기� 각칸에대해, 주어진칸을맨아래칸으로하는다이아몬드의개수를세자

� Key Observation

Diamonds

� 크기 5인다이아몬드는언제나같은칸에서시작하는크기 3다이아몬드를포함한다

� 따라서, 각칸을맨아래칸으로하는다이아몬드의최대크기maxSize[y,x] 를구하자 ......#.......

..#.######....

.##########...

..#.#########.

......#.......

Page 38: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Diamonds: Recurrence

),(at ending diamond a of sizemax ),( xyxymxSize =

.........#...........

........###..........

.......#####.........

......#######........

.......#####.........

� 오늘의마지막문제니까직접풀어봅시다!

.......#####.........

........###..........

.........#...........

Page 39: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 크기 n인다이아몬드는사실 n-2 인다이아몬드 3개와 2칸으로구성할수있다

Key Observation

....#..........#..........#..........#......

...###........###........###........###.....

..#####......#####......#####......#####....

.#######....#######....#######....#######...

� 크기가 n 이려면, (y-1,x-1), (y-1,x+1), (y-2,x) 에각각크기 n-2 인다이아몬드가있어야한다

.#######....#######....#######....#######...

..#####......#####......#####......#####....

...###........###........###........###.....

....#..........#..........#..........#......

Page 40: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Recurrence

),(at ending diamond a of sizemax ),( xyxymxSize =

)'.'x]cell[y, (if 0 ===

)'.'x]1,-cell[y and '#'x]cell[y, (if 1 =====

2)),2(),1,1(),1,1(max( +−+−−−= xymxSizexymxSizexymxSize

� (max 가 0 일경우예외처리가필요합니다)

� Memoization답은간단하게유도할수있다!

Page 41: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Recursive Dynamic Programming

intintintint n, m, cache[101][101];charcharcharchar grid[101][101];

intintintint maxSize(intintintint y, intintintint x) {ifififif(grid[y][x] == ‘.’) returnreturnreturnreturn 0;ifififif(y < 2 || x == 0 || x+1 == m || grid[y-1][x] == ‘.’) returnreturnreturnreturn 1;

ifififif(cache[y][x] != -1) returnreturnreturnreturn cache[y][x];

intintintint p = max(maxSize(y-2, x), mx(maxSize(y-1, x-1), maxSize(y-1, x+1)));

� 하지만꼭재귀호출을써야할까?

intintintint p = max(maxSize(y-2, x), mx(maxSize(y-1, x-1), maxSize(y-1, x+1)));

ifififif(p == 0 || grid[y-1][x] == ‘.’) returnreturnreturnreturn cache[y][x] = 1;returnreturnreturnreturn cache[y][x] = p + 2;

}

Page 42: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

Iterative Dynamic Programming

intintintint n, m, C[101][101];charcharcharchar grid[101][101];forforforfor(intintintint y = 0; y < n; ++y)

forforforfor(intintintint x = 0; x < m; ++x) {ifififif(grid[y][x] == ‘.’)

C[y][x] = 0;elseelseelseelse ifififif(x > 0 && x+1 < m && y >= 2 && gid[y-1][x] == ‘#’) {

intintintint p = max(C[y-2][x], max(C[y-1][x-1], C[y-1][x+1]));ifififif(p == 0)

C[y][x] = 1;

� mxSize() 는 y 가더작은칸들만을참조한다

� 특정순서로값을계산해도될경우, 꼭재귀호출을쓸필요는없다

C[y][x] = 1;elseelseelseelse

C[y][x] = p + 2;}

}

Page 43: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� Memoization

� 좀더느리다

� 스택을사용한다

� 연산순서에대해고민

Memoization vs. Iterative

� Iterative

� 좀더빠르다

� 스택을사용X

� 연산순서에대해고민해야한다할필요가없다

� 코드가좀더직관적이다

� 모든부분문제를계산할필요없을경우더빠르다

해야한다

� 코드가좀더복잡해진다

� 모든부분문제를계산해야할경우더빠르다

Page 44: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 동적계획법은재귀적으로정의되는문제에는어디나사용될수있다� 완전탐색시간단축

� Optimization Problem 의해결

Lessons Learned

� 경우의수와확률문제

� Recurrence (or 점화식)

� 문제의답을자신에대해재귀적으로정의한다

� 각입력에대한답을하나의부분문제라고부른다

Page 45: Im4u 봄방학캠프 DAY 3; Discrete Optimization Problems #3 ...theyearlyprophet.com/slide03.pdf · Microsoft PowerPoint - slide03.pptx Author: Administrator Created Date: 2/15/2009

� 좀더복잡한주제들� Theoretical Foundations

� 더어려운 Optimization/Counting 문제들

� 계산게임 (Computational Games) with DP

Following Next Day …

� DP with Exponential State Space

� 최적화문제의답안생성하기 etc.