17
목차 Dynamic Programming .............................................. 1p 의 특징 Dynamic Programming ................................... 3p 실습문제 : Human Gene Function ............................. 4p 숙제 : Real Time Process Scheduling ........................ 11p 참고문헌 ................................................................ 15p 실습목표 : 동적 계획법 은 보통 최적화 문제에 Dynamic Programming( ) 많이 적용되는 알고리즘으로 이전에 계산된 문제의 해가 계산 도중에 자주 이용되는 문제에 적용되어 효율적인 성능을 보이 는 알고리즘이다 본 실습을 통해서 주어진 문제를 동적 계획 . 법으로 해결하는 방법을 이해하고 실습을 통하여 동적 계획법 을 적용할 수 있는 기본적인 기술을 습득하도록 한다.

Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

목차

Dynamic Programming .............................................. 1p

의 특징Dynamic Programming ................................... 3p

실습문제 : Human Gene Function ............................. 4p

숙제 : Real Time Process Scheduling ........................ 11p

참고문헌 ................................................................ 15p

실습목표 : 동적 계획법 은 보통 최적화 문제에Dynamic Programming( )

많이 적용되는 알고리즘으로 이전에 계산된 문제의 해가 계산

도중에 자주 이용되는 문제에 적용되어 효율적인 성능을 보이

는 알고리즘이다 본 실습을 통해서 주어진 문제를 동적 계획.

법으로 해결하는 방법을 이해하고 실습을 통하여 동적 계획법

을 적용할 수 있는 기본적인 기술을 습득하도록 한다.

Page 2: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

동적 계획법 은 큰 문제를 작은 문제들로 분할하고 이 분할된 작은 문Dynamic programming( )

제들을 순환적으로 해결하여 큰 문제의 해를 구하는 방법이다 일반적으로 최적화 문제에 많[3].

이 적용되고 큰 문제를 분할한다는 측면에서 분할 정복 기법과 유사하지만 분할 정복 기법이 중,

복된 계산을 할 수 있는 가능성을 지닌 반면에 동적 계획법은 중복된 계산을 하지 않는다는 측

면에서 분할 정복 기법과는 다르다 본 실습에서는 동적 계획법을 간단히 소개하고 최적화 문제.

를 동적 계획법을 이용하여 해결하는 방법을 보인다 본 실습을 통하여 최적화 문제에 동적 계획.

법을 적용할 수 있는 능력을 습득하도록 한다.

동적 계획법을 통한 문제 해결방법을 이해하기 위하여 다음과 같은 최적화 문제를 살펴보자.

그림 자동차 연료문제1.1.

대전서울

주유소1 주유소2 주유소3 주유소4 주유소5

30 km 10 km 30 km 20 km 10 km 30 km

대전서울

주유소1 주유소2 주유소3 주유소4 주유소5

30 km 10 km 30 km 20 km 10 km 30 km

표 주유소 연료 가격표1.1.

출발지 주유소 1 주유소 2 주유소 3 주유소 4 주유소 5

당 가격1L 원1100 원1000 원1200 원1600 원1300 원1000

어떤 사람이 자동차를 타고 서울에서 대전까지 여행을 하려고 한다 그런데 이 자동차는 에. 1L

를 갈 수 있고 한번에 연료를 최대 밖에 채우지 못한다 서울에서 대전까지는1Km 50L . 130Km

이기 때문에 적어도 중간에 두 번은 주유소에 들러 연료를 채워야 하는데 각 주유소마다 연료

당 가격이 다르다 여행 중간에 연료가 떨어지는 일없이 이왕이면 가격이 낮은 주유소에서1L .

연료를 채워 여행 경비를 아끼고 싶은데 어디서 얼마큼 연료를 채워야 할까 그리고 그렇게?

연료를 채우는데 드는 최소 경비는 얼마일까 처음에 연료통은 비워져 있고 각 거리는? ( , 10Km

의 배수라고 가정하자.)

이 문제를 해결하는 가장 간단한 방법은 모든 경우를 고려해 보는 것이다 출발지와 각 주유소.

에서 의 연료를 채우는 경우 의 연료를 채우는 경우 각각을 모두 고려10L , 20L, 30L, 40L, 50L

하는 것이다 위 문제에서 각 거리가 단위의 배수라고 가정했기 때문에 나 를 채. ( 10Km 11L 12L

우는 경우는 고려하지 않아도 된다 그리고 모든 가능한 경우 중 최적의 비용이 드는 것을 선택.)

하면 문제를 해결할 수 있다 그러나 이런 방법을 사용할 경우 주유소의 개수가 이라고 했을. N

때 최대 5N의 가짓수를 고려해야 한다 더구나 거리가 단위의 배수가 아니라고 한다면. ( 10Km

나 를 채우는 경우도 고려해야 하기 때문에 최대11L 12L 50N의 가짓수를 고려해야 한다 즉 거.)

리가 의 배수라는 가정을 고려했을 때의 이 문제의 복잡 도는10Km O(5N)이 된다.

Dynamic Programming

Page 3: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

이제 문제를 조금 더 자세히 분석해 보자 단계적으로 한 출발지에서 다음 도착지까지 가는 경.

우를 고려해보면 다음과 같은 특징이 있음을 알 수 있다 첫째 출발지에서 얼마큼의 연료를 채. ,

우느냐에 따라 다음 도착지에서 남을 연료의 양이 결정된다 둘째 출발지에서 채워야할 연료량. ,

과 도착지에서 남을 연료의 양은 거리에 따라 제한된다 그림 에서 보듯이 서울 출발지 에서. 1.2 ( )

주유소 까지 가는 경우 서울에서 주유소 까지의 거리가 이기 때문에 서울에서는 최소1 1 30Km

의 연료는 채워야 하고 주유소 도착지 에서는 최대 의 연료가 남을 수 있다 이를 일반30L 1( ) 20L .

화 하면 각 도착지에서 남을 수 있는 최대 연료량은 이전 출발지와 도착지간의 거리 이(50 - )

다 이 특징을 이용하여 각 도착지에서의 남을 수 있는 연료량의 가짓수를 고려하면 그림 와. 1.4

같다.

그림 주유소 까지의 가짓수1.2. 1

서 울

주 유 소 1

