알고리즘알고리즘개요개요 효율 분석 차수) part...

29
알고리즘 알고리즘(Algorithm) (Algorithm) 알고리즘 알고리즘(Algorithm) (Algorithm) 알고리즘 알고리즘 개요 개요 (효율 효율, , 분석 분석, , 차수 차수) Part 2 ) Part 2 2011 2011년 봄학기 봄학기 강원대학교 강원대학교 컴퓨터과학전공 컴퓨터과학전공 문양세 문양세

Upload: others

Post on 09-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘알고리즘(Algorithm) (Algorithm) 알고리즘알고리즘(Algorithm) (Algorithm) 알고리즘알고리즘 개요개요 ((효율효율, , 분석분석, , 차수차수) Part 2) Part 2(( ,, ,, ))

20112011년년 봄학기봄학기

강원대학교강원대학교 컴퓨터과학전공컴퓨터과학전공 문양세문양세강원대학교강원대학교 컴퓨터과학전공컴퓨터과학전공 문양세문양세

Page 2: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

강의강의 내용내용알고리즘: 효율, 분석, 차수 – Part 2

프로그램과 알고리즘

순차검색과 이진검색

피보나찌 수 구하기

알고리즘 분석

차수 (O, , ) – Part 2

Computer Algorithmsby Yang-Sae MoonPage 2

Page 3: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

차수차수(Order)?(Order)?알고리즘: 효율, 분석, 차수 – Part 2

알고리즘이 얼마나 복잡한지를 정량적으로 다루기 위한 개념

알고리즘 A의 시간 복잡도가 0.1n2이고, 알고리즘 B의 시간 복잡도

가 1000n이라 하자 그렇다면 어떤 알고리즘이 더 좋은가?가 1000n이라 하자. 그렇다면, 어떤 알고리즘이 더 좋은가?• 항시 어떤 알고리즘이 좋다고 이야기할 수는 없다.

• 예를 들어 n이 100 이하라면 알고리즘 A가 시간이 적게 걸리고• 예를 들어, n이 100 이하라면 알고리즘 A가 시간이 적게 걸리고,n이 10000 이상이라면 알고리즘 B가 시간이 적게 걸린다.

그래도…, 어떤 알고리즘이 효율적인지 척도가 있어야 하지 않나?

일반적으로, 입력 크기 n이 매우 크다(커진다)고 가정하고 비교한다.일반적으로, 입력 크기 이 매우 크다(커진다)고 가정하고 비교한다

Computer Algorithmsby Yang-Sae MoonPage 3

Page 4: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

대표적인대표적인 복잡도복잡도 카테고리카테고리알고리즘: 효율, 분석, 차수 – Part 2

(lg n): 로그(logarithmic)

(n): 1차(linear)

(n lg n)(n lg n)

(n2): 2차(quadratic)

(n3): 3차(cubic)

(2n) 지수( i l)(2n): 지수(exponential)

(n!): factorial( )

Computer Algorithmsby Yang-Sae MoonPage 4

Page 5: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

시간시간 복잡도복잡도 비교비교 예제예제알고리즘: 효율, 분석, 차수 – Part 2

복잡도가 2차이하로구성된경우, 2차항이궁극적으로지배한다.

n 0.1n2 0.1n2+n+100

10 10 12010 10 120

20 40 16020 40 160

50 250 400

100 1,000 1,200

1,000 100,000 101,100

Computer Algorithmsby Yang-Sae MoonPage 5

Page 6: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

복잡도복잡도 함수의함수의 증가율증가율알고리즘: 효율, 분석, 차수 – Part 2

Computer Algorithmsby Yang-Sae MoonPage 6

Page 7: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2시간시간 복잡도별복잡도별 실제실제 실행실행 시간시간 비교비교

Computer Algorithmsby Yang-Sae MoonPage 7

Page 8: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

차수의차수의 정밀한정밀한 소개소개알고리즘: 효율, 분석, 차수 – Part 2

O(f(n)), (f(n)), (f(n))?

그래프보고, 단번에이해하기…

Computer Algorithmsby Yang-Sae MoonPage 8

