ch01 알고리즘 설계와 분석의 기초.ppt [호환...
TRANSCRIPT
IT COOKBOOKIT COOKBOOK
- 1 - 한빛미디어㈜
교재교재 소개소개
도서명 | IT CookBook, 쉽게배우는알고리즘: 관계중심의사고법저 자 |문병로
출판사 |한빛미디어(주)_http://www.hanb.co.kr도서가격 | 25,000원페이지 | 460페이지출간일 | 2007년 2월 5일I S B N | 978-89-7914-459-8 13000
http://academy.hanb.co.kr
쉽게쉽게 배우는배우는 알고리즘알고리즘
11장장. . 알고리즘알고리즘 설계와설계와 분석의분석의 기초기초
IT COOKBOOKIT COOKBOOK
- 3 - 한빛미디어㈜
11장장.. 알고리즘알고리즘 설계와설계와 분석의분석의 기초기초
생각하는 방법을 터득한 것은
미래의 문제를 미리 해결한 것이다.
- 제임스 왓슨
IT COOKBOOKIT COOKBOOK
- 4 - 한빛미디어㈜
학습목표
• 알고리즘의 정의와 필요성을 인지한다.
• 아주 기초적인 알고리즘 수행시간 분석을 할수 있도록 한다.
• 점근적 표기법을 이해한다.
IT COOKBOOKIT COOKBOOK
- 5 - 한빛미디어㈜
알고리즘이란무엇인가?
• 문제해결절차를체계적으로기술한것• 문제의요구조건
– 입력과출력으로명시할수있다– 알고리즘은입력으로부터출력을만드는과정을기술
IT COOKBOOKIT COOKBOOK
- 6 - 한빛미디어㈜
입출력의예
• 문제– 100명의학생의시험점수의최대값을찾으라
• 입력– 100명의학생들의시험점수
• 출력– 위 100개의시험점수들중최대값
IT COOKBOOKIT COOKBOOK
- 7 - 한빛미디어㈜
알고리즘공부의목적
• 특정한문제를위한알고리즘의습득• 체계적으로생각하는훈련• 지적추상화의레벨상승
– Intellectual abstraction– 연구나개발에있어정신적여유를유지하기위해매우중요한요소
IT COOKBOOKIT COOKBOOK
- 8 - 한빛미디어㈜
바람직한알고리즘
• 명확해야한다– 이해하기쉽고가능하면간명하도록– 지나친기호적표현은오히려명확성을떨어뜨림– 명확성을해치지않으면일반언어의사용도무방
• 효율적이어야한다– 같은문제를해결하는알고리즘들의수행시간이수백만배이상차이날수있다
IT COOKBOOKIT COOKBOOK
- 9 - 한빛미디어㈜
문제의문제의크기크기
수행시간수행시간
알고리즘의수행시간
IT COOKBOOKIT COOKBOOK
- 10 - 한빛미디어㈜
문제의문제의크기크기
수행시간수행시간
알고리즘의수행시간
IT COOKBOOKIT COOKBOOK
- 11 - 한빛미디어㈜
알고리즘의수행시간
IT COOKBOOKIT COOKBOOK
- 12 - 한빛미디어㈜
• 알고리즘의수행시간을좌우하는기준은다양하게잡을수있다
– 예: for 루프의반복횟수, 특정한행이수행되는횟수, 함수의호출횟수, …
• 몇가지간단한경우의예를통해알고리즘의수행시간을살펴본다
알고리즘의수행시간
IT COOKBOOKIT COOKBOOK
- 13 - 한빛미디어㈜
sample1(A[ ], n) {
k = n/2 ; return A[k] ;
}
알고리즘의수행시간
üü nn에에관계없이관계없이상수상수시간이시간이소요된다소요된다..
IT COOKBOOKIT COOKBOOK
- 14 - 한빛미디어㈜
sample2(A[ ], n) {
sum ← 0 ; for i ← 1 to n
sum← sum+ A[i] ;return sum ;
}
알고리즘의수행시간
üü nn에에비례하는비례하는시간이시간이소요된다소요된다..
IT COOKBOOKIT COOKBOOK
- 15 - 한빛미디어㈜
sample3(A[ ], n) {
sum ← 0 ; for i ← 1 to n
for j ← 1 to n sum← sum+ A[i]*A[j] ;
return sum ;}
알고리즘의수행시간
üü nn22에에비례하는비례하는시간이시간이소요된다소요된다..
IT COOKBOOKIT COOKBOOK
- 16 - 한빛미디어㈜
sample4(A[ ], n) {
sum ← 0 ; for i ← 1 to n
for j ← 1 to n { k ← A[1 ... n]에서임의로 n/2 개를뽑을때이중최대값 ; sum ← sum + k ;
} return sum ;
}
알고리즘의수행시간
üü nn33에에비례하는비례하는시간이시간이소요된다소요된다..
IT COOKBOOKIT COOKBOOK
- 17 - 한빛미디어㈜
sample5(A[ ], n) {
sum ← 0 ; for i ← 1 to n
for j ← i+1 to n sum← sum+ A[i]*A[j] ;
return sum ;}
알고리즘의수행시간
üü nn22에에비례하는비례하는시간이시간이소요된다소요된다..
IT COOKBOOKIT COOKBOOK
- 18 - 한빛미디어㈜
factorial(n) {
if (n=1) return 1 ; return n*factorial(n-1) ;
}
알고리즘의수행시간
üü nn에에비례하는비례하는시간이시간이소요된다소요된다..
IT COOKBOOKIT COOKBOOK
- 19 - 한빛미디어㈜
재귀와귀납적사고
• 재귀=자기호출(recurrence)• 재귀적구조
– 어떤문제안에크기만다를뿐성격이똑같은작은문제(들)가포함되어있는것
– 예1: factorial• N! = N×(N-1)!
– 예1: 수열의점화식• an = an-1 + 2
IT COOKBOOKIT COOKBOOK
- 20 - 한빛미디어㈜
재귀의예: Mergesort
mergeSort(A[ ], p, r) ▷ A[p ... r]을정렬한다{
if (p < r) then { q ← (p+q)/2; ----------------------- ① ▷ 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]을만든다.
}
IT COOKBOOKIT COOKBOOK
- 21 - 한빛미디어㈜
mergeSort(A[ ], p, r) ▷ A[p ... r]을정렬한다{
if (p < r) then { q ← (p+q)/2; ----------------------- ① ▷ p, q의중간지점계산mergeSort(A, p, q); ---------------- ② ▷전반부정렬
mergeSort(A, q+1, r); -------------- ③ ▷후반부정렬
merge(A, p, q, r); ------------------ ④ ▷병합
} }
üü②, , ③은재귀호출üü①, ④는재귀적관계를드러내기위한오버헤드
IT COOKBOOKIT COOKBOOK
- 22 - 한빛미디어㈜
다양한알고리즘의적용주제들
• 카네비게이션• 스케쥴링
– TSP, 차량라우팅, 작업공정, …• Human Genome Project
– 매칭, 계통도, functional analyses, …• 검색
– 데이터베이스, 웹페이지들, …• 자원의배치• 반도체설계
– Partitioning, placement, routing, …• …
IT COOKBOOKIT COOKBOOK
- 23 - 한빛미디어㈜
알고리즘을왜분석하는가?
• 무결성확인• 자원사용의효율성파악
– 자원• 시간• 메모리, 통신대역, …
IT COOKBOOKIT COOKBOOK
- 24 - 한빛미디어㈜
알고리즘의분석
• 크기가작은문제– 알고리즘의효율성이중요하지않다– 비효율적인알고리즘도무방
• 크기가충분히큰문제– 알고리즘의효율성이중요하다– 비효율적인알고리즘은치명적
• 입력의크기가충분히큰경우에대한분석을점근적분석이라한다
IT COOKBOOKIT COOKBOOK
- 25 - 한빛미디어㈜
점근적분석Asymptotic Analysis
• 입력의크기가충분히큰경우에대한분석• 이미알고있는점근적개념의예
• Ο, Ω, Θ, ω, ο표기법
limlim f(n)f(n)nn→→∞∞
IT COOKBOOKIT COOKBOOK
- 26 - 한빛미디어㈜
점근법표기법Asymptotic Notations
• O( f(n) )– 기껏해야 f(n)의비율로증가하는함수– e.g., O(n), O(n log n), O(n2), O(2n), …
• Formal definition– O( f(n) ) = { g(n) | ∃c > 0, n0 ≥ 0 s.t.∀n ≥ n0, cf(n) ≥ g(n) }
– g(n) ∈ O(f(n)을관행적으로 g(n) = O(f(n))이라고쓴다.
• 직관적의미– g(n) = O(f(n)) ⇒ g는 f 보다빠르게증가하지않는다– 상수비율의차이는무시
IT COOKBOOKIT COOKBOOK
- 27 - 한빛미디어㈜
점근적표기법
• 예, O( n2 )– 3n2 + 2n– 7n2 – 100n– nlogn + 5n– 3n
• 알수있는한최대한 tight 하게– nlogn + 5n = O(nlogn) 인데굳이 O( n2 )으로쓸필요없다
– Tight하지않은만큼정보의손실이일어난다
IT COOKBOOKIT COOKBOOK
- 28 - 한빛미디어㈜
• Ω( f(n) )– 적어도 f(n)의비율로증가하는함수– O( f(n) )과대칭적
• Formal definition– Ω(f(n)) = { g(n) | ∃c > 0, n0 ≥ 0 s.t.∀n ≥ n0, cf(n)≤g(n) }
• 직관적의미– g(n) = Ω(f(n)) ⇒ g는 f 보다느리게증가하지않는다
점근적표기법
IT COOKBOOKIT COOKBOOK
- 29 - 한빛미디어㈜
• Θ( f(n) )– f(n)의비율로증가하는함수
• Formal definition– Θ( f(n) ) = O( f(n) ) ∩ Ω( f(n) )
• 직관적의미– g(n) = Θ(f(n)) ⇒ g는 f 와같은정도로증가한다
점근적표기법
IT COOKBOOKIT COOKBOOK
- 30 - 한빛미디어㈜
• O( f(n) ) – Tight or loose upper bound
• Ω( f(n) )– Tight or loose lower bound
• Θ( f(n) )– Tight bound
각점근적표기법의직관적의미
IT COOKBOOKIT COOKBOOK
- 31 - 한빛미디어㈜
점근적복잡도의예
• 정렬알고리즘들의복잡도표현예(3장에서공부함)– 선택정렬
• Θ( n2 )– 힙정렬
• O(nlogn)– 퀵정렬
• O( n2 )• 평균 Θ(nlogn)
IT COOKBOOKIT COOKBOOK
- 32 - 한빛미디어㈜
시간복잡도분석의종류
• Worst-case– Analysis for the worst-case input(s)
• Average-case– Analysis for all inputs– More difficult to analyze
• Best-case– Analysis for the best-case input(s)– 별유용하지않음
IT COOKBOOKIT COOKBOOK
- 33 - 한빛미디어㈜
저장/검색의복잡도
• 배열– O(n)
• Binary search trees– 최악의경우 Θ(n)– 평균 Θ(logn)
• Balanced binary search trees– 최악의경우 Θ(logn)
• B-trees– 최악의경우 Θ(logn)
• Hash table– 평균 Θ(1)
IT COOKBOOKIT COOKBOOK
- 34 - 한빛미디어㈜
크기 n인배열에서원소찾기
• Sequential search – 배열이아무렇게나저장되어있을때– Worst case: Θ(n) – Average case: Θ(n)
• Binary search – 배열이정렬되어있을때– Worst case: Θ(log n)– Average case: Θ(log n)
IT COOKBOOKIT COOKBOOK
- 35 - 한빛미디어㈜
Thank you