• 검색 결과가 없습니다.

Computer Algorithms C++ Divide & Conquer 분할 정복

N/A
N/A
Protected

Academic year: 2022

Share "Computer Algorithms C++ Divide & Conquer 분할 정복"

Copied!
23
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

Computer Algorithms C++

Divide & Conquer

분할 정복

(2)

Divide & Conquer의 개념

Divide & Conquer방법의 근본 원리는 주어진 문제에서 입력 의 크기가 큰 것을 다루는 것보다는 입력을 작은 크기로 분할 해서 해결하는 방법이다. 이 방법의 알고리즘은 다음과 같은 단계로 문제를 해결한다.

– 첫째, 입력을 더욱 작은 크기로 분할하고, – 둘째, 반복적으로 분할된 입력들을 해결하고,

– 셋째, 얻어진 부분 해들을 조합해서 원래의 입력에 대한 전체 해를 얻는다.

입력의 크기가 작은 경우에는 직접적으로 문제를 해결하고, 입력이 아직도 크다면 순환적으로 반복하여 분할한다.

(3)

Divide & Conquer의 개념

Type DAndC(P) {

if Small(P) return S(P);

else {

divide P into smaller instances P1, P2, ... , Pk , k≥1;

Apply DAndC to each of these subproblems;

return Combine(DAndC(P1) , DAndC(P2) , ... , DAndC(Pk));

} }

Program 3.1 Control abstraction for divide-and-conquer

(4)

Divide & Conquer의 개념

• 시간복잡도

– 여기서 T(n)은, 입력의 크기가 n인 문제에 대하여 DAndC를 적용 했을 경우의 알고리즘 수행시간이고, g(n)은 충분히 작은 입력 에 대하여 분할하지 않고 직접 계산할 경우의 시간을 의미한다.

그리고 f(n)은 P를 분할하는데 필요한 시간과 계산된 부분해들 을 결합하는 데 걸리는 시간이다.

(5)

Solving Recurrence Relations

• DAndC 알고리즘의 순환식

– T(1)은 입력 n이 충분히 작을 때, 더 이상 분할하지 않고 직접 계산할 경우의 계산시간.

– b는 입력 n을 몇 개의 부분으로 분할할 것인가를 결정하는 상수.

– a는 이런 분할된 부분 중에서 부분해를 계산하기 위해 몇 개를 더 고려 해야 하는가를 결정하는 상수(계산의 편의를 위해 n=bk임을 가정한다.).

– 함수 f(n)은 전체해를 구하기 위해 부분해를 합치는데 걸리는 시간

(6)

Solving Recurrence Relations

Example 3.1

a=2와 b=2인 경우를 생각해 보자. 여기서 T(1)=2이고 f(n)=n이라 고 하자.

또한, 위의 순환식에서 우변에 나타난 함수 T를 소거하기 위하여

i=log2n를 대입(우변의 함수 T(n/2i)를 T(1)으로 나타낼 수 있으며, T(1) 은 이미 알고 있는 상수값(2)이다.)하여 다시 나타내면 다음과 같은 결 과를 얻을 수 있다.

일반화하면,

(7)

Binary Search

(8)

Binary Search

(9)

이진검색의 예

key = 4를 검색

i=0, l=11, mid=5 1 3 4 5 6 7 9 10 11 13 14 i=0, l=4, mid=2 1 3 4 5 6 7 9 10 11 13 14 i=0, l=2, mid=1 1 3 4 5 6 7 9 10 11 13 14 i=2, l=2, mid=2 (Found) key = 12를 검색

(10)

점화식

(11)

다른 검색 방법

Ternary Search

T(n) = T(n/3) + 2 (?)

Quartary Search

T(n) = T(n/3) + 3 (?)

(12)

Powering a number

(13)

피보나치 수

정리 : Fn+1 Fn 1 1 n Fn Fn-1 1 0

귀납법으로 증명

(14)

Finding the Maximum and Minimum

(15)

Finding the Maximum and Minimum

(16)

MinMax(1, n, x, y)

a: 1 2 3 4 5 6 7 8 9 22 13 -5 -8 15 60 17 31 47

1, 9, 60, -8

1, 5, 22, -8 6, 9, 60, 17

1,3,22,-5 4,5,15,-8 6,7,60,7 8,9,47,31 1,2,22,13 3,3,-5,-5

(17)

Finding the Maximum and Minimum

– n=2k(n은 2의 승수)을 가정한다면 T(n)을 다음과 같이 구할 수 있다.

(18)

Merge Sort

(19)

Merge Sort

(20)

Merge Sort

• Example

• 입력리스트:[310,285,179,652,351,423,861,254,450,520]

(21)

Merge Sort

– n=2k(n은 2의 승수)을 가정한다면 T(n)을 다음과 같이 구할 수 있다

(22)

Quick Sort

(23)

Quick Sort

참조

관련 문서

– 평면에 의한 공간의 분할 개수 문제와 직선에 의한 평면의 분할 개수.. 수학의 수학의 은유적 은유적 특성에 특성에 대한 대한 Lakoff Lakoff와

- 전체 알고리즘은 SMNLMS 와 Gradient descent 을 반복 수행하여 주어진 Specification 을 만족시키는 필터 계수를

국내에서의 영상 분할에 대한 연구는 오랜 기간에 걸쳐 얼굴인식,객체 검출 같은 보안 시스템 등 다양한 방법으로 발전되어 왔다.그것은 크게 자동 분할 과 반자동

정부는 무엇을 해야 하느냐보 다는 무엇을 하지 말아야 하는가를 중심으로 사고해야 한다.. 또한 역대 정권들이 경기부양을 이유로 전가의 보도 인양

중요도 맵과 K-mean Clustering를 이용한 백혈구 세포 영상 분할. • 염색된

그러나 이미 풀어서 답을 알고 있는 부분문제 의 결과가 다시 필요한 경우에는 반복하여 계산하는 대 신에 이미 계산된 결과를 그냥

한국 미군정은 학무국은 학교경영계획과 교과서의 준비에 필요한 다음과 같은 유형 의 책들을 발송해 줄 것을 요청한다.. 이

• 빠른 정렬은 기준요소(pivot)이라 일컫는 배 열의 요소를 기준으로 기준요소보다 작거나 같은 숫자들은 왼편으로, 기준요소보다 큰 숫 자들은 오른편에 위치하도록