3 0 k m

3 0 L를 채 우 는 경 우

4 0 L를 채 우 는 경 우

5 0 L를 채 우 는 경 우

0 L

1 0 L

2 0 L

남 은 양

서 울

주 유 소 1

3 0 k m

3 0 L를 채 우 는 경 우

4 0 L를 채 우 는 경 우

5 0 L를 채 우 는 경 우

0 L

1 0 L

2 0 L

남 은 양

그림 주유소 까지의 가짓수1.3. 2

주유소1 주유소2

10 km0 L

10 L

20 L

0 L..

40 L

50 L 충전

40 L 충전

30 L 충전

주유소1 주유소2

10 km0 L

10 L

20 L

0 L..

40 L

50 L 충전

40 L 충전

30 L 충전

그림 각 도착지에서의 남을 수 있는 연료량의 가짓수1.4

대전서울

주유소1 주유소2 주유소3 주유소4 주유소5

30 km 10 km 30 km 20 km 10 km 30 km

0 L10 L20 L

0 L10 L20 L30 L40 L

0 L10 L20 L

0 L10 L20 L30 L

0 L10 L20 L30 L40 L

0 L10 L20 L

대전서울

주유소1 주유소2 주유소3 주유소4 주유소5

30 km 10 km 30 km 20 km 10 km 30 km

0 L10 L20 L

0 L10 L20 L30 L40 L

0 L10 L20 L

0 L10 L20 L30 L

0 L10 L20 L30 L40 L

0 L10 L20 L

단계적으로 각 출발지에서 다음 도착지까지 가는 경우를 살펴보면 위의 그림 에서 보듯이1.2

서울에서 주유소 까지 가는 경우는 서울에서 를 채우고 주유소 에서 가 남는 경우 서1 30L 1 0L ,

울에서 를 채우고 주유소 에서 가 남는 경우 서울에서 를 채우고 주유소 에서40L 1 10L , 50L 1

가 남는 경우 총 가지 경우가 존재한다 그럼 주유소 에서는 총 의 연료가20L 3 . 1 0L, 10L, 20L

남는 경우가 발생하고 다시 각 경우마다 주유소 까지 가는 경우를 고려해야 한다 주유소 과2 . 1

사이의 거리는 이기 때문에 주유소 에서는 도착하고 나서 가 남는 경우 가 남는2 10Km 2 0L , 10L

경우 가 남는 경우 총 가지 경우가 발생할 수 있다 각 경우에 대한 최소의 경, 20L, 30L, 40L , 5 .

비를 구하는 방법은 그림 에서 보듯이 주유소 에서 의 연료가 남았을 때 를 채우고1.3 1 0L 50L

오는 경우 의 연료가 남았을 때 를 채우고 오는 경우 의 연료가 남았을 때 를, 10L 40L , 20L 30L

채우는 경우 총 가지 경우 중 가장 최소의 경비가 드는 것을 선택하는 것이다 이렇게 각 도착, 3 .

지마다 각 연료가 남을 수 있도록 하는 최소의 경비를 이전 해를 이용하여 순환적으로 구하고

최종적으로 대전에 의 연료가 남도록 하는 최소 경비를 구하면 문제의 해를 구할 수 있다0L .

이 과정을 일반화 하면 다음과 같은 점화식을 얻을 수 있다. Ci,j를 번째 주유소에서 를 남i j L

기도록 하는 최소의 경비라고 하고, Di,i − 1을 번째 주유소와 번째 주유소 사이의 거리라고i i-1

Page 4: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

하고, Pi−1을 번째 주유소에서의 당 가격 하자i-1 1L .

Ci,j = min! Ci − 1,k + (Di,i − 1 + j − k ) P i − 1

",

C0,0 = 0 , (for all j, k, 0 ≤ Di,i − 1 + j ≤ 50 , 0 ≤ k < 50 ) 식( 1.1)‥‥

점화식인 식 에서 보듯이 각 번째 주유소에서의 각 경우에 대한 최적 해를 구하기 위해서1.1 i

는 번째의 각 경우의 최적해 만이 이용됨을 알 수 있다 즉 이 알고리즘의 복잡 도는i-1 . O (N )

이 됨을 알 수 있다.

이제 동적 계획법을 좀더 자세히 이해하기 위해서 동적 계획법의 특징을 알아보자.

첫째 동적 계획법은 문제의 순환적인 성질을 이용한다 동적 계획법은 큰 문제를 이루는 작은, .

문제들을 먼저 해결하고 작은 문제들의 최적 해 를 이용하여 순환적으로 큰 문(Optimal Solution)

제를 해결한다 여기서 순환적이라는 의미는 어떤 작은 문제의 해가 그보다 큰 문제의 해를 구하.

는데 사용되고 또 이렇게 구해진 큰 문제의 해는 그보다 더 큰 문제의 해를 구하는데 이용된다

는 것이다 위의 문제를 예로 들어보면 주유소 까지 의 연료를 남기도록 하는 최소 비용. i-1 k L

은 번째 주유소에서 의 연료를 남기도록 하는 최소비용을 구하는데 사용되고 이렇게 구해진i j L

최적 해는 번째 주유소에서 의 연료를 남기도록 하는 최적 해를 구하는데 다시 이용된다i+1 j L .

이렇듯 동적 계획법을 잘 적용하기 위해서는 이런 순환적인 성질을 이용하여 큰 문제를 작은 문

제로 분할하는 것이 매우 중요하다 그리고 이런 순환적인 관계 를 명시적. (recurrence relation)

으로 표현하기 위해서 동적 계획법에서는 일반적으로 수학적 도구인 점화식을 사용한다 위 문제.

에서는 번째 주유소에서 의 연료를 남기도록 하는 최소 비용을 작은 문제로 정의했으며 순환i j L

적 관계를 명시적으로 식 과 같이 점화식으로 표현했다1.1 .

둘째 동적 계획법에서는 중복된 계산을 하지 않는다 동적 계획법은 문제의 순환적인 성질 때, .

문에 이전에 계산되어졌던 작은 문제의 해가 다른 어딘가에서 필요하게 되는데 이를 위해 동적

계획법에서는 이미 해결된 작은 문제들의 해들을 어떤 저장 공간 에 저장하게 된다 그리(table) .

