1 / 44

제 2 장 기본 개념

제 2 장 기본 개념. 수학적 배경 자료 구조와 알고리즘 알고리즘 성능 분석 성능 측정.

rodd
Download Presentation

제 2 장 기본 개념

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제 2장 기본 개념 • 수학적 배경 • 자료 구조와 알고리즘 • 알고리즘 성능 분석 • 성능 측정

  2. 1 수학적 배경1.1 표기법 : 실수 x에 대해(x의 floor) : x보다 작거나 같은 정수들 중에서 가장 큰 정수(x의 ceiling) : x보다 크거나 같은 정수들 중에서 가장 작은 정수<예>1.2 지수(1) XaXb = Xa+b (2) (3) (Xa)b = Xab (4) Xn+Xn = 2Xn ≠ X2n (5) 2n+2n = 2n+1

  3. 1.3 대수11[증명] X = logcb, y = logca, z = logab → cx = b, cy = a, az = b → (cy)z = cx = b → x = yz가 되어 z =x /y가 된다.

  4. 2 logab=loga+logb[증명] x=loga, y=logb, z=logab라 하고 밑이 2라 가정→ 2x =a, 2y = b, 2z =ab → 2x2y = 2z = ab → 2x+y = 2z =ab가되어 x+y = z가 된다

  5. ·유용한 공식(1) (2) (3) (4)1.4 수열(1) (2)식 (2)에서 만약 0<a<1이라면, 그 값은 에 접근

  6. (3) 의 계산가 정 :

  7. 의 계산(4)

  8. <예> 2+5+8+…+(3k-1) 의 계산2+5+8+…+(3k-1) = 3(1+2+3+…+k)-(1+1+1+…+1) (5) (6) (7) (8)

  9. 1.5 모드(modular) 연산·“a≡b(mod n)”: a는 모드 n에 대하여 b와 합동·a≡b(mod n) ↔ a와 b를 n으로 나누었을 때 그 나머지 값이 같음<예> 81≡61≡1(mod10)·a≡b(mod n) → a+c≡b+c(mod n) and ad≡bd(mod n)1.6 증명 방법(1) 수학적 귀납법p(m), p(m+1), …: 일련의 명제라 가정이들 명제들이 참이라는 것을 다음과 같이 보임

  10. 첫째, p(m)이 참임을 보임둘째, m≤k에 대해, p(k)가 참이면 언제나 p(k+1)이 참임을 보임위의 두 단계가 참이면 모든 명제는 참이 됨1피보나치 수열 에 대해 i≥1일 때, 임을 보이시오

  11. [증명]첫째, 임으로 자명 둘째,i=1, 2, …, k에 대해, 라 가정하고 i=k+1 일 때 이 참임을 보인다. 정의에 의해 이고 귀납 가정으로부터, 임으로 다음 식을 얻을 수 있다.

  12. (2) 모순 증명법·정리가 거짓 임을 가정하고 이러한 가정이 사실이 아님을 보임2가 무리수임을 보이시오.[증명] 가정 : 가 유리수 유리수의 정의에 따라 (n,m은 정수이고 서로소)양변을 제곱하여 정리 : 이 짝수이므로 도 반드시 짝수가 되어 n이 짝수

  13. n=2k로 표현할 수 있고 이것을 식 2m2 = n2에 대입 → 도 짝수가 되고 m 역시 마찬가지로 짝수m과 n이 동시에 짝수가 되므로 m과 n이 서로소라는 가정에 모순∴ 는 유리수가 아닌 무리수

  14. (3) 직접 증명법·주어진 유용한 정보로부터 추론을 통하여 원하는 결론에 다다를 수 있도록 유도3|x|는 x의 절대값을 나타내며 x가 양수이거나 0이면 x이고, x가 음수일 경우에는 -x가 된다. 만약 |x|>|y|이면 임을 보이시오.[증명] |x|>|y| 임으로 이고, 모든 수 z에 대해 임으로 이다.

  15. (4) 반례 증명법·명제를 모순이 되게 하는 하나의 예를 보임으로써 그 명제가 거짓임을 보이는 방법4피보나치 수열에서 명제 이 거짓임을 보이시오.[증명] 임으로 는 거짓이다.

  16. 2 자료 구조와 알고리즘2.1 정의·자료 구조 : 처리하고자 하는 자료들 사이의 관계를 고려하여 컴퓨터 내부에 표현하는 방법들을 총칭·알고리즘 : 자료 구조로 표현된 자료들을 이용하여 자료들을 처리하는 절차들의 모임·프로그램 : 자료구조 + 알고리즘

  17. 2알고리즘 알고리즘이란 특정한 일을 수행하는 명령어들의 유한집합으로 다음 조건을 만족(1) 입력(input): 외부에서 제공되는 0개 이상의 입력이 존재(2) 출력(output): 최소한 하나 이상의 결과를 생성(3) 명확성(definiteness): 각 명령어가 명확하고 애매 모호하지 않아야 함(4) 유한성(finiteness): 유한 단계를 거친 후 반드시 수행을 종료(5) 효율성(effectiveness): 모든 명령어는 효율적으로 실행 가능해야 함

  18. 알고리즘과 프로그램의 차이점 : 알고리즘은 유한성을 가져야하나 프로그램은 그럴 필요가 없음 <예> 운영 체제 : 시스템이 붕괴되지 않는 한 계속 수행5n개의 정수를 갖는 리스트에서 가장 큰 원소를 갖는 곳의 위치를 찾아 반환하는 알고리즘을 작성

  19. 2.2 반복 알고리즘과 순환 알고리즘·순환 함수 직접 순환(direct recursion) 함수 : 자기 자신을 직접 호출간접 순환(indirect recursion) 함수 : 호출된 함수가 호출한 함수를 다시 호출61부터 n까지 연속된 정수를 더하는 문제의 반복 및 순환 알고리즘 [풀이] 1부터 n까지 연속된 정수를 더하는 문제의 반복적 및 순환적 정의반복적 정의 : Isum = 1+2+3+ +n = 순환적 정의 : Rsum(i) = 1, i=1

  20. ·알고리즘을 순환적으로 정의하기 위해 필요한 절차① 순환 호출을 끝내는 종료 조건(boundary condition)을 설정② 각 순환 호출이 종료 조건에 한 단계씩 접근하도록 순환 호출을 구현

  21. 7Fac(n)=n!을 구하는 순환 알고리즘을 작성[풀이] n!은 다음과 같이 반복적 방법과 순환적 방법을 사용하여 정의될 수 있다.반복적 정의 : n!=n×(n-1)×(n-2)×…×1순환적 정의 : Fac(n) = 1, n = 1 인 양의정수 n × Fac(n-1), n≠1

  22. 3 알고리즘 성능 분석- 알고리즘의 성능 판단 기준 알고리즘 수행에 필요한 시간(시간 복잡도 : time complexity) 알고리즘의 수행에 필요한 기계 독립적인 시간의 양 알고리즘 수행에 필요한 공간(공간 복잡도 : space complexity)알고리즘의 수행에 필요한 기계 독립적인 공간의 양 정확성(correctness)알고리즘이 입력에 대한 정확한 결과를 출력해 내는지를 나타냄

  23. 간결성(simplicity)알고리즘의 간단하고 읽기 쉬운 정도를 나타냄최적성(optimality)해결하고자 하는 문제를 최소의 비용으로 해결하고 있는지를 나타냄3.1 시간 복잡도- 알고리즘을 수행하는 데 필요한 시간을 계산 : 하드웨어에 독립적인 실행 시간의 추정치를 사용- 실행 시간의 추정은 알고리즘이 실행한 연산의 빈도수로 추정

  24. 풀고자 하는 문제에 대해 전체 알고리즘에서 수행되는 가장 중요한 기본 연산(basic operation)들만으로 실행 시간을 추정<예>- 해결하고자 하는 문제에 내재된 기본 연산이 여러 개인 경우 : 각각의 중요한 기본 연산들의 실행 빈도수의 합으로간주하거나 중요 기본 연산 들에 가중치를 두어 계산

  25. 8n×n 행렬을 곱셈하는 알고리즘의 시간 복잡도를 분석3.2 공간 복잡도- 문제의 특정 입력에 따라 가변적으로 요구되는 공간의 양

  26. -고정적으로 요구되는 공간① 명령어 공간(프로그램 코드가 저장되는데 필요한 공간)② 단순 변수를 위해 필요한 공간③ 고정된 크기의 구조체 변수들이나 상수들을 위해서 필요한 공간-가변적으로 요구되는 공간 풀려고 하는 문제의 특정 입력에 의존하는 변수들이 필요로 하는공간<예> 함수가 순환을 사용할 때 요구되는 부가적인 공간

  27. 9n개의 숫자를 더하는 순환 함수의 공간 복잡도 분석 [풀이] 함수가 순환적으로 호출될 때 인수, 지역변수, 반환주소 등의 저장이 필요한번의 Rsum의 순환 호출에 의해 필요한 공간 :

  28. 두 개의 매개 변수, 반환 주소를 저장하기 위해 필요한 바이트 수 → 가정 : 정수와 포인터를 저장하기 위해 2바이트가 필요 → 한번 순환에 의해 필요한 기억 공간은 6바이트 → 수행에 필요한 공간의 양은 Rsum()이 n번 호출되므로 6n 바이트3.3 점근 표기법- 점근 표기법(asymptotic notation) : 상수 인자나 적은 수의 입력 자료는 무시하고 가장 중심이 되는 기본 연산의 실행 빈도수를 특정 입력 값의 함수 내는 표기법

  29. 알고리즘의 성능 분석을 위해 점근 표기법을 사용하는 이유① 같은 기능을 수행하는 두 알고리즘의 시간 복잡도를 비교② 입력 자료의 특성 변화에 따른 실행 시간의 증가를 예측- 함수 f, g : 음이 아닌 함수라 가정3<Big "oh">

  30. 10n≥2인 모든 n에 대해, 3n+2≤4n 임으로 3n+2=O(n) n≥2인 모든 n에 대해, 3n+3≤3n2임으로 3n+2=O(n2) 3. f(n) = amnm+…a1n+ao이면, f(n)=O(nm)이다.[증명] f(n) ≤ (|am|+|am-1|n-1+…+|a1|n-m+1+|a0|n-m)nm

  31. 4. <Omega> n≥n0인 모든 n에대하여 f(n)≥c·g(n)을 만족하는 양의 상수 c 와 n0가 존재 → f(n)=Ω(g(n))11 n≥1인 모든n에 대해 3n+2≥3n임으로3n+2=Ω(n) 6· 2n+n2 = Ω(n2)

  32. 5 <Theata>n≥n0인 모든 n에 대하여 c1·g(n)≤f(n)≤c2·g(n)을 만족하는 양의 상수 c1, c2, n0가 존재 → f(n)= (g(n)) 12 n≥2인 모든 n에 대해, 3n+2≥3n이고3n+2≤4n임으로 3n+2 = (n) 4 f(n)=O(g(n))이고 f(n)=Ω(g(n))이면 f(n)= (g(n))

  33. 13행렬의 덧셈을 구하는 알고리즘의 시간 복잡도를 - 표기법으로 표기[풀이] 7번째 있는 문장이 rows·cols만큼 실행 → (rows·cols)

  34. 14 이진 탐색 알고리즘의 시간 복잡도를 O-표기법으로 표기

  35. [풀이] 이진 탐색 알고리즘에서 기본 연산 : 비교 연산 검색해야 할 레코드= n → 한번 비교에 의해 검색 공간이 반으로 감소비교 횟수 T(n)은 다음과 같은 순환식으로 유도됨T(n) = 1, n=1T(n) =

  36. 이진 탐색 알고리즘은 최악의 경우 시간 복잡도 : O(logn)최선의 경우 시간 복잡도 : O(1)3.4 실제적인 복잡도- 알고리즘의 시간 복잡도 : 입력 자료의 특성에 관한 함수<예> 알고리즘 A의 복잡도 : O(n), 알고리즘 B의 복잡도: → 충분히 큰 n에 대해 A가 B보다 빠르다고 할 수 있음

  37. n 값의 변화에 따른 함수 값의 비교3.5 최적 알고리즘- 최적 알고리즘 : 문제 자체에 내재된 복잡도와 알고리즘의 최악의 경우의 복잡도가 같은 알고리즘

  38. → 더 빠른 알고리즘이 존재하지 않는다는 의미- 알고리즘의 최적성(optimality)을 결정하기 위해 하한(lower bound)과 상한(upper bound)이라는 개념을 사용하한(lower bound) ·특정 문제를 해결하기 위해 가능한 모든 알고리즘을 고려하여 이들 중 최악의 경우가 가장 최소인알고리즘의 복잡도·문제 자체에 내재된 복잡도를 수학적으로 분석

  39. 상한(upper bound) ·특정 문제를 해결하기 위해 기존의 알려진 알고리즘들 중에서 최악의 경우 그 복잡도가 최소인 알고리즘의 복잡도- 최적 알고리즘 : 그 알고리즘의 복잡도와 그 문제의 하한이 같은 알고리즘

  40. 15 n개의 원소를 갖는 리스트 내에서 가장 큰 원소를 찾는 문제의 최적 알고리즘

  41. [풀이] 알고리즘의 기본 연산 : 비교 연산① 상한: FindMax알고리즘의 5번째 줄에서 (n-1)번 비교가 이루어지므로 알고리즘의 상한은 (n-1)② 하한: ·리스트 내의 모든 원소가 서로 다르다고 가정·n개의 서로 다른 원소에서 (n-1)개의 원소는 최대값이 아님·임의의 원소가 리스트 내의 최소한 하나의 다른 원소보다 적다면 그 원소는 최대값이 아님·(n-1)개의 원소는 다른 것보다 적게 되고, 한번 비교에 의해서 하나의 원소가 다른 원소 보다 적다는 사실을 알 수 있으므로 (n-1)번의 비교가 필요·문제 자체에 내재된 복잡도 : (n-1)

  42. FindMax알고리즘의복잡도가 그 하한 값과 같으므로 최적 알고리즘4 성능 측정- 실제 시스템에서 프로그램의 실행 시간을 측정- C 언어에서 사건(event)들의 시간을 측정하기 위해 사용하는 시스템 호출① clock() : 프로그램의 수행이 시작되어 사용된 프로세서의 시간을 반환② time() : 1970년 1월 1일 00:00:00시부터 경과된 시간을 초 단위로 반환

More Related