Page 9: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2Big O Big O 표기법표기법 (1/2)(1/2)

정의: 점근적상한(Asymptotic Upper Bound)• 주어진복잡도 함수 f(n)에대해서 g(n)(f(n)) 이면 다음을 만족한다주어진복잡도 함수 f(n)에대해서 g(n)(f(n)) 이면 다음을 만족한다.• n N인 모든 정수 n에 대해서 g(n) c f(n)이성립하는 실수 c 0와음이아닌 정수 N이존재한다.

g(n) (f(n)) 읽는방법:g(n)은 f(n)의 Big 이다.

Computer Algorithmsby Yang-Sae MoonPage 9

Page 10: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2Big O Big O 표기법표기법 (2/2)(2/2)

어떤함수 g(n)이(n2)에 속한다는말은

• 함수 g(n)는궁극에가서는 (즉, 어떤임의의 N값보다큰값에대해서는) 함수 g(n)는궁극에가서는 (즉, 어떤임의의 N값보다큰값에대해서는) 어떤 2차함수 cn2 보다는작은값을가지게된다는것을뜻한다.(그래프상에서는아래에위치한다는의미이다.)

• 다시말해서, 그함수 g(n)은어떤 2차함수 cn2 보다는궁극적으로좋다고 (기울

기가낮다고) 말할수있다.

어떤알고리즘의시간복잡도가 (f(n))이라면

입력의크기 에대해서이알고리즘의수행시간은아무리느려도 보다는• 입력의크기 n에대해서이알고리즘의수행시간은아무리느려도 cf(n)보다는

빠르다. (궁극적으로, cf(n)이 상한이다.)

Computer Algorithmsby Yang-Sae MoonPage 10

Page 11: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2Big O Big O 표기법표기법 예제예제

n2+10n (n2) ?(1) n 10인모든 정수 n에 대해서 n2+10n 2n2 이성립한다 (1) n 10인모든 정수 n에 대해서 n2+10n 2n2 이성립한다. 그러므로, c = 2와 N = 10을선택하면, “Big ”의정의에 의해서

n2+10n (n2)이라고 결론지을 수 있다.( )이라 결론지을 수 있다

(2) n 1인 모든 정수 n에 대해서 n2+10n n2+10n2 = 11n2 이성립한다. 그러므로, c = 11와 N = 1을 선택하면, “Big ”의정의에 의해서러 , 와 을 선택하면, g 의정의에 의해서

n2+10n (n2)이라고 결론지을 수 있다.

Big O를 보이는데 단지 한가지 해답이 있는 것이 아니다.적당히큰 N과 c를선택하여 보이면 된다.적당히큰 과 를선택하여 보이면 된다

Computer Algorithmsby Yang-Sae MoonPage 11

Page 12: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 22n2과 n2 + 10n의 비교

Computer Algorithmsby Yang-Sae MoonPage 12

Page 13: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2Big O Big O 표기법표기법 다른다른 예제예제 (1/2)(1/2)

5n2 (n2) ?c=5와 N=0을 선택하면, n 0인모든정수 n에대해서c 5와 N 0을 선택하면, n 0인모든정수 n에대해서

5n2 5n2이 성립한다.

( 1)n n?

n 0인모든정수 n에 대해서 이성립한다. 그러므로 1/2와 N 0을 선택하면

( 1)( )2

n nT n

2( 1)2 2

n n n

그러므로, c=1/2와 N=0을 선택하면, T(n) (n2)이라고결론지을수있다.

n2 (n2+10n) ?n 0인모든정수 n에 대해서, n2 1 (n2+10n)이 성립한다. ( )그러므로, c=1와 N=0을 선택하면, n2 (n2+10n)이라고

결론지을수 있다.

Computer Algorithmsby Yang-Sae MoonPage 13

Page 14: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2Big O Big O 표기법표기법 다른다른 예제예제 (2/2)(2/2)

n (n2) ?n 1인모든정수 n에 대해서, n 1n2 이성립한다.n 1인모든정수 n에 대해서, n 1n 이성립한다.그러므로, c=1와 N=1을 선택하면, n (n2)이라 결론지을수있다.

