33
1/33 동명대학교 멀티미디어공학과 알고리즘 - 1장 서론 멀티미디어공학과 조 미 경 교수

알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

1/33

동명대학교 멀티미디어공학과

알고리즘 - 1장 서론

멀티미디어공학과

조 미 경 교수

Page 2: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

2/33

동명대학교 멀티미디어공학과

알고리즘이란?

문제를 해결하거나 함수를 계산하기 위해 좇아야 할 모호함이 없는 간단한 명령들로 구성된 일련의 순서적 단계

페르시아 수학자 Al Khowarizimi(서기 825년) 이름에서 유래

튜링 기계(turing machine)에 의해 수행 가능한 프로시저

Page 3: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

3/33

동명대학교 멀티미디어공학과

프로그램 작성을 위한 접근 방법

(a) 어려운 접근법 (b) 쉬운 접근법

문제의 파악 문제의 파악

프로그램 작성

프로그램

문제해결 단계

해결방안 구상(알고리즘)

프로그램 작성

프로그램

데이터 구조 ? 어떤 부분을 함수로만들 것인가?

어떤 알고리즘 ? 의사코드 작성

Page 4: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

4/33

동명대학교 멀티미디어공학과

알고리즘의 요건

① 외부에서 0개 이상의 입력을 받아들여, 하나이상의 출력을 생성한다.

② 각 단계가 단순하고 모호하지 않아야 한다.

③ 한정된 수의 작업 후에는 반드시 끝나야 한다.

④ 모든 명령이 수행 가능해야 한다.

⑤ 효율적이어야 한다.

Page 5: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

5/33

동명대학교 멀티미디어공학과

알고리즘의 생성단계

① 알고리즘의 설계

② 알고리즘의 표현

③ 알고리즘의 정확성 검증

• 복잡한 수학적 기법 요구

④ 알고리즘의 효율 분석

• 시간 복잡도(time complexity)

• 공간 복잡도(space complexity)

Page 6: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

6/33

동명대학교 멀티미디어공학과

알고리즘 기술 언어

교재 - C 언어에 기반을 둔 의사 언어

Page 7: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

7/33

동명대학교 멀티미디어공학과

알고리즘 설계 기법

주어진 문제에 대한 알고리즘 설계 예

– 가장 큰 수를 찾는 문제

• 어떻게 원소들을 비교할 것인가?

– 원하는 키 k 를 찾는 문제

• 정렬을 할 것인가?

– 원소들 중에서 합이 특정 값이 되도록 하는 원소의 집합을 찾는 문제

Page 8: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

8/33

동명대학교 멀티미디어공학과

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7](a)

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7](b)

최대수를 찾을 때의 가능한 비교 순서

Page 9: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

9/33

동명대학교 멀티미디어공학과

SeqSearch (A, n, x)

입력 : A, n, x

출력 : j

1 {

2 j = 1;

3 While (j≤n && A(j)≠x)

4 j = j + 1;

5 return (j);

6 }

순차 탐색 알고리즘

Page 10: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

10/33

동명대학교 멀티미디어공학과

알고리즘의 설계 기법

다양하며 일정한 틀을 제시하기가 곤란

대표적인 설계 기법

– 욕심쟁이 방법(Greedy method)

– 분할 정복(Divide and conquer)

– 동적 프로그래밍(Dynamic programming) 방법

– Branch and bound 방법

– Backtracking 방법

Page 11: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

11/33

동명대학교 멀티미디어공학과

욕심쟁이 방법

해를 구하는 일련의 선택 과정마다 그 단계에서 최선이라고 볼 수 있는 선택을 행해나가면결과적으로 전체적인 최적 해를 구할 수 있을것이라는 희망적인 전략을 취하는 방법

욕심쟁이 방법으로 해를 구할 수 없는 문제도많다.

Page 12: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

12/33

동명대학교 멀티미디어공학과

욕심쟁이 방법의 예-배낭 문제

M = 10, n = 3

(p1, p2, p3) = (20, 15, 10)

(w1, w2, w3) = (16, 4, 2)

