문양세 ( 컴퓨터과학전공 , IT 특성화대학 , 강원대학교 )

  • Upload
    evelia

  • View
    67

  • Download
    11

Embed Size (px)

DESCRIPTION

알고리즘 (Algorithm) – Divide and Conquer ( 분할정복 ). 문양세 ( 컴퓨터과학전공 , IT 특성화대학 , 강원대학교 ). Divide-and-Conquer?. Divide and Conquer. 유래 : 1805 년 12 월 2 일 아우스터리츠 전투에서 나폴레옹이 사용한 전략 오스트리아 - 러시아 연합군 > 프랑스군 (15,000 명 이상 많음 )  전체적인 전력은 연합군이 프랑스군에 비해 우수함 나폴레옹은 연합군의 중앙부로 쳐들어가 연합군을 둘로 나눔  Divide - PowerPoint PPT Presentation

Citation preview

  • (, IT, )(Algorithm) Divide and Conquer ()

    Computer Algorithmsby Yang-Sae Moon

    Divide-and-Conquer?:1805 12 2 - > (15,000 ) Divide () ConquerDivide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    Divide-and-Conquer Divide and Conquer(Divide): .(Conquer): .(Combine): () .

    (top-down) .

    Computer Algorithmsby Yang-Sae Moon

    : (1/3): n S x .: n, S[1..n], x: locationout - x S , x S 0:x , , ! :: x , .: x .: ( )

    : p. 49 2.1Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    : (2/3)Divide and Conquerindex location (index low, index high) {index mid;

    if (low > high)return 0;// else {mid = (low + high) / 2// ( )if (x == S[mid])return mid;// else if (x < S[mid])return location(low, mid-1);// elsereturn location(mid+1, high);// }}locationout = location(1, n);... p. 50 (x == S[mid] x < S[mid])

    Computer Algorithmsby Yang-Sae Moon

    : (3/3)Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    : (1/2) ? n, S, x , ?

    n, S, x . (recursive call) .?Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    : (2/2) (tail recursion): () (iterative algorithm) . ( p. 10 1.5 ) (activation records) , (). . (constant factor) () . .Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    : x S[mid] : n (= high - low + 1) while , . : (1) ; (2)x . () , .Divide and Conquer : (1/7)

    Computer Algorithmsby Yang-Sae Moon

    1: (recurrence) . n > 1 , n = 2k(k 1) .Divide and Conquer : (2/7)

    Computer Algorithmsby Yang-Sae Moon

    .: :Induction basis: n = 1, W(1) = 1 = lg 1 + 1.Induction hypothesis: 2 (power) n , W(n) = lg n + 1 .Induction step: W(2n) = lg(2n) + 1 . () ,Divide and Conquer : (3/7)

    Computer Algorithmsby Yang-Sae Moon

    2: n , .

    . .Divide and Conquer : (4/7)

    N mid n/2 - 11n/2(n-1)/21(n-1)/2

    Computer Algorithmsby Yang-Sae Moon

    . : Induction basis: n = 1, . Induction hypothesis: n > 1, 1 < k < n k , .Divide and Conquer : (5/7)

    Computer Algorithmsby Yang-Sae Moon

    Induction step: 1) n (, ), .Divide and Conquer : (6/7)

    Computer Algorithmsby Yang-Sae Moon

    Induction step: 2) n (, ), .Divide and Conquer, n . : (7/7)

    Computer Algorithmsby Yang-Sae Moon

    (Merge Sort) (1/2): n () .: n, n S[1..n]: () S[1..n]: 27, 10, 12, 20, 25, 13, 15, 22 p. 53 2.2 Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    (2/2)Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    : Divide and Conquervoid mergesort (int n, keytype S[]){const int h = n/2, m = n - h;keytype U[1..h], V[1..m];

    if (n > 1) {copy S[1] through S[h] to U[1] through U[h];copy S[h+1] through S[n] to V[1] through V[m];mergesort(h,U);mergesort(m,V);merge(h,m,U,V,S);}}

    Computer Algorithmsby Yang-Sae Moon

    : Divide and Conquer: .: (1) h, m, (2) U[1..h], V[1..m]: U V S[1..h+m]

    Computer Algorithmsby Yang-Sae Moon

    : (1/2)Divide and Conquervoid merge(int h, int m, const keytype U[], const keytype V[], const keytype S[]){index i, j, k;i = 1; j = 1; k = 1;while (i 0 , , c < 1 n , , ., , .

    Computer Algorithmsby Yang-Sae Moon

    Master Theorem Examples (1/3) 1: , a = 9, b = 3, f(n) = n, , = 1 , . 1 , .

    2: a = 1, b = 3/2, f(n) = 1, , . 2 , .Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    Master Theorem Examples (2/3) 3: a = 3, b = 4, f(n) = n lg n, , 0.2 , = 1 , . 3 , n , 1 c . , , n . .

    Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    Master Theorem Examples (3/3) 4: a = 2, b = 2, f(n) = nlgn, , . 3 , n , 1 c . , n c . , , c . , Master Theorem . Master Lemma .Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    The Master Lemma , k 0 k f(n) .Master Lemma : 4 .

    Master Theorem(Lemma) . Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    (Quick Sort) (1/3)1962 (C.A.R. Hoare) (Quicksort) . (partition exchange sort) .Divide and Conquer

    Computer Algorithmsby Yang-Sae Moon

    , . ? 1: , , (pivot item) , , . 2: , , .Divide and Conquer(Quick Sort) (2/3)

    Computer Algorithmsby Yang-Sae Moon

    : 15, 22, 13, 27, 12, 10, 20, 25 ( p. 60 2.2 )Divide and Conquer(Quick Sort) (3/3)

    Computer Algorithmsby Yang-Sae Moon

    : n () : n > 0, n S[1..n]: S[1..n]:Divide and Conquer void quicksort (index low, index high){index pivotpoint;if (high > low) {partition(low,high,pivotpoint);quicksort(low,pivotpoint-1);quicksort(pivotpoint+1,high);}}

    Computer Algorithmsby Yang-Sae Moon

    : S .: (1) low, high (2) low high S : (1) S pivotpoint (2) S ( ): (the next page)Divide and Conquer (1/2)

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (2/2)void partition (index low, index high, index& pivotpoint){index i, j;keytype pivotitem;pivotitem = S[low]; // pivotitem j = low;for(i = low + 1; i 0 (T(0) = 0, otherwise)

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (Worst Case) (3/5) , . n(n1)/2 . , ? , , .

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (Worst Case) (4/5) n , .: (): n = 0 ,: 0 k < n k ,:

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (Worst Case) (5/5) p n - 1 .

    ,

    . .

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (Average Case) (1/4), Worst Case Complexity , ., ? Average Case Complexity .

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (Average Case) (2/4): S[i] key : S , n: . 1 n , . p 1/n, p [A(p - 1) + A(n - p)], n - 1, .

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (Average Case) (3/4)(): n ,n n - 1 ,(1) (2) , ,

    , , .

    , .

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (Average Case) (4/4)(): , .

    . , ln n = logen, , an 2 ln n. , A(n) .

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (1/4) ? ?

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer (2/4) .mn (m by n) m n .

    nxn . .

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer : A+B = C = [ci,j] = [ai,j+bi,j] where A = [ai,j] and B = [bi,j] (3/4)

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer :The organization of the paper is poor. (2/4)

    Computer Algorithmsby Yang-Sae Moon

    Divide and Conquer: n n .: n, n n A B: A B C: (1/3)void matrixmult (int n, const number A[][], const number B[][], number C[][]){index i, j, k;for (i = 1; i