고 이렇게 저장된 해들이 다시 필요할 때 마다 해를 얻기 위해 다시 문제를 재계산하지 않고

의 참조를 통해서 중복된 계산을 피하게 된다 위 문제에 대한 을 표 와 같다table . Table 1.2 .

표 주유소 문제의 동적 계획법1.2. Table

서울i=0( ) i=1 i=2 i=3 i=4 i=5 대전i=6( )

C0,0 C1,0 C2,0 C3,0 C4,0 C5,0 C6,0

C1,10 C2,10 C3,10 C4,10 C5,10

C1,20 C2,20 C3,20 C4,20 C5,20

C2,30 C4,30 C5,30

C2,40 C5,40

식 에서 유도되듯이1.1 C4.10을 구하기 위해 C3.0, C3,10, C3,20의 값을 필요로 하게 되는데 이

때마다 이것들을 다시 계산하지 않고 이것들을 저장하고 있는 을 참조하여 중복 계산을 하Table

지 않게 된다.

의 특징Dynamic Programming

Page 5: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

셋째 동적 계획법이 어느 문제에나 적용될 수 있는 것은 아니다 주어진 문제가 최적화의 원, .

칙 을 만족해야만 동적 계획법을 적용할 수 있다 최적화의 원칙이란 어(Principle of Optimality) .

떤 문제에 대한 해가 최적일 때 그 해를 구성하는 작은 문제들의 해 역시 최적이어야 한다는 것

이다 동적 계획법의 방법자체가 큰 문제의 최적 해를 작은 문제의 최적해들을 이용하여 구하기.

때문에 만약 큰 문제의 최적해가 작은 문제들의 최적화의 해들로 구성되지 않는다면 이 문제는

동적 계획법을 적용할 수 없다 간단히 위의 문제를 살펴보면 주유소 까지 오는 문제의 최소. 4

비용 최적해 은 출발지에서 이전 주유소까지 오는 최소 비용과 이전 주유소에서 주유소 까지 오( ) 4

는 비용으로 구성되었다 즉 이 문제는 큰 문제의 해가 작은 문제들의 해로 구성되고 이들 작은.

문제의 해는 각각의 문제에서 최적 해라는 최적화의 원칙을 만족한다 따라서 이 문제는 동적 계.

획법을 이용하여 문제를 해결 할 수 있다 동적 계획법 문제는 반드시 이 최적화의 원칙을 만족.

해야하기 때문에 문제를 해결하려고 하기 전에 해당 문제가 동적 계획법을 적용하여 풀릴 수 있

는 문제인가를 먼저 검토해 봐야한다.

이제 아래의 실습문제를 통해서 동적 계획법을 적용하는 방법을 좀더 알아보기로 한다.

문제정의1.

인간의 는 아데닌 구아닌 티민 시토신 이라고DNA (Adenine), (Guanine), (Thymine), (Cytosine)

하는 개의 뉴클레오티드 의 순서 열로 구성되어있고 이들 뉴클레오티드는 보통4 (Nucleotide) A,

로 표기된다 인간의 유전자의 기능을 구명하기 위해서 의 기능을 밝혀내는 것이 필G, T, C . DNA

요한데 이를 밝혀내기 위한 방법 중 하나로 밝혀놓은 의 기능을 이용하여 새로운 의DNA DNA

기능을 유추해내는 방법을 사용한다 그렇게 하기 위해서는 새로운 의 형태와 기존의 기능. DNA

이 규명된 형태와의 비교가 필요한데 그 의 개수는 상당히 많고 그 길이도 매우 길기DNA DNA

때문에 보통 기존의 규명된 들의 정보를 에 넣어놓고 컴퓨터를 이용하여 이들 비DNA Database

교를 수행하게 된다.

유전자의 유사성을 측정하는 한 가지 방법으로 라는 방법을 사용하게 되는데 이 방Alignment

법에서는 필요에 따라 뉴클레오티드 사이에 여기서는 로 표기한다 를 추가 할 수 있고Space( ‘-’ )

각각의 뉴클레오티드 쌍들에 대한 를 모두 합산하여 최종 유사성 정도를 판정하게 된다score .

이들 쌍들에 대한 는 에 적혀있고 이들 최종 합의 값이 클수록 두Score Scoring Matrix Score

가 유사한 형태를 지니고 있다고 할 수 있다DNA .

표 2.1. Scoring Matrix

A C G T -

A 5 -1 -2 -1 -3

C -1 5 -3 -2 -4

G -2 -3 5 -2 -2

T -1 -2 -2 5 -1

- -3 -4 -2 -1 x

만들고자 하는 프로그램은 주어진 두개의 의 유사성을 최대로 하는 와 그 최종DNA Alignment

를 알아내는 것이다 다음의 예제를 살펴보자 이 두개의 의 유Score . . AGTGATG, GTTAG DNA

사성 정도를 알아보자 많은 가능한 경우의 가 존재하지만 여기서는 두 가지 경우의. alignment

실습문제 : Human Gene Function

Page 6: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

에 대해서 비교해본다alignment .

Possible alignment #1

AGTGAT G−

GT TAG− −−

각각의 쌍들에 대해서 를 알아보면Score , (A, )=-3, (G,G)=5, (T,T)=5, (G, )=-2, ( ,A)=-3,− − −

즉 최종 의 합은 이다 또 다른 가Score (-3) + 5 + 5 + (-2) + (-3) + 5 + (-3) + 5 = 9 .

능한 는 다음과 같다alignment .

Possible alignment #2

AGTGATG

GTTA G− −

이 의 최종 는 이고 이는 이전alignment score (-3) + 5 + 5 + (-2) + 5 + (-1) + 5 = 14

의 의 최종 보다 더 크다 만약 다른 가능한 모든 도 최Possible alignment #1 Score . Alignment

종 가 보다 작다면 구하고자 하는 는 최종 는Score 14 Alignment AGTGATG, GTTA G, Score− −

가 된다 만들고자 하는 프로그램의 입출력은 다음과 같이 정의되어있다14 . .

표 프로그램 입력 예제2.2.

검사할 의 총 수3 ( Case )‥‥‥‥‥‥‥

유전자의 길이 유전자 정보3 ACT ( , )‥‥‥‥

