29
2014 년 년년년 년년년년년 년년년년년년년 년년년 년년년년 (Algorithm) 년 년년년년 년년 ( 년년 , 년년 , 년년 ) Part 2

2014 년 봄학기 강원대학교 컴퓨터과학전공 문양세

  • Upload
    eara

  • View
    118

  • Download
    0

Embed Size (px)

DESCRIPTION

알고리즘 (Algorithm)  알고리즘 개요 ( 효율 , 분석 , 차수 ) Part 2. 2014 년 봄학기 강원대학교 컴퓨터과학전공 문양세. 강의 내용. 알고리즘 : 효율 , 분석 , 차수 – Part 2. 프로그램과 알고리즘 순차검색과 이진검색 피보나찌 수 구하기 알고리즘 분석 차수 (O, , ) – Part 2. 차수 (Order)?. 알고리즘 : 효율 , 분석 , 차수 – Part 2. 알고리즘이 얼마나 복잡한지를 정량적으로 다루기 위한 개념 - PowerPoint PPT Presentation

Citation preview

Page 1: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

2014 년 봄학기강원대학교 컴퓨터과학전공 문양세

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

Part 2

Page 2: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 2

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

프로그램과 알고리즘

순차검색과 이진검색

피보나찌 수 구하기

알고리즘 분석

차수 (O, , ) – Part 2

Page 3: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 3

차수 (Order)?

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

알고리즘 A 의 시간 복잡도가 0.1n2 이고 , 알고리즘 B 의 시간 복잡도가 1000n 이라 하자 . 그렇다면 , 어떤 알고리즘이 더 좋은가 ?• 항시 어떤 알고리즘이 좋다고 이야기할 수는 없다 .• 예를 들어 , n 이 100 이하라면 알고리즘 A 가 시간이 적게 걸리고 ,

n 이 10000 이상이라면 알고리즘 B 가 시간이 적게 걸린다 .

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

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

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

Page 4: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 4

대표적인 복잡도 카테고리

(lg n): 로그 (logarithmic)

(n): 1 차 (linear)

(n lg n)

(n2): 2 차 (quadratic)

(n3): 3 차 (cubic)

(2n): 지수 (exponential)

(n!): factorial

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

Page 5: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 5

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

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

n 0.1n2 0.1n2+n+100

10 10 120

20 40 160

50 250 400

100 1,000 1,200

1,000 100,000 101,100

Page 6: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 6

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

Page 7: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 7

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

Page 8: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 8

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

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

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

Page 9: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 9

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

정의 : 점근적 상한 (Asymptotic Upper Bound)• 주어진 복잡도 함수 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 이다 .

Big O 표기법 (1/2)

Page 10: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 10

어떤 함수 g(n) 이 (n2) 에 속한다는 말은• 함수 g(n) 는 궁극에 가서는 ( 즉 , 어떤 임의의 N 값보다 큰 값에 대해서는 )

어떤 2 차 함수 cn2 보다는 작은 값을 가지게 된다는 것을 뜻한다 .( 그래프 상에서는 아래에 위치한다는 의미이다 .)

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

어떤 알고리즘의 시간복잡도가 (f(n)) 이라면 • 입력의 크기 n 에 대해서 이 알고리즘의 수행시간은 아무리 느려도 cf(n)

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

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

Page 11: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 11

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

n2+10n (n2) ?

(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 ” 의 정의에 의해서 n2+10n (n2) 이라고 결론지을 수 있다 .

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

Big O 표기법 예제

Page 12: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 12

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

Page 13: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 13

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

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

?n 0 인 모든 정수 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) 이라고 결론지을 수 있다 .

Big O 표기법 다른 예제 (1/2)

( 1)( )

2n n

T n

2( 1)

2 2

n n n

Page 14: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 14

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

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

n3 (n2) ?n N 인 모든 n 에 대해서 n3 cn2 이 성립하는 c 와 N 값은 존재하지 않는다 . 즉 , 양변을 n2 으로 나누면 , n c 가 되는데 c 를 아무리 크게 잡더라도 그 보다 더 큰 n 이 존재한다 .

Big O 표기법 다른 예제 (2/2)

Page 15: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 15

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

Page 16: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 16

정의 : 점근적 하한 (Asymptotic Lower Bound)

• 주어진 복잡도 함수 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) 의 오메가 (omega) 이다 .

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

Page 17: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 17

어떤 함수 g(n) 이 (n2) 에 속한다는 말은• 그 함수는 궁극에 가서는 ( 즉 , 어떤 임의의 N 값보다 큰 값에

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

• 다시 말해서 , 그 함수 g(n) 은 어떤 2 차 함수 cn2 보다는 궁극적으로 나쁘다고 ( 기울기가 높다고 ) 말할 수 있다 .

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

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

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

Page 18: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 18

n2 +10n (n2) ?n 0 인 모든 정수 n 에 대해서 n2+10n n2 이 성립한다 .

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

5n2 (n2) ?n 0 인 모든 정수 n 에 대해서 , 5n2 1n2 이 성립한다 .

그러므로 , c=1 와 N=0 을 선택하면 , 5n2 (n2) 이라 할 수 있다 .

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

Page 19: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 19

?

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

그러므로 , n 2 인 모든 n 에 대해서 이

성립한다 .

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

있다 .

?

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

그러므로 , c = 1 와 N = 1 을 선택하면 , 이라 할

수 있다 .

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

( 1)( )

2n n

T n

12n

n

2( 1) 12 2 2 4

n n n nn

41c 2( )T n n

3 2n n3 21n n

3 2n n

Page 20: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 20

n (n2) ?

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

이라 가정하자 .

그러면 n N 인 모든 정수 n 에 대해서 , 이

성립하는 실수 c > 0, 그리고 음이 아닌 정수 N 이 존재한다 .

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

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

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

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

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

2n n

2n c n

nc

1

Page 21: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 21

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

Page 22: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 22

정의 : (Asymptotic Tight Bound)

• 복잡도 함수 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)” 라고 한

다 .

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

이다 .

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

( 1)( )

2n n

T n

2( )T n n

Page 23: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 23

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

Page 24: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 24

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

Page 25: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 25

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

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

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

Page 26: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 26

iff

iff

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

다 .

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

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

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

안에 있는 것은 아니다 .

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

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

g n f n f n g n

g n f n f n g n

Page 27: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 27

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

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

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

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

Page 28: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 28

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

다 .

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

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

Page 29: 2014 년  봄학기 강원대학교  컴퓨터과학전공  문양세

Computer Algo-rithmsby Yang-Sae Moon

Page 29

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