n3 (n2) ?n N인모든 n에 대해서 n3 cn2 이성립하는 c와 N값은

존재하지않는다. 즉, 양변을 n2으로 나누면, n c 가 되는데 c를 아무리크게

잡더라도그 보다더큰 이 존재한다잡더라도그 보다더큰 n이 존재한다.

Computer Algorithmsby Yang-Sae MoonPage 14

Page 15: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2O(n2)에속하는 함수들

Computer Algorithmsby Yang-Sae MoonPage 15

Page 16: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2 표기법표기법 (1/2)(1/2)

정의: 점근적하한(Asymptotic Lower Bound)• 주어진복잡도 함수 f(n)에대해서 g(n) (f(n))이면다음을 만족한다 • 주어진복잡도 함수 f(n)에대해서 g(n) (f(n))이면다음을 만족한다.

• n N인 모든 정수 n에 대해서 g(n) c f(n)이성립하는 실수 c 0와음

이아닌 정수 N이존재한다.이아닌 정수 N이존재한다.

g(n) (f(n)) 읽는방법: g(n) (f(n)) 읽는방법: g(n)은 f(n)의오메가(omega)이다.

Computer Algorithmsby Yang-Sae MoonPage 16

Page 17: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2 표기법표기법 (2/2)(2/2)

어떤함수 g(n)이 (n2)에 속한다는말은

• 그함수는 궁극에 가서는 (즉 어떤 임의의 N 값보다 큰 값에 대해서는) • 그함수는 궁극에 가서는 (즉, 어떤 임의의 N 값보다 큰 값에 대해서는) 어떤 2차함수 cn2 의 값보다는 큰값을 가지게 된다는 것을 뜻한다.(그래프상에서는 윗부분에위치한다.)

• 다시말해서, 그 함수 g(n)은 어떤 2차함수 cn2 보다는궁극적으로

나쁘다고 (기울기가높다고)말할수 있다.나 다 (기울기가높다 )말할수 있다

어떤알고리즘의시간복잡도가 (f(n))이라면 어떤알고리즘의시간복잡도가 (f(n))이라면, • 입력의크기 n에 대해서 이알고리즘의 수행시간은 아무리 빨라도 cf(n)보다는느리다 (궁극적으로 f(n)이하한이다 ) 보다는느리다. (궁극적으로, f(n)이하한이다.)

Computer Algorithmsby Yang-Sae MoonPage 17

Page 18: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2 표기법의표기법의 예제예제 (1/3)(1/3)

n2 +10n (n2) ?n 0인모든정수 n에 대해서 n2+10n n2 이 성립한다. n 0인모든정수 n에 대해서 n 10n n 이 성립한다. 그러므로, c = 1와 N = 0을선택하면, n2 +10n (n2)이라

결론지을수 있다.결론지을수 있다

5 2 ( 2) ?5n2 (n2) ?n 0인모든정수 n에 대해서, 5n2 1n2 이성립한다. 그러므로 c=1와 N=0을 선택하면 5n2 (n2)이라 할수있다그러므로, c=1와 N=0을 선택하면, 5n2 (n2)이라 할수있다.

Computer Algorithmsby Yang-Sae MoonPage 18

Page 19: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2 표기법의표기법의 예제예제 (2/3)(2/3)

?( 1)( )

2n nT n

n

n 2인모든 n에 대해서 이성립한다.

그러므로, n 2인모든 n에 대해서 이성립한다.

12nn

2( 1) 12 2 2 4

n n n n n 성

따라서 과 N = 2를선택하면, 이라할수있다.2 2 2 4

41c 2( )T n n

3 2 ?

n 1인모든정수 n에 대해서, 이 성립한다.

3 2n n3 21n n

그러므로, c = 1와 N = 1을선택하면, 이라할 수있다. 3 2n n

Computer Algorithmsby Yang-Sae MoonPage 19

Page 20: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2 표기법의표기법의 예제예제 (3/3)(3/3)

n (n2) ?

모순유도에의한증명(Proof by contradiction):

이라가정하자. 2n n 이라가정하자