4 GATC

7 CCGTATC

8 ACGACTTT

10 CCCCTTTAAC

10 CTAGCCCTCA

표 프로그램 출력 예제2.3.

첫 번째 의 최대6 ( Case Score)‥‥‥

첫 번째 의 유전자-A-CT ( Case Alignment)‥

GTAC-

두 번째 의 최대14 ( Case Score)‥‥‥

CCGTATC---

ACG-A-CTTT

17

C---CCCTTTAAC

CTAGCCCT--CA-

입력의 형식은 다음과 같다 첫줄에 총 검사할 가 주어진다 한 는 두개의 유전자를. Case . Case

입력받아 두 유전자 사이의 를 검사하는 것인데 이 유전자를 입력받기 위해 유전자의Alignment

길이와 뉴클레오티드의 가 주어진다 표 에서 두 번째 줄의 는 각각 유전Sequence . 2.2 “3 ACT”

자의 길이가 이며 유전자의 뉴클레오티드 가 라는 것을 의미 한다 프로그램은3 Sequence ACT .

검사를 수행하기 위해서 입력으로부터 유전자의 길이와 뉴클레오티드 로Alignment Sequence

이루어진 유전자 정보 두 줄을 읽어 들이고 이들의 검사를 수행한 다음 구하고자 하Alignment

는 최대 와 그 최대 를 만들어내는 뉴클레오티드 들로 이루어진 결과를Score Score Sequence

출력하게 된다 이런 검사를 처음에 입력받았던 검사할 의 총 수만큼 반복하게 된다 표. Case .

에서 주어진 예제에서는 각각2.2 {ACT, GATC}, {CCGTATC, ACGACTTT}, {CCCCTTTAAC,

에 대해서 비교가 이루어지게 되고 이들 각 의 결과로 최대CTAGCCCTCA} Alignment Case {

값 유전자의 뉴클레오티드 로 이루어진 결과Score , Sequence} {6,-A-CT, GTAC-}, {14,

을 각각 화면CCGTATC---, ACG-A-CTTT}, {17, C---CCCTTTAAC, CTAGCCCT--CA-}

에 출력하게 된다.

문제 해결 방법2.

자 먼저 문제에 동적 계획법을 적용하기 위하여 최적화의 원칙이 성립하는지 살펴보자 간단한.

Page 7: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

예제로 의 두 유전자 비교를 생각해 보자 이 문제에 대한 작은 문제를{ACT, GATC} . {AC,

라고 했을 때 이 작은 문제의 해를 이용하여 큰 문제인 을 해결할 수 있을GAT} {ACT, GATC}

까 나중에 자세히 설명하겠지만 해결할 수 있다 좀더 자세히 살펴보기 위해서 다음의 경우를? .

생각해 보자 유전자 와 의 맨 마지막 뉴클레오티드는 각각 와 이다 이 두개의 뉴. ACT GATC T C .

클레오티드를 비교하는 경우에는 총 세 가지의 경우가 발생한다 따라{T, }, {T, C}, { , C} .− −

서 큰 문제의 해의 맨 마지막 뉴클레오티드의 는 이 세가지중 하나이다 이를 그림으Alignment .

로 표현하면 그림 와 같다2.1 .

그림 의 해2.1. ACT, GATC

T‘-’

{A,C}{G,A,T,C}

TC

{A,C}{G,A,T}

‘-’C

{A,C,T}{G,A,T}

, ,

{A,C,T}{G,A,T,C}

=

작은 해 작은 해 작은 해

max T‘-’

{A,C}{G,A,T,C}

TC

{A,C}{G,A,T}

‘-’C

{A,C,T}{G,A,T}

, ,

{A,C,T}{G,A,T,C}

=

작은 해 작은 해 작은 해

max

와 의 해는 각각 의 작은 해와 의 경우의 합 의 작은ACT GATC AC, GATC {T.‘-’} , AC, GAT

해와 의 합 의 작은 해와 의 합중 가장 큰 것을 택하게 된다 그러면 역{T,C} , ACT, GAT {‘-’,C} .

시 도 위와 같은 방법으로 해결될 수 있는지 살펴보자 의 맨 마지막 뉴클AC, GATC . AC, GATC

레오티드는 각각 이고 이는 그림 와 같은 방법으로 구해진다{C,C} 2.2 .

그림 의 해2.2. AC, GATC

C‘-’

{A}{G,A,T,C}

CC

{A}{G,A,T}

‘-’C

{A,C}{G,A,T}

, ,

{A,C}{G,A,T,C}

=

작은 해 작은 해 작은 해

max C‘-’

{A}{G,A,T,C}

CC

{A}{G,A,T}

‘-’C

{A,C}{G,A,T}

, ,

{A,C}{G,A,T,C}

=

작은 해 작은 해 작은 해

max

그림 과 에서 각각 보여주듯이 해결하고자 하는 해는 맨 마지막 뉴클레오티드의 세 가2.1 2.2

지 경우에 따라 각각 작은 해들과의 합중 가장 큰 값을 가지는 해로 이루어지게 된다 따라서 이.

문제는 최적화의 원칙을 만족하고 동적 계획법을 적용하여 해를 구할 수 있다.

위의 결과를 해석하여 일반적인 경우를 표현하는 아래와 같은 세 점화식을 구할 수 있다.

C (i, j ) = max! C (i − 1, j ) + score (DNA1 (i ), ! − !) , C (i − 1, j − 1 ) + score (DNA1 (i ), DNA2 (j )),

C (i, j − 1 ) + score ( ! − !, DNA2 (j ))"

식( 2.1)‥‥‥

C (0, j ) = C (0, j − 1 ) + score ( ! − !, DNA2 (j )) 식( 2.2)‥‥‥

C (i, 0 ) = C (i − 1, 0 ) + score (DNA1 (i ), ! − !) 식( 2.3)‥‥‥

여기서 C (i, j )는 각 첫 번째의 유전자 i번째와 두 번째 유전자 j번째 뉴클레오티드까지 비교

했을 때의 최대 값을 나타내고Score DNA1 (i )와 DNA2 (j )는 각각 첫 번째 유전자의 i번째와

두 번째 유전자의 j번째의 뉴클레오티드를 가리킨다 그리고. score는 괄호 안에 명시된 두 뉴클

