170 likes | 1.09k Views
알고리즘 1 장 알고리즘 설계와 분석 2 장 점화식과 점근적 복잡도 분석. 서국화 kookhwa@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012. 9. 4. 목 차. 1 장 알고리즘의 설계와 분석의 기초 몇 가지 기초 사항들 점근적 표기 점근적 표기의 엄밀한 정의 2 장 점화식과 점근적 복잡도 분석 점화식의 이해 점화식의 점근적 분석 방법. 몇 가지 기초 사항들 (1/3). 알고리즘이란
E N D
알고리즘1장알고리즘 설계와 분석2장 점화식과 점근적 복잡도 분석 서국화 kookhwa@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012. 9. 4
목 차 • 1장 알고리즘의 설계와 분석의 기초 • 몇 가지 기초 사항들 • 점근적 표기 • 점근적 표기의 엄밀한 정의 • 2장 점화식과 점근적 복잡도 분석 • 점화식의 이해 • 점화식의 점근적 분석 방법 IST (Information Sciences & Technology) Laboratory
몇 가지 기초 사항들(1/3) • 알고리즘이란 • 어떤 작업을 수행하기 위해 입력을 받아 원하는 출력을 만들어내는 과정을 기술한 것 • 명확하고 효율적이여야 함 • 알고리즘을 왜 분석하는가 • 작업의 소요시간을 짐작할 수 있음 • 알고리즘의 수행시간 • 입력크기에 대해 시간이 어떤 비율로 소요되는지 표현됨 • 알고리즘 예 sample1(A[],n) { k=n/2; return A[k]; } n에 상관없이 상수 시간이 소요됨 IST (Information Sciences & Technology) Laboratory
몇 가지 기초 사항들(2/3) sample2(A[],n) { sum ← 0; for i← 1 to n sum ← sum + A[i]; return sum; } 알고리즘의 수행시간은 n에 비례 sample3(A[],n) { sum ← 0; for i← 1 to n for j ← 1 to n sum ← sum + A[i] * A[j]; return sum; } n x n번 반복되므로 알고리즘의 수행시간은 n2에 비례 IST (Information Sciences & Technology) Laboratory
몇 가지 기초 사항들(3/3) • 알고리즘으로 어떤 문제를 푸는가 • 네비게이션을 이용하여 최단경로나 최단시간이 소용되는 경로찾기 • ATM기 스케줄링 • 신용카드 사용내역 발송순서 결정 IST (Information Sciences & Technology) Laboratory
점근적 표기(1/2) • 점근적 표기 • 점근적 증가율 • 변수가 커짐에 따라 함수가 증가하는 비율 • 함수의 점근적 증가율의 표기법 • Θ-표기법 • 알고리즘의 소요시간이 입력의 크기 n에대해 Θ(n2 )이라면 대략 n2 에 비례하는 시간이 소요됨 • Θ((n))은 최고차항의 차수가 f(n)과 일치하는 함수들의 집합 • 5n2 +4 =Θ(n2) 5n2 +4 의 증가율은 n2의 증가율과 점근적인 의미에서 같음 • Θ(f(n)) 은 집합으로 정의 되기 때문에 =대신 ∈을 사용해도 됨 IST (Information Sciences & Technology) Laboratory
점근적 표기(2/2) • Ο-표기법 • Ο(f(n)) • 최고차항의 차수가 f(n)과 일치하거나 더 작은 함수들의 집합 • Ο(f(n))은 점근적 증가율이 f(n)을 넘지 않는 모든 함수들의 집합 • 5n2 +4 = Ο(n2) or 7n = Ο(n2 ) • Ω-표기법 • Ω(f(n)) • 최고차항의 차수가 f(n)과 일치하거나 더 큰 함수들의 집합 • Ο(f(n))은 점근적 증가율이 적어도 f(n)이 되는 모든 함수들의 집합 • 5n2 +4 =Ω(n2 ) or7n3= Ω(n2 ) IST (Information Sciences & Technology) Laboratory
점근적 표기의 엄밀한 정의(1/4) • Ο-표기법정의 • Ο(g(n))은 충분히 큰 n에 대하여 g(n)에 상수만 곱하면 g(n)이 f(n)보다 크거나 같아질 수 있는 모든 함수의 집합 • 예제1 5n2 =Ο(n2) 증명) c=6, =1 모든 n에대해서 5n2 <=6n2 ∴ 정의를 만족하는 상수c와 가 존재함 • 예제2 5n2 +3=Ο(n2) 증명) c=6, n>= n>=2에 대해서 5n2+3<=6n2 ∴ 정의를 만족하는 상수c와 가 존재함 IST (Information Sciences & Technology) Laboratory
점근적 표기의 엄밀한 정의(2/4) • Ω-표기법정의 • Ω(g(n))은 충분히 큰 n에 대하여 g(n)에 상수(c)만 곱하면 g(n)이 f(n)보다 작거나 같아질 수 있는 모든 함수의 집합 • 예제1 5n2 =Ω(n2) 증명) c=4, =1 모든 n에 대해서 4n2 <=5n2 ∴ 정의를 만족하는 상수c와 가 존재함 • 예제2 5n2 +3=Ω(n2) 증명) c=1, 모든 n에 대해서 이 성립 ∴ 정의를 만족하는 상수c와 가 존재함 IST (Information Sciences & Technology) Laboratory
점근적 표기의 엄밀한 정의(3/4) • Θ-표기법 정의 • Θ(g(n))은 Ο(g(n))과Ω(g(n))이 동시에 성립하는 모든 함수의 집합 • 예제1 5n2 =Θ(n2) • 예제2 5n2+3=Θ(n2) • Ο-표기법정의 • Ο(g(n))은 충분히 큰 n에 대하여 g(n)에 아무리 작은 상수를 곱해도 g(n)이 압도하는 모든 함수의 집합 IST (Information Sciences & Technology) Laboratory
점근적 표기의 엄밀한 정의(4/4) • 예제1 5n2 =ο(n3) 증명) • ω- 표기법정의 • ω(g(n))은 충분히 큰 n에 대하여 g(n)에 아무리 작은 상수를 곱해도 g(n)을 압도하는 모든 함수의 집합 • 예제1 증명) IST (Information Sciences & Technology) Laboratory
점화식의 이해 mergeSort(A[ ], p, r) { if(p < r) then { q ← ; ----------- ① ▷ p, q의 중간 지점 계산 mergeSort(A, p, q); ------------ ② ▷ 전반부 정렬 mergeSort(A, q+1, r); ----------- ③ ▷ 후반부 정렬 merge(A, p, q, r); ------------- ④ ▷ 후처리 } } merge(A[ ], p, q, r) { 정렬되어 있는 두 배열 A[p ... q]와 A[q+1 ... r]을 합하여 정렬된 하나의 배열 A[p ... r]을 만든다. } 수행시간의 점화식: T(n) = 2T(n/2) + 후처리시간 • 점화식 • 어떤 함수를 자신보다 더 작은 변수에 대한 함수와의 관계로 표현하는 방법 • 예 • an = an-1 + 2 • f(n) = nf(n−1) • 점화식 표현 IST (Information Sciences & Technology) Laboratory
점화식의 점근적 분석 방법(1/4) factorial(n) { if (n=1) return 1 ; -----① return n*factorial(n-1) ; ---② } T(n) = T(n−1) + c ( n-1계승을 구하는 시간+ ①과 ②를수행하는시간) T(1) ≤ c T(n) = T(n−1) + c = (T(n−2) + c) + c = T(n−2) + 2c = (T(n−3) + c) + 2c = T(n−3) + 3c … = T(1) + (n −1)c ≤ c + (n −1)c =cn • 반복대치 • 더 작은 문제에 대한 함수로 반복해서 대치해 나가는 해법 • 점근적 복잡도 IST (Information Sciences & Technology) Laboratory
점화식의 점근적 분석 방법(2/4) T(n) = 2T(n/2) + n (n=merge(A, p, q, r)의 최대 비교횟수n-1+if(p < r) then에있는 비교1번) =2(2T(n/22) + n/2) + n = 22T(n/22) + 2n = 22(2T(n/23) + n/22) + 2n = 23T(n/23) + 3n … = 2kT(n/2k) + kn,where n= 2k = n T(1)+ nlogn =n+nlogn = Ο(nlogn) T(n) = 2T(n/2) + n 의 점근적 복잡도는 T(n) = Ο(nlogn)이다, 즉 충분히 큰 n에 대하여 T(n)<= cnlogn인 양의 상수c가 존재한다. • 구체적인 복잡도 • 추정후 증명 • 결론을 추정하고 수학적 귀납법으로 이용하여 증명하는 방법 • 예제1 IST (Information Sciences & Technology) Laboratory
점화식의 점근적 분석 방법(3/4) <증명> 경계조건 : T(2)<=c2log2를 만족하는 c가 존재한다. 귀납적 가정과 전개 : n/2에 대해 T(n/2)<=c(n/2)logn/2을 만족한다 가정하면 T(n) ≤2T(n/2) + n ≤ 2c(n/2) log(n/2) + n = cnlogn − cn log2 + n = cnlogn + (−c log2 + 1)n ≤ cnlogn • 마스터 정리 • 형식에 맞는 점화식의 복잡도를 바로 알 수 있는 정리 • T(n) = aT(n/b) + f(n)와 같은 모양을 가진 점화식은 마스터 정리에 의해 바로 결과를 알 수 있음 • nlogba = h(n)이라 가정함 • T(n)의 점근적 복잡도 • 어떤 양의 상수 ε에 대하여 f(n)/h(n) = O(1/nε)이면, T(n) = Θ(h(n)) • 어떤 양의 상수 ε에 대하여 f(n)/h(n) = Ω(nε)이고, 어떤 상수 c(< 1)와 충분히 큰 모든 n에 대해 af(n/b) ≤ cf(n)이면 T(n) = Θ(f(n)) • f(n)/h(n) = Θ(1)이면 T(n) = Θ(h(n)logn) IST (Information Sciences & Technology) Laboratory
점화식의 점근적 분석 방법(4/4) • 마스터 정리의 직관적 의미 • h(n)이 더 무거우면 h(n)이 수행시간을 결정함 • f(n)이 더 무거우면 f(n)이 수행시간을 결정함 • h(n)과 f(n)이 같은 무게이면 h(n)에 logn을 곱한 것이 수행시간이 됨 • 예시 • T(n) = 2T(n/3) + c , a=2, b=3, h(n) = nlog32, f(n) = c 이므로 T(n) = Θ(nlog32) • T(n) = 2T(n/4) + n, a=2, b=4, h(n) = nlog42, f(n) = n 이므로 T(n) = Θ(n) • T(n) = 2T(n/2) + n, a=b=2, h(n) = nlog22 = n, f(n) = n 이므로T(n) = Θ(nlogn) IST (Information Sciences & Technology) Laboratory
감사합니다 서국화 kookhwa@kunsan.ac.kr