PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2011/08/12 00:52:39
Name 레필리아
Subject 동적 프로그래밍이 뭔가요??

동적 프로그래밍(dynamic programming)이 뭔가요??
책을 보고 블로그에서 설명을 봐도 전혀 와닿지 않습니다.

문제의 작은 부분을 풀어서 그 결과를 table에 저장하여 다시 계산하지 않는 기법이라고 적혀 있던데..
말이 너무 추상적이라고 할까요?? 감이 잡히질 않습니다.
(지금까지 생각하고 써오던 방법들은 greedy한 방법이라는 것을 알겠습니다)

이걸 어떤식으로 문제(UVA나 ACM같은..)에 적용 시키며, 어떤 관점으로 접근해야 할지 좀 알려 주세요 ㅜㅜ

동적 프로그래밍으로 된 소스코드를 아무리 들여다 보고, 개념 정리해 놓은 것들을 아무리 봐도 이해가 가질 않습니다.
특히 어떤 문제에 대해 동적프로그래밍으로 문제를 풀었을 때, "이렇게 이렇게 해서, 점화식이 이렇게 되니까 이렇게 코딩한다" 식의 풀이를 봐도 이런걸 어떻게 생각해내는지 신기하기만 하네요.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
11/08/12 01:06
수정 아이콘
UVA에 있던 문제인데요 98 France라는 문제가 있습니다. 제가 2년전에 푼 문제인데 몇번인지는 기억이 안나네요.

그 문제를 보면 어느 나라대 어느 나라는 승률이 몇퍼센트고 이런 표가 주어지고 최종적으로 16개국중 우승할 확률이 가장 높은 국가를 구하는 것이었습니다.

이런 표가 있다고 칩니다

0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

이 표를 토대로 각 국끼리의 승리 확률을 표로 넣습니다. 0 대 A는 0이 70 A가 30 이런식으로 말이죠.

0 1 2 3 4 5 6 7 8 9 A B C D E F 이런 순서대로 토너먼트 대진을 치루는데 0 이 1과 50 대 50이고 2 와 3이 70 대 30 이런식으로 승리 확률이 있을 겁니다.

이 때 가장 단순하게 프로그래밍 하면 0이 우승할 확률을 매겨보고 그 다음 처음부터 다시 해서 1이 우승 확률 매기고...이런식으로 한다면 같은 계산을 수십번 해야 합니다. 정말 비효율 적이죠

이걸 그런 비효율적인 방법 없이 해결하기 위한 방법이 다이나믹 프로그래밍입니다.
11/08/12 01:10
수정 아이콘
제가 저 문제를 풀때는 이미 저장된 계산 결과와 원래 테이블의 계산 결과를 섞어서 사용했기 때문에 중첩되는 계산은 나오지 않았습니다.

메인 테이블과 계산용 테이블 2개(데이터의 변화를 막기 위해)를 써서 해결했습니다. 그 과정이 좀 복잡해서 다시 설명드리기가 좀 애매하네요;; 혹 필요하시면 쪽지로 메일 주소 보내주시면 제가 주석 좀 더 달고 명확하게 해서 보내드리겠습니다.
아야여오요우
11/08/12 01:40
수정 아이콘
예가 좀 조잡하지만 앞서에서 어떤 문제를 풀기 위해서 일단 27 * 13 = 351을 계산했다고 칩시다. 이걸 다른데 저장해 놓습니다. 한참 뒤에 (27*5) * (13*2) 라는 걸 풀어야 하는 상황이 왔습니다. 이걸 다시 계산하지 말고 앞서 계산한 결과를 이용해서 351 * 5 * 2 를 푸는 게 그냥 27*5*13*2를 계산하는 것보다 좋겠죠... 원글에 써 주신 점화식도 좋은 예죠 An = An-1 *3 + 1이 있다고 할 때 An-1항을 미리 계산해 놨다면 An 구하는 건 엄청 쉽겠죠. 이런 식으로 An를 계산하기 전에 An-1항을 미리 계산하게끔 계산 과정을 잘 설계하고 이용하면 그게 dynamic programming이 되는 거죠...
Humaneer
11/08/12 10:33
수정 아이콘
크크 ACM-ICPC 단골손님 DP군요. 꼭 마스터 하시기 바랍니다.
그리고 알고리즘 쪽에 관심이 많으시다면 MEMOIZATION (메모이제이션)도 같이 공부하시면 되겠네요 :-)
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
111869 [야구] 선발투수 4일 휴식에 관해서 [3] EzMura2360 11/08/12 2360
111868 택시 시트를 구토 등으로 더럽혔을 때... [5] wook982753 11/08/12 2753
111867 스마트폰 질문입니다. [2] 진리는나의빛1538 11/08/12 1538
111865 화요일날 파마 했는데요 [5] 호로리1774 11/08/12 1774
111864 비주얼스튜디오2008 문의드립니다. [4] 2통1반1718 11/08/12 1718
111863 음질이 가장 좋은 스마트폰은 뭔가요 [19] 케이윌4556 11/08/12 4556
111862 빈폴이나 라코스테 해지스 [8] 다음세기2511 11/08/12 2511
111861 확인하지 않은 문자가 없는데 새로운 문자가 왔다고 계속 진동이 울립니다(....) [5] 히비스커스2821 11/08/12 2821
111860 신체부위중에서 정말 맘에 안든다 하는 부분이 있으신가요? [25] 에휴존슨이무슨죄2208 11/08/12 2208
111859 해외에서 의무통화량을 채울수있는 방법없을까요? [1] J1707 11/08/12 1707
111857 노트북 구매 관련해서 질문 드려요. [2] LegNa.schwaRz1842 11/08/12 1842
111856 목소리 녹음 질문드립니다. [2] dokzu1576 11/08/12 1576
111855 폰을 바꾸려하는데 이 시스템에 관해 하나도 모르네요 ㅜ [8] 테란나이트1732 11/08/12 1732
111854 통영 여행 질문드려요 [8] 이뿌니사과1558 11/08/12 1558
111853 동적 프로그래밍이 뭔가요?? [4] 레필리아2244 11/08/12 2244
111852 [야구,롯데계층]양승호 감독 카드는 결국 성공한것 아닌가요? [31] 10롯데우승2824 11/08/12 2824
111851 요금제좀 봐주세요 [3] J1730 11/08/12 1730
111849 이번 장마비 관련 피해보상을 받으려 합니다. 법쪽으로 잘 아시는분 있을까요? [1] 개미2140 11/08/12 2140
111848 우리나라 언론들이 야구에 '세계신기록'이라는 표현을 쓰던데 [8] 레몬커피2145 11/08/11 2145
111847 주식으로 100만원 이상 잃은사람 있나요..? [29] 純粹理性6722 11/08/11 6722
111846 일본 여행(간사이)질문좀 [7] 똘똘이 숨어푸1534 11/08/11 1534
111845 대구 중구청이나 시청쪽.. 모텔 좋은곳 있을까요 [2] 미술토스2101 11/08/11 2101
111844 야구 불펜질문입니다 [14] 싸구려신사1783 11/08/11 1783
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로