레오티드 쌍에 대한 값을 나타낸다 식 와 식 은 의 제일 처음 뉴클레오티드가score . 2.2 2.3 DNA

와 대응되는 경우를 고려하기 위한 점화식이다‘-’ . i와 j가 각각 부터 각 유전자의 길이까지 증1

가하며 위 점화식을 수행하게 되고 i와 j가 각각 최대가 되었을 때의 C (i, j )에 우리가 구하고자

Page 8: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

하는 최대의 값이 저장되게 된다 일반적으로 모두 그런 것은 아니지만 위의 점화식에서score .

C (i, j )는 두개의 변수 i와 j를 가지므로 구현 시에 이차원 의 형태로 표현될 수 있다Array .

자 이제 값을 최대로 하는 두 유전자의 정보를 알아내기 위한방법을 살펴보자score Alignment .

앞에서 말한 점화식으로 통하여 최대의 값을 알아낼 수는 있지만 그 최대의 를 만들score score

어내는 정보까지 알아낼 수는 없다 위의 식 의 점화식은 수행시마다 세 가지의 경Alignment . 2.1

우 중 최대의 값을 선택하는 결정을 하게 된다 따라서 식 의 점화식이 만들어내는 그 일련의. 2.1

결정을 알아낼 수만 있다면 그 결정을 바탕으로 를 알아낼 수가 있게 된다 아래의 그Alignment .

림 과 는 점화식이 수행될 때의 각 연산의 과정을 보이는 것이다2.3 2.4 .

그림 연산 과정2.3.

‘-’ G TA C

T

C

A

‘-’

‘-’ G TA C

T

C

A

‘-’

그림 연산의2.4.

방향성과 정보Alignment

방향 3

방향 1방향 2

‘-’DNA1(i)

DNA2(j)DNA1(i)

DNA2(j)‘-’

jj-1

i-1

i방향 3

방향 1방향 2

‘-’DNA1(i)

‘-’DNA1(i)

DNA2(j)DNA1(i)DNA2(j)DNA1(i)

DNA2(j)‘-’

DNA2(j)‘-’

jj-1

i-1

i

그림 와 식 에서 보이듯이2.4 2.1 i, j가 모두 보다 큰 경우에0 C (i, j )의 값을 얻기 위해서 각

각 C (i − 1, j ) + score (DNA1 (i ), ! − !)와 C (i − 1, j − 1 ) + score (DNA1 (i ), DNA2 (j )) ,

C (i, j − 1 ) + score ( ! − !, DNA2 (j − 1 )) 세 값을 모두 고려하여 이중 가장 큰 값을 가지는 것을

선택하게 되는데 이때 이 셋 중 어느 것을 선택하는지를 하나의 결정으로 볼 수 있다 따라서 이.

때 이루어지는 결정들을 저장하기 위해서 특별히 저장 공간을 정의하고 매 C (i, j )의 값을 얻는

과정에서 이루어진 결정을 저장해두면 나중에 이들의 결정을 역으로 추적하여 각 결정마다 어떤

뉴클레오티드들의 대응이 있었는지를 알아낼 수 있다.

그림 결정들의 역 추적과 해석2.5.

‘-’ G TA C

T

C

A

‘-’

방향1

방향3

방향2

방향2

방향3

-T

CC

T-

AA

G-

‘-’ G TA C

T

C

A

‘-’

방향1

방향3

방향2

방향2

방향3

-T

CC

T-

AA

G-

그림 에서는 각 결정들의 역 추적과 그 과정에서 얻어지는 뉴클레오티드들의 대응을 나타2.5

내고 있다 결정은 순서대로 방향 방향 방향 방향 방향 으로 이루어 졌고 그 과정에서. 1, 2, 3, 2, 3

가 라는 것을 알 수 있다Alignment -A-CT, GATC- .

Page 9: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

실습문제 프로그램의 흐름도3.

아래에 나오는 과정을 수행하여 실습문제를 동적 계획법으로 해결해보자.

그림 에서 보듯이 프로그램의 흐름 도는 다음과 같다 먼저 사용자로부터 입력을 받아들이2.6 .

고 이를 바탕으로 필요한 자료구조를 할당하고 초기화 한다 그리고 식 식 식 의 점. 2.1, 2.2, 2.3

화식을 수행한다.

그림 프로그램 흐름도2.6.

자료 구조의 생성과 초기화

⇩점화식의 수행 식 식 식( 2.1, 2.2, 2.3)

⇩를 얻기 위한 역 추적 수행Alignment

⇩결과의 출력

모든 점화식을 수행한 다음 결과의 정보를 얻기 위한 역 추적을 수행한다 점화식에Alignment .

서 얻어진 최대 와 역 추적을 통해서 얻어진 정보를 출력한다 이 과정을 총 검Score Alignment .

사할 의 수만큼 반복하게 된다Case .

자료구조 정의1)

입력의 각 마다 유전자의 길이가 달라지기 때문에 자료구조는 동적으로 할당한다 따라서Case .

동적으로 할당을 위한 자료구조 선언을 아래 표 와 같이 한다2.4 .

표 자료구조2.4.

struct Gtable {

값int score; /* Score */

역 추적을 위한 방향성 결정 정보int direction; /* ( )

값이 일 때는 방향 을 일 때는 방향 를1 1 , 2 2 ,

일 때는 방향 을 의미한다3 3 . */

}

점화식이 수행되는 생성을 위한struct Gtable **table; /* table Pointer */

각 유전자를 저장하기 위한 형의char *DNA1, *DNA2; /* char Pointer */

역 추적시 생성되는 를char *DNAre1, *DNAre2; /* Alignment

저장하기 위한 형의char Pointer */

각 유전자의 크기를 저장하기 위한 변수int DNA1_size, DNA2_size; /* */

표 의int Score[5][5] = { 5,-1,-2,-1,-3, /* 2.1 Scoring Matrix */

-1, 5,-3,-2,-4,

-2,-3, 5,-2,-2,

-1,-2,-2, 5,-1,

-3,-4,-2,-1, 0};

Page 10: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

입력 데이터와 자료구조 초기화2)