( )5,75.3,25.1),,(3

3

2

2

1

1 =wp

wp

wp

최대이익 = w2 + w3 + w1 의 4/16 = 30

Page 13: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

13/33

동명대학교 멀티미디어공학과

0/1 배낭 문제-욕심쟁이 방법 적용 불가

M = 10, n = 4

(P1, P2, P3, P4 ) = (15, 20, 14, 9)

(W1, W2, W3, W4 ) = (3, 5, 4, 3)

)3,5.3,4,5(),,,(4

4

3

3

2

2

1

1 =wp

wp

wp

wp

최대이익 = W1 + W3 + W4 = 38

Page 14: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

14/33

동명대학교 멀티미디어공학과

알고리즘의 분석

정확성 분석

– 증명 → 이론적

– 테스트 데이터에 의한 디버깅 → 실용적

효율 분석

– 시간 복잡도(time complexity)

• 알고리즘 수행 시간 분석

– 공간 복잡도(space complexity)

• 알고리즘 수행에 필요한 메모리 양 분석

Page 15: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

15/33

동명대학교 멀티미디어공학과

시간 복잡도(I)

알고리즘의 수행시간

– 실제 컴퓨터에서 수행한 시간 측정

– 각 명령문 모두 단위 시간에 수행하는 것으로 가정하고 명령문의 수행 횟수의 합

입력 크기의 함수

– 입력 크기가 커질수록

Page 16: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

16/33

동명대학교 멀티미디어공학과

시간 복잡도(II)

평균 수행시간 A(n)

최악 수행시간 W(n)

최선 수행시간 B(n)

∑∈

=nSI

ItIPnA )()()(

)(max)( ItnWnSI∈

=

)(min)( ItnBnSI∈

=

Page 17: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

17/33

동명대학교 멀티미디어공학과

SeqSearch (A, n, x)

입력 : A, n, x

출력 : j

1 {

2 j = 1;

3 While (j≤n && A(j)≠x)

4 j = j + 1;

5 return (j);

6 }

순차 탐색 알고리즘

c1

c2

c3

c4

k번

k-1번

bakccckccckckcc +=+−++=+−++ )()()1( 431324321

Page 18: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

18/33

동명대학교 멀티미디어공학과

순차 탐색 수행 시간(I)

bakccckccckckcc +=+−++=+−++ )()()1( 431324321

평균: k=n/2

A(n)=an/2+b

최악: k=n

W(n)=an+b

Page 19: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

19/33

동명대학교 멀티미디어공학과

순차 탐색 수행 시간(II)

(상수*n + 상수)

상수 항은 몇 개의 명령문들의 수행시간을 합쳐놓은 것

상수 항보다는 입력 크기 n의 차수가 더 중요

알고리즘의 수행 시간이 문제가 되는 것은 데이터의개수가 많을 때이고 이런 경우 실행 시간은 상수 항이 아닌 n의 최고 차수에 좌우

Page 20: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

20/33

동명대학교 멀티미디어공학과

함수 차수와 수행시간(I)

알고리즘 1 2 3 4 5

시간(μs) 33n 46nlgn 13n2 3.4n3 2n

n=10

n=100

n=1000

n=10,000

n=100,000

.00033초

.003초

.033초

.33초

3.3초

.0015초

.03초

.45초

6.1초

1.3초

.0013초

.13초

13초

22분

1.5일

.0034초

3.4초

.94시간

39일

108년

.001초

4ⅹ104세기

처리 가능 최대

입력개수

1초

1분

30,000

1,800,000

2,000

82,000

280

2200

67

260

20

26

Page 21: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

21/33

동명대학교 멀티미디어공학과

함수 차수와 수행시간(II)

알고리즘의 분류

① 1 : 상수형(constant)

② logN : 로그형(logarithmic)

③ N : 선형(linear)

④ NlogN : “NlogN”⑤ N2 : 평방형(quadratic)

⑥ N3 : 입방형(cubic)

⑦ 2N : 지수형(exponential)

Page 22: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

22/33

동명대학교 멀티미디어공학과

점근 성능

입력의 크기 n이 커질 때의 알고리즘 성능

상수 항 보다는 입력의 크기 n의 최고차수에좌우

Page 23: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

23/33

동명대학교 멀티미디어공학과

(1) n ≥ n0인 모든 n에 대하여 f(n) ≤ c · g(n)을 만족하는 양

의 상수 c, n0이 존재하면 f(n) = O(g(n))이다. (점근적 상한)

점근 성능의 표기법(I)

n0

c g(n)f(n)

(a) f(n) = O(g(n))

Page 24: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

24/33

동명대학교 멀티미디어공학과

(2) n > n0인 모든 n에 대하여 f(n) ≥ c · g(n)을 만족하는

양의 상수 c, n0이 존재하면 f(n) = Ω(g(n))이다.

(점근적 하한)

점근 성능의 표기법(II)

c g(n)

n0

f(n)

(b) f(n) = Ω (g(n))

Page 25: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

25/33

동명대학교 멀티미디어공학과

(3) n > n0인 모든 n에 대하여 c1 · g(n) ≤ f(n) ≤ c2 · g(n)

을 만족하는 양의 상수 c1, c2, n0 이 존재하면,

즉 f(n) = Ω (g(n)) = O(g(n))이면 f(n) = Θ (g(n))이다.

점근 성능의 표기법(III)

n0

c2 g(n)f(n)

(c) f(n) = Θ (g(n))

c1 g(n)

Page 26: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

26/33

동명대학교 멀티미디어공학과

점근 성능의 표기법(IV)

...),(),(),(752 4322 nOnOnOnn =+−

))()(())(())(()()()2()))(),((max()()()1(

))(()()),(()(

212121

2121

2211

ngngOngOngOnfnfngngOnfnf

ngOnfngOnf

⋅=⋅=⋅=+

==

)2()()()log()()(log)1( 32 nOnOnOnnOnOnOO <<<<<<<

Page 27: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

27/33

동명대학교 멀티미디어공학과

점근 성능과 수행시간

시간 복잡도가 다른 프로그램들의 n 값에 따른대한 속도 변화

– 프로그램 P : Θ(n ), 프로그램 Q : Θ(n2 )

– 충분히 큰 n에 대한 프로그램 P는 Q에 대해 빠르다.

Page 28: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

28/33

동명대학교 멀티미디어공학과

계산복잡도와 표기법

시간복잡도를 구하려면 루프의 반복횟수를 조사하면 된다.최악의 실행시간이 O(n2)이다.

최악의 실행시간이 Θ(n2)이다.

최악의 실행시간이 Ω(n2)이다.

최선의 실행시간이 Ω(n2)이다.

실행시간이 O(n2)이다.

실행시간이 Θ(n2)이다.

실행시간이 Ω(n2)이다.

Page 29: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

29/33

동명대학교 멀티미디어공학과

BinarySearch (l, r, A, x)/* 입력 : n개의 숫자 A[0],A[1],…,A[n/2]과 숫자 x

출력 : x가 포함되어 있을 경우 그 인덱스 아니면, -1

A[1],A[I+1],…,A[r-1],A[r]에서 x를 찾는다. */

{1 med = (r-1)/2;2 If (A[med]=x) return (med);3 else if (A[med]>x) BinarySearch (l,med-1, A, x);4 else BinarySearch (med+1, r, A, x);

}

순환 알고리즘 - 이진 탐색 알고리즘

Page 30: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

30/33

동명대학교 멀티미디어공학과

순환 알고리즘 - 팩토리얼

int factorial ( int n ) {

if( n == 0 ) return 1;return n* factorial (n-1);

}

n! = (n)*(n-1)*(n-2)*(n-3)*…*2*1 = n*(n-1)!(n-1)! = (n-1)*(n-2)*(n-3)*… *2*1 = (n-1)*(n-2)!…………………………

Page 31: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

31/33

동명대학교 멀티미디어공학과

순환 알고리즘 - 하노이의 탑

세 개의 탑 A,B,C가 있고 A에는 각각 크기가 다른 원반 64개가쌓여 있다. 탑에 원반을 쌓는 원칙은 반드시 큰 것이 작은 것 밑에와야 하고 한번에 한 개씩 만 옮길 수 있다고 한다. C를 중간 저장장소로 하여 A에 있는 모든 원반을 B로 옮기는 문제

위쪽 n-1개의 원반 전체를 하나로 생각하고 이 전체를 C로 옮기고 난 후 가장 큰 원반을 B로 옮긴다. 그런 다음 n-1개의 원반전체를 B로 옮긴다. 다음 단계에서 n-1개의 원반에 대해 위의과정을 뒤풀이. 순환 알고리즘으로 문제 해결

Page 32: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

32/33

동명대학교 멀티미디어공학과

이진 탐색의 시간복잡도 분석

점화식 : T(n) = T(n/2) + O(1)

순환과 점화 관계(I)

Page 33: 알고리즘-1장서론cfs5.tistory.com/upload_control/download.blog?fhandle=... · 2015-01-22 · 알고리즘의분석 정확성분석 – 증명→이론적 – 테스트데이터에의한디버깅→실용적

33/33

동명대학교 멀티미디어공학과

기본적인 점화식과 그 해

)lg()()1()1(),()2/(2)()6(

)()()1()1(),1()2/(2)()5(

)()()1()1(),()2/()()4(

)(lg)()1()1(),1()2/()()3(

)()()1()1(),()1()()2(

)()()1()1(),1()1()()1(

2

nnnTTnnTnT

nnTTnTnT

nnTTnnTnT

nnTTnTnT

nnTTnnTnT

nnTTnTnT

Θ=Θ=Θ+=

Θ=Θ=Θ+=

Θ=Θ=Θ+=

Θ=Θ=Θ+=

Θ=

Θ=Θ+−=Θ=

Θ=Θ+−=