그러면 n N인모든정수 n에 대해서, 이성립하는실수

그리고음이아닌정수 이존재한다

2n c n

c > 0, 그리고음이아닌정수 N이존재한다.

위의부등식의양변을 cn으로 나누면 가 된다. nc

1

그러나이부등식은절대로성립할수없다.

(주어진어떤수(1/c)보다 큰 수가항시존재하기때문이다 )

c

(주어진어떤수(1/c)보다 큰 수가항시존재하기때문이다.)

따라서위의가정은모순이다.

Computer Algorithmsby Yang-Sae MoonPage 20

Page 21: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2(n2)에속하는 함수들

Computer Algorithmsby Yang-Sae MoonPage 21

Page 22: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2 표기법표기법 (1/2)(1/2)

정의: (Asymptotic Tight Bound)

복잡도 함수 f( )에대해서 (f( )) (f( )) (f( ))의관계가 성립한다• 복잡도 함수 f(n)에대해서 (f(n)) = O(f(n)) (f(n))의관계가 성립한다.

• 다시말하면, (f(n))은다음을 만족하는 복잡도 함수 g(n)의집합이다.

• 즉, n N 인 모든 정수 n에 대해서 c f(n) g(n) d f(n)이성립하는

실수 c 0와 d 0, 그리고 음이 아닌 정수 N이존재한다. 실수 와 , 리 음이 아닌 정수 이존재한다

참고: g(n) (f(n))은 “g(n)은 f(n)의 차수(order)”라고 한다.( 1)n n 2

예: 은 O(n2)이면서 (n2)이다. 따라서 이다.( 1)( )

2n nT n 2( )T n n

Computer Algorithmsby Yang-Sae MoonPage 22

Page 23: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2 표기법표기법 (2/2)(2/2)

Computer Algorithmsby Yang-Sae MoonPage 23

Page 24: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2(n2)에속하는 함수들

Computer Algorithmsby Yang-Sae MoonPage 24

Page 25: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2Small O(o) ?Small O(o) ?

Small 는복잡도함수끼리의관계를나타내기위한표기법이다.

자 사용되지않 개념이 강의에서제외한다자주사용되지않는개념이므로, 본강의에서제외한다.

Computer Algorithmsby Yang-Sae MoonPage 25

Page 26: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2차수의차수의 주요주요 성질성질 (1/2)(1/2)

iff g n f n f n g n

iff

b > 1이고 a > 1이면 loga n (logb n)은 항상성립한다

g n f n f n g n

b > 1이고 a > 1이면, loga n (logb n)은 항상성립한다.

다시말하면로그(logarithm) 복잡도함수는모두같은카테고

리에속한다 따라서 상 으 시한다리에속한다. 따라서통상 (lg n)으로 표시한다.

지수(exponential) 복잡도함수가모두같은카테고리안에있지수(exponential) 복잡도함수가모두같은카테고리안에있

는것은아니다.

n!은어떤지수복잡도함수보다도더나쁘다.

Computer Algorithmsby Yang-Sae MoonPage 26

Page 27: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2차수의차수의 주요주요 성질성질 (2/2)(2/2)

복잡도카테고리들은다음순서로나열된다.

2lg , , lg , , , , , , !j k n nn n n n n n n a b n

여기서 k>j>2이고 b>a>1이다.

Computer Algorithmsby Yang-Sae MoonPage 27

Page 28: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2극한을극한을 이용하여이용하여 차수를차수를 구하는구하는 방법방법

미분개념(로피탈의정리)를 사용하여차수를구할수있다.

이렇듯복잡한차수계산은잘사용되지않으므로생략한다.

Computer Algorithmsby Yang-Sae MoonPage 28

Page 29: 알고리즘알고리즘개요개요 효율 분석 차수) Part 2cs.kangwon.ac.kr/~ysmoon/courses/2011_1/alg/04.pdf · 2016-06-02 · 알고리즘: 효율, 분석, 차수–Part 2

알고리즘: 효율, 분석, 차수 – Part 2Homework Homework #2#2

Computer Algorithmsby Yang-Sae MoonPage 29