사용자로부터 총 검사할 의 수를 입력받은 다음 두개의 유전자 정보 첫 번째 유전자의Case {

길이(L1 첫 번째 유전자의 뉴클레오티드 두 번째 유전자의 길이), Sequence}, { (L2 두 번째 유),

전자의 뉴클레오티드 를 받아들인다 이를 바탕으로 아래와 같이 과 에Sequence} . *DNA1 *DNA2

동적으로 저장 공간을 할당한 다음 유전자의 정보를 저장한다 또한. L1 L2크기의 차원 배열2

을 에 할당한다(struct Gtable **)table .

표 자료구조의 크기와 동적 할당2.5.

(struct Gtable **) table = L1 L2 크기의 차원 배열2

(char *) DNA1 = L1 크기의 배열

(char *) DNA2 = L2 크기의 배열

(char *) DNAre1= 1 + max (L1, L2 ) 2 크기의 배열

(char *) DNAre2= 1 + max (L1, L2 ) 2 크기의 배열

이때 역 추적 시에 생성되는 를 저장하는 저장 공간인 와 는 뉴클Alignment DNAre1 DNAre2

레오티드가 와 대응되는 경우도 있기 때문에 입력으로 들어온 유전자의 길이보다 커질 수가‘ ’−

있다 따라서 이 두 저장 공간은 입력으로 들어온 두 유전자중 길이가 큰 유전자가 시. Alignment

에 최대로 커질 수 있는 길이만큼 저장 공간이 할당 되어야 한다 예를 들어 유전자가 라면. ( AC

시에 최대로 만큼 커질 수 있고 이 길이는 원래 유전자의 길이 이다Alignment -A-C- ( ×2)+1 .)

점화식의 수행 식 식 식3) ( 2.1, 2.2, 2.3)

아래와 같이 식 식 의 점화식을 먼저 수행한다2.2, 2.3 .

for j from 0 to L2 − 1 식 의 점화식{ // 2.2

table[0][j].score = table[0][j-1].score +Score[‘-’][DNA2[j]];

방향table[0][j].direction = 3; // 3

}

for i from 0 to L1 − 1 식 의 점화식{ // 2.3

table[i][0].score = table[i-1][0].score +Score[DNA1[i]][‘-’];

방향table[i][0].direction = 1; // 1

}

표 의 자료구조에서 보듯이 와 의 대응일 경우/* 2.4 'A' ‘-’ Score[4][0]

라고 표기하는 것이 옳으나 여기서는 편의상을 위해 Score[‘-’][DNA2[j]]

라고 표기하였다. */

다음 식 의 점화식을 아래와 같이 수행한다2.1 .

Page 11: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

for i from 1 to L1 − 1 식 의 점화식{ // 2.1

for j from 1 to L2 − 1 {

val_1 = table[i-1][j] + Score[DNA1[i]][‘-‘];

val_2 = table[i-1][j-1] + Score[DNA1[i]][DNA2[j]];

val_3 = table[i][j-1] + Score[‘-‘][DNA2[j]];

table[i][j].score = max(val_1, val_2, val_3);

table[i][0].direction = max_decision(val_1, val_2, val_3);

}

}

는 중 가장 큰 값을 가지는 값을 하는 함수이고/* max(x,y,z) x,y,z return

는 중 가 가장 클 때는 을 가 가장 클 때는max_decision(x,y,z) x,y,z x 1 y

를 가 가장 클 때는 을 하는 함수이다2 z 3 return . */

정보를 얻기 위한 역 추적 수행4) Alignment

식 식 식 의 점화식을 모두 수행하고 나면2.1, 2.2, 2.3 table[L1 − 1][L2 − 1 에 우리가].score

구하고자 하는 최대 값이 저장되어 있다 또한 이 최대 값이 어떤 결정을 통해서 만Score . Score

들어 졌는지 table[L1 − 1][L2 − 1 에 그 결정의 정보가 포함되어 있다 따라서 그 결].direction .

정들의 순서 열을 역으로 추적하기 위해서 각 을 참조해야 하는데 이를 위table[i][j].direction

해 매번 의 인 와 가 갱신되어야 한다 아래와 같은 수행을 통하여 와table index i j . DNAre1

에 역으로 추적하여 얻어낸 를 저장한다DNAre2 Alignment .

for( i≠0 and j≠0 ) {

의 결정정보를 얻는다decision = table[i][j].direction; /* table[i][j] . */

결정이 방향 일 때if(decision == 1){ /* ‘ 1‘ */

정보의 저장DNAre1[k] = DNA1[i]; /* Alignment */

DNAre2[k] = ‘-’;

의 갱신i = i-1; /* table index i */

}

결정이 방향 일 때if(decision == 2){ /* ‘ 2‘ */

정보의 저장DNAre1[k] = DNA1[i]; /* Alignment */

DNAre2[k] = DNA2[j];

의 갱신i = i-1; /* table index i */

의 갱신j = j-1; /* table index j */

}

결정이 방향 일때if( ‘ 3‘ ){

;‥‥

}

k = k+1;

}

Page 12: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

결과의 출력5)

구하고자 하는 최대 의 결과는Score table[L1 − 1][L2 − 1 에 저장되어 있고 최대].score

를 만들어내는 는 위의 에서 구한 와 에 저장되어 있다 그러Score Alignment 4) DNAre1 DNAre2 .

나 이는 역으로 추적하여 얻어낸 결과 이므로 뉴클레오티드 가 역으로 저장되어 있다Sequence .

따라서 이를 역으로 출력하여 뉴클레오티드의 를 출력한다Alignement Sequence .

문제정의1.

인터넷을 통하여 실시간 동영상을 제공하는 용 를 개발하고자 한다Multimedia Server OS .

의 특성상 정해진 시간 안에 를 에 보내주어야 하며 시간이 지난 다Multimedia Data Data Client

음에 를 보내주는 것은 아무런 의미가 없게 된다 따라서 이를 위해 정해진 시간 안에Data .

의 수행 완료를 보장하는 이 지원되어야 한다 그러나Process Real Time Operation . Real Time

을 지원한다 하여 여러 개의 들을 무리하게 수행하다 서버의 과부화로 인해Operation Process

대부분의 들을 정해진 시간 안에 처리하지 못하는 경우가 발생해서는 안 된다 그럴 경process .

우 오히려 과감하게 몇 개의 들을 포기하고 다른 들을 모두 정해진 시간 안에process process

처리하는 것이 좀더 바람직한 해결책이 될 수 있다 이런 경우들을 고려하여. process scheduler

를 만들고자 한다 각각의 들은 다음과 같은 정보를 가지고 있다고 가정한다. process .

Process = ( PT , AT , DT , C )

PT 에서 수행되어져야 하는: CPU processing Time

AT 에 도착하는: Scheduling Queue Arrival Time

DT 수행 완료가 보장되어야 하는: Deadline Time

C 각 들의 중요도 를 표시하는 값: Process (Priority) Cost .

단 DT - AT 인 은Processing Interval 2PT를 넘지 않는다. (DT − AT < 2PT )

각각의 들은 그림 과 같이 표현된다Process 3.1 .

A rr iv a l t im e

P ro c e s s in g T im e

D e a d lin e t im e< P rio r ity C o s t : C >

P ro c e s s in g In te rv a l

A rr iv a l t im e

P ro c e s s in g T im e

D e a d lin e t im e< P rio r ity C o s t : C >

P ro c e s s in g In te rv a l

그림 3.1. Process

각각의 프로세스는 안에 수행을 마친다는 조건하에 을 시작하는Deadline Time Processing

시간을 시킬 수가 있다 만들고자 하는 는 이런 조건을 이용하여 수행Delay . process scheduler

된 들의 값들의 합을 최대로 하는 와 그 값을 알아내는 것Process Cost process sequence Cost

이다 아래의 간단한 예제를 살펴보자. .

숙제 : Real Time Process Scheduling

Page 13: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

그림 예제3.2.

0 4

3

3

6 7 10

3

2

3

2

8

Cost : 1

Cost : 2

Cost : 5

Cost : 4

0 4

3

3

6 7 10

3

2

3

2

8

Cost : 1

Cost : 2

Cost : 5

Cost : 4

이 예제에서 이 인 를 인 시간에 먼저 수행하고나면 인 시간부터 다Arrival Time 0 Process 0 3

른 를 수행할 수 있게 된다 이때 가 인 를 먼저 수행하지 않고 가Process . Cost 5 Process Cost 2

인 프로세스를 먼저 시간 에 수행하게 되면 시간 에 수행을 마치게 되고 가 인3 5 Cost 5 Process

는 만큼의 시간이 지연되어 가 인 와 같이 시간 부터 수행 가능 상태가 된다2 Cost 4 Process 5 .

이때 인 를 먼저 수행하여 시간 에 수행을 마치게 되면 가 인 제번째 프Cost 5 Process 8 Cost 4

로세스가 만큼 시간이 지연되어 수행가능하게 된다 따라서 그림 에서 보듯이 각각 가1 . 3.3 Cost

인 의 수행 시작 시간을 야간 조정함으로 인해서 모든 프로세스가 수행가능하게 된5, 4 Process

다 모든 프로세스가 수행 가능하기 때문에 전체 값은 가 된다. Cost (1+2+5+4) 12 .

그림 시간에 따른 들의 수행3.3. Process

0 4

3

3

6 7 10

3

2

3

2

8

Cost : 1

Cost : 2

Cost : 5

Cost : 4

0 4

3

3

6 7 10

3

2

3

2

8

Cost : 1

Cost : 2

Cost : 5

Cost : 4

다음 표 과 표 는 입출력에 대한 예제이다3.1 3.2 .

표 프로그램 입력 예제3.1.

검사할 의 총 수3 ( Case )‥‥‥‥‥‥‥‥‥

첫 번째 에서 의 총 수4 ( Case Process )‥‥

번째 의0 3 0 4 1 (0 Process‥ PT, AT, DT, C)

번째 의1 2 3 6 2 (1 Process‥ PT, AT, DT, C)

2 3 3 8 5 ‥

번째 의3 2 7 10 4 (3 Process‥ PT, AT, DT, C)

두 번째 에서 의 총 수3 ( Case Process )‥‥

두 번째 에서 의 총 수3 ( Case Process )‥‥

‥‥‥

입력의 제일 첫줄에는 몇 개의 를 검사할 것인지가 먼저 주어진다 각 는 들Case . Case Process

Page 14: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

의 총 개수와 각 들에 대한 정보Process (PT,AT,DT,C 들로 이루어지고 이때 기술된 순서에 따)

라 각 들의 순서 가 정해진다 제일 처음으로 기술된 의 경우 순서Process Number . Process

는 이고 두 번째로 기술된 의 경우 순서 는 이다Number 0 Process Number 1 .

표 프로그램 출력 예제3.2.

첫 번째 의 최대12 ( Case Cost)‥‥‥

실행되는 의 순서 와 수행 시작 시간Process[3] S:8 ( Process Number )

Process[2] S:5

Process[1] S:3

Process[0] S:0

두 번째 의 최대11 ( Case Cost)‥‥‥

‥‥‥

출력은 각 마다 최대의 값이 얼마인지와 그 최대의 를 만들기 위해 수행되는Case Cost Cost

들의 집합을 출력한다 표 에서 은 가 이라Process Number . 3.2 'Process[3]' Process Number 3

는 것을 의미하고 은 이 가 의 시간에 을 시작한다는 것이다'S:8' Process 8 Processing .

들의 집합을 나열할 때 순서는 고려하지 않는다Process .

프로그램은 입력으로부터 각 마다 의 총 수 만큼 에 대한 정보Case Process Process

(PT,AT,DT,C 를 읽어 들이고 동적 계획법으로 이를 해결하여 그 결과를 출력하는 과정을 총)

검사할 의 수만큼 반복하게 된다Case .

문제 해결 방법2.

문제1) Hint

다음과 같은 쉬운 문제를 통하여 본 문제를 좀더 쉽게 접근해보자 그림 에서 보듯이 각 직. 3.4

선은 시작 지점과 끝나는 지점으로 이루어져 있고 각 직선마다 값을 가지고 있다 문제는, Cost .

서로 겹치지 않는 직선들의 집합을 구하는 것인데 이때 집합에 속해있는 각 직선들의 값들Cost

의 합이 최대가 되도록 집합을 구하는 것이다.

그림 직선의 집합 문제3.4.

1l 3l4l

2l

Cost : 2 Cost : 4

Cost : 5

Cost : 3

시작지점 끝나는지점

1l 3l4l

2l

Cost : 2 Cost : 4

Cost : 5

Cost : 3

시작지점 끝나는지점

동적 계획법을 적용하기 위해서 작은 문제를 다음과 같이 정의하자 각 직선들의 시작 지점이. (

빠른 순서대로 정렬이 되어 있다고 가정한다.) i번째 직선을 포함하고 최대 합을 가지는 직Cost

선들의 집합을 Si라고 정의하자. i보다 작은 모든 k들에 대해서 Sk를 알고 있다면 Si를 쉽게 구

할 수 있다.

그림 에서처럼 각 직선3.5 l1, l2, l3의 S1, S2, S3을 알고 있다고 할 때 번째 직선인4 l4의 S 4를

Page 15: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

구하기 위해서는 우선 l4와 겹치지 않는 두 직선 l1, l3의 S1과 S3을 고려한다 이때. S1보다 S3의

합이 더 크기 때문에 구하는Cost S4는 집합 S3에 직선 l4를 포함시킨 집합이 되고 S4의 는Cost

S3의 합에 직선Cost l4의 를 합한 것이 된다Cost .

그림 3.5.

1l 3l4l

2l

Cost : 2 Cost : 4

Cost : 5

Cost : 3

시작지점 끝나는지점

6:3S2:1S

7:2S

36:4 +S

1l 3l4l

2l

Cost : 2 Cost : 4

Cost : 5

Cost : 3

시작지점 끝나는지점

6:3S2:1S

7:2S

36:4 +S

이를 수식으로 표현하면 다음과 같다.

Si의 의 합을Cost Si.Cost 직선, li의 를Cost li.Cost 시작지점과 끝나는 지점을 각각, li.start

li.end 라고 하면 식 과 같은 점화식을 얻을 수 있고 아래와 같은 과정을 통해서3.1 S4.Cost를

얻을 수 있다.

Si.Cost = max (Sk.Cost ) + li.Cost , 0 < k < i , lk.end < li.start 식( 3.1)‥‥‥

S1 = 2

S2.Cost = max (S1.Cost ) + l2.Cost = max (2 ) + 5 = 7

S3.Cost = max (S1.Cost ) + l3.Cost = max ( 2 ) + 4 = 6

S4.Cost = max (S1.Cost, S3.Cost ) + l4.Cost = max (2, 6 ) + 3 = 9

정의에 따라 Sk는 최소한 직선 lk는 포함하고 있으므로 각 계산마다 어떤 Sk가 선택되었는지

알 수 있다면 그 정보를 역으로 추적하여 직선의 집합을 알아낼 수 있다.

S1.backpointer = − 1 각 에 저장되는 정수 값은/* backpointer

S2.backpointer = 1 다음번 집합의 를 가리키는index

S3.backpointer = 1 것이다. */

S4.backpointer = 3

문제에서 구하고자 하는 집합과 그 최대 는 직선의 개수가 개 있을 때Cost ( N ) S1, S2, S3, ...,

SN− 1, SN 중에서 의 합이 가장 큰 것을 찾는 것으로 구해질 수 있다Cost . S1, S2, S3, S4 중에서

가장 의 합이 큰 것은Cost S4이고 아래와 같이 를 역으로 따라가면 그 집합들에 속backpointer

해있는 직선을 알 수 있다.

Page 16: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

S4. backpointer = 3 직선(= l4가 집합에 속해있다.)

S3.backpointer = 1 직선(= l3이 집합에 속해있다.)

S1.backpointer =− 1 직선(= l1이 집합에 속해있고 더 이상 집합에

속해있는 직선은 없다.)

의 적용2) Hint

위의 문제와 위의 문제를 해결하는 방법은 동일하RTPS(Real Time Process Scheduling) Hint

다 쉽게 생각해서 문제에서는 직선이 하나가 아니라고 생각하면 간단하다 각 는. RTPS . Process

되어 처리될 수 있으므로 아래 그림 과 같이 되어 처리될 수 있는 모든Delay 3.6 Delay Process

마다 독립적은 라고 가정하고 이들 독립적인 를 하나의 직선이라고 생각하면 위Process Process

의 문제의 해결방법을 그대로 적용할 수 있다 이런 방법을 적용할 수 있는 이유는 문제의Hint .

조건 중에 DT - AT 인 가Processing Interval 2PT를 넘지 않기 때문이다 즉 같은 에. Process

의해서 파생된 된 들은 서로 겹쳐지기 때문에 같은 집합에 포함되지 않는다는 것Delay Process

이 보장된다 그림 에서 보듯이 와 은 서로 겹치게 되어있. 3.6 Process 5 Process 6, Process 7

고 따라서 같은 집합에 포함될 수 없다.

그림 3.6.

0 4

3

6 7 10

8

Process 2

Process 4

Process 7Process 6

Process 9

Process 1

Process 3

Process 5

Process 8

0 4

3

6 7 10

8

Process 2Process 2

Process 4Process 4

Process 7Process 7Process 6Process 6

Process 9Process 9

Process 1Process 1

Process 3Process 3

Process 5Process 5

Process 8Process 8

Page 17: Dynamic Programming 1p Dynamic Programming 의특징 3ppds11.egloos.com/pds/200809/06/44/Dynamic_Programming.pdf · 2008-09-06 · Dynamic programming( )동적 계획법 은 큰 문제를

[1] Dan Gusfield. "Algorithms on String, Tree and Sequences -Computer Science and

Computational biology-", Cambridge University Press. 1997.

[2] Mark allen weiss. "Data Structure and Algorithm Analysis (Second Edition)", The

Benjamin Cummings Publishing Company, Inc. 1995.

[3] Ian Parbewy. "Problems on Algorithms", Prentice Hall, Inc 1995.

[4] Mark allen weiss. "Data Structure and Algorithm Analysis in Java", Addison Wesley

Longman. 1999.

[5] Rechard E. Neapolitan, Kumarss Naimipour. "Foundations of Algorithms using C++

Pseudocode, Second Edition", Jones and Bartlett Publication

참고문헌