(algorithm)jullio.pe.kr/lecture/2017/05inu2017_d_math_ch03.pdf이산수학 discrete mathematics...

48
이산수학 Discrete Mathematics 인천대학교 컴퓨터공학과 공학시인 이숙 이철호 교수 알고리즘(Algorithm) [email protected] [email protected] 010‐3957‐6683 모바일컴퓨팅 연구실 07‐401

Upload: others

Post on 13-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

이산수학Discrete Mathematics

인천대학교 컴퓨터공학과

공학시인 이숙 이철호 교수

알고리즘(Algorithm)

[email protected]@inu.ac.kr010‐3957‐6683

모바일컴퓨팅 연구실07‐401호

Page 2: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

꿈의 중독자가 되라출처 : 조영탁의 행복한 경영 이야기

나는 여러분이‘꿈 중독자’가 되었으면 합니다.

꿈이 크고꿈이 선명하면남이 하지 말라고 해도스스로 열심히 노력하게 될 것입니다.

반대로 꿈이 없다면내가 지금 무엇을 해야 하는지알지 못합니다.

그래서 자기도 모르게시간을 낭비하게 됩니다.

그런 하루하루가 쌓이면시간이 갈수록엄청난 차이가 생기게 되는 것입니다.- 김우중 대우 창업회장, ‘김우중 어록’에서

2

전 세계를 누볐던 80대 노 기업가가,2017년 GYBM(김우중 사관학교) 20대 연수생과의 대화에서강조한 내용입니다.

젊은이뿐만 아니라이 시대를 살아가는모든 이에게들려주는 메시지라 생각합니다.

일단꿈부터,큰 꿈을 꾸는 것부터시작해야 합니다.

거기서새로운 인생이 시작됩니다.

Page 3: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

지난 주에 …

3

어떤 회사에 근무하는 60명의 직원에게 해외 여행 경험을 물었다.

유럽 여행을 가본 사람은 35명,

동남아 여행을 가본 사람은 28명이었다.

해외여행을 한 번도 가본 적이 없는 사람은 5명이었다.

동남아 여행은 가봤지만 유럽 여행을 가본 적 없는사람은 몇 명일까?

동남아여행경험자

유럽여행경험자

5명

전체 60명유럽여행자 : A = 35 명동남아 여행자 : B = 28 명전체 : U = 60 명~(A U B) = 5 명A U B = U – 5 = 55 명A ∩ B = (A + B) – (A U B ) = 35 + 28 – 55 = 8~A = B - A ∩ B = 28 – 8 = 20

그러므로 여행 경험자 중 유럽을 가본적 없는 사람은 20 명(즉 해외여행 경험이 있는 사람중 동남아만 가본 사람이 20명)

AB

유럽만 가본 사람 : 27동남아만 가본 사람 : 20둘 다 가본 사람 : A ∩ B = 8

U

A ∩ B

Page 4: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

오늘의 강의 목표

• 알고리즘(Algorithm)

- 알고리즘

- 탐색(search)

- 정렬(sort)

- 함수의 증가

- 알고리즘 복잡도

4

Page 5: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

알고리즘이란?

• 알고리즘(algorithm) :

컴퓨터 프로그램으로 특정한 일을 수행하는

명령어의 유한한 순서 있는 집합

• 가장 효율적인 알고리즘을 찾는 것이 중요

• 수학 문제를 풀기 위해 정의나 정리들을 활용

• 컴퓨터 수행 가능한 효율적인 알고리즘을 사용

• 1830년 배비지(Babbage)와 러브레이스(Lovelace) 처음 주창

• 1973년 컴퓨터 과학자인 크누스(Knuth)가 정립

컴퓨터 프로그래밍의 기술(The Art of Computer Programming)

5

Page 6: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

알고리즘

• 알고리즘 (algorithm)특정 문제를 해결하기 위해 기술한 일련의 명령문

• 프로그램 (program)알고리즘을 컴퓨터가 이해하고 실행할 수 있는

특정 프로그래밍 언어로 표현한 것

표현 : 순서도(flow chart), 유사 코드(pseudo code), 언어(language)

6

Page 7: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

알고리즘의 주요 특성

1) 입력(input) : 문제를 풀기 위한 입력

2) 출력(output) : 문제를 해결했을 때 답의 출력

3) 명확성(definiteness) : 각 단계가 실행된 후에는 결과가 확정(정의)

4) 정확성(correctness) : 주어진 문제를 정확하게 해결해야 함

5) 유한성(finiteness) : 유한 횟수의 명령이 수행된 후 출력을 만들어야

6) 효율성(effectiveness) : 정확하면서도 효율적으로 유한 시간내에 수행

7) 일반성(generality) : 요구되는 형태의 모든 문제에 적용

7

Page 8: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

자료구조와 알고리즘

8

80 70 90 30

score[]

자료구조 알고리즘

tmp←score[0]; for i ← 1 to n do

if score[i]>tmpthen tmp←score[i];

프로그램 = 자료구조 + 알고리즘

(예) 최대값 탐색 프로그램 = 배열+ 순차탐색

Page 9: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

탐색(search) 알고리즘

• 탐색(search)

주어진 파일 또는 원소들 중에서 어떤 특정한 원소를 찾는 것

• 선형(순차) 탐색(sequential search) :

원소들이 정렬되어 있지 않을 경우

원소들을 처음부터 비교하여 찾는 것

• 이진 탐색(binary search) :

원소들이 정렬되어 있을 경우 순차 탐색보다 빠름

배열 가운데의 원소 값과 찾으려는 값을 비교하여,

비교된 결과에 따라

왼쪽 원소의 배열 또는 오른쪽 원소의 배열 중에서 다시 찾기를 계속함

9

Page 10: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

선형 탐색(sequential search)

10

Page 11: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

이진 탐색(binary search)

11

Page 12: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

이진 탐색(binary search)예제 3-page 2201, 2, 3, 5, 6, 7, 8, 10, 12,13,15,16,18,19,20,22

19를 찾음???

1) 두 개로 나눔

(a) 1, 2, 3, 5, 6, 7, 8, 10

(b) 12,13,15,16,18,19,20,22

2) 찾으려는 19와 (a)의 가장 마지막 큰 항과 비교하면 19가 큼으로 (b)를 둘로 쪼개서 탐색

c) 12,13,15,16

d) 18,19,20,22

12

3) (c)의 마지막 항과 19를 비교하여 크므로 d)를 둘로 나누어 탐색(e) 18,19(f) 20,224) (e)의 마지막 항과 19를 비교, 크지 않으므로 둘로 나눔(g) 18(h) 195) 탐색하려는 19가 (g)의 18보다 크므로 (h)항으로 탐색6) 탐색 처음 포인트가 끝 포인트보다 작지 않으며,

19와 같은지를 비교하여, 같으면 탐색 결과를 찾았다고 보고함.

Page 13: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

분할 정복 알고리즘(divide and conquer algorithms)

그대로 해결할 수 없는 문제를 작은 문제로 분할하여,

문제를 해결하는 방법이나 알고리즘

알고리즘이 효율적인 이유

큰 문제를 작은 문제로 나누어서 해결할 수 있음

13

Page 14: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬(sort) 알고리즘

임의로 나열되어 있는 데이터

주어진 항목에 따라 크기 순서대로

작은 순서부터(오름차순, ascending order)

또는 큰 순서부터(내림차순, descending order)

늘어놓는 것

• 정렬되어 있는 데이터들은 다음과 같은 작업을 수행할 때 응용

(1) 데이터를 탐색할 때

(2) 리스트(list)에 있는 다른 항목들을 비교할 때

14

Page 15: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

버블 정렬(bubble sort)

15

예제 4 : 3, 2, 4, 1, 5 – page 222

Page 16: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

삽입 정렬(insert sort)

• 예제 5 : 3, 2, 4, 1, 5 – page 2231) [2]과 앞의 원소 처음부터 비교 : 3, [2], 4, 1, 5 2, [3], 4, 1, 5

2) [4]와 앞의 원소 처음부터 비교 : 2, 3, [4], 1, 5 2, 3, [4], 1, 5

3) [1]과 앞의 원소 처음부터 비교 : 2, 3, 4, [1], 5 1, 2, 3, 4, [5]

4) [5]와 앞의 원소 처음부터 비교 : 1, 2, 3, 4, [5] 1, 2, 3, 4, 5

16

Page 17: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

욕심쟁이 알고리즘(greedy algorithm)• 최적해 문제

• 매 선택에서 지금 당장의 순간에 최적인 해를 수행

전체적으로 최적해가 아닐 수 있음

17

Page 18: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

욕심쟁이 알고리즘(greedy algorithm)• 예제 6 거스름돈 문제 : 224 page• 25센트, 10센트, 5센트, 1센트 동전으로 가장 적은 수의

동전을 사용하여 67센트를 거슬러 주는 방법

1) 67 – 25 = 42센트 25센트 1개

2) 42 – 25 = 17센트 25센트 1개

3) 17 – 10 = 7센트 10센트 1개

4) 7 – 5 = 2센트 5센트 1개

5) 2 – 1 = 1센트 1센트 1개

6) 1 -1 = 0센트 1센트 1개

전체 해)

25센트 2개, 10센트 1개, 5센트 1개, 1센트 2개

18

Page 19: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

욕심쟁이 알고리즘(greedy algorithm)• 예제 6 거스름돈 문제-1 : 224 page

25센트, 10센트, (5센트:사용 안함), 1센트 동전으로

가장 적은 수의 동전을 사용하여 30센트를 거슬러 주는 방법

1) 30 – 25 = 5센트 25센트 1개

2) 5 – 1 = 4센트 1센트 1개

3) 4 – 1 = 3센트 1센트 1개

4) 3 – 2 = 2센트 1센트 1개

5) 2 – 1 = 1센트 1센트 1개

6) 1 -1 = 0센트 1센트 1개

전체 해)

25센트 1개, 1센트 5개 전체 6개 사용

그러나 10센트 3개로 해결 가능!!!

19

Page 20: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘

• 퀵 정렬(quick sort)- 분할정복 방법을 통해 리스트를 정렬

- 리스트 가운데서 하나의 원소를 고름(피벗)

- 피벗 앞에는 피벗보다 값이 작은 모든 원소들이 오고,

피벗 뒤에는 피벗보다 값이 큰 모든 원소들이 오도록

피벗을 기준으로 리스트를 둘로 나눔(분할)

- 분할을 마친 뒤에 피벗은 더 이상 움직이지 않는다.

- 분할된 두 개의 작은 리스트에 대해

- 재귀(Recursion)적으로 이 과정을 반복

- 재귀는 리스트의 크기가 0이나 1이 될 때까지 반복

- 재귀 호출이 한번 진행될 때마다

최소한 하나의 원소는 최종적으로 위치가 정해짐.

20

Page 21: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘퀵 정렬(quick sort)

21

Page 22: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘

• 병합 정렬(merge sort)• 리스트의 길이가 0 또는 1이면 이미 정렬된 것

• 정렬되지 않은 리스트를 절반으로 잘라

비슷한 크기의 두 부분 리스트로 나눔

• 각 부분 리스트를 재귀적으로 합병 정렬

• 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병

22

1. 분할

Page 23: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘병합 정렬(merge sort)

23

2. 병합

3. Sorting 과정

Page 24: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

트리(Tree)

24

이진 트리 포화 이진 트리

완전 이진 트리 편향 이진 트리

Page 25: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

힙(Heap)

• 완전 이진 트리에 있는 노드 중에서

• 키값이 가장 큰 노드나 키 값이 가장 작은 노드를 찾기 위해서 만든 자료 구조

• 최대 힙• 부모 노드의 키 값이 자식 노드의 키 값보다 항상

크거나 같은 크기의 관계

• 최소 힙• 부모 노드의 키 값이 자식 노드의 키 값보다 항상

작거나 같은 크기의 관계

25

Page 26: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

힙(Heap)

26

Page 27: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

1) n개의 노드에 대한 완전 이진 트리를 구성

루트 노드부터 부노드, 왼쪽 자노드,

오른쪽 자노드 순으로 구성

2) 최대 힙을 구성

최대 힙이란 부노드가 자노드보다 큰 트리를 말함

단말 노드를 자노드로 가진 부노드부터 구성

아래부터 루트까지 올라오며

순차적으로 만들어 감

3) 가장 큰 수(루트에 위치)를 가장 작은 수와 교환

4) 2)와 3)을 반복한다.

27

힙(heap) :최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된완전이진트리(Complete binary tree)를 기본으로 한 자료구조(tree‐based structure)

Page 28: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

28

Page 29: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

29

Page 30: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

30

Page 31: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

31

Page 32: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

32

Page 33: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

33

Page 34: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

34

Page 35: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

35

Page 36: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

정렬 알고리즘힙 정렬(heap sort)

36

Page 37: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

알고리즘의 복잡도

• 시간 복잡도(time complexity)• 알고리즘 수행 시간 분석 결과

• 공간 복잡도(space complexity)• 알고리즘의 메모리 사용량에 대한 분석 결과

37

Page 38: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

알고리즘 복잡도

O(1) : 상수(constant)O(log n) : 로그(logarithmic) O(n) : 1차(linear)O(n log n) : 선형 연산(linear-arithmetic)O(n2) : 2차(quadratic)O(n3) : 3차(cubic)O(2n) : 지수(exponential)O(n!) : factorial

38

Page 39: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

알고리즘 복잡도big-o 추정에 따른 함수들의 증가 그래프

39

N 값

함수의 증가 값

Page 40: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

차수 그래프

40

상한값 표시 하한값 표시 중간값 표시

Page 41: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

함수의 증가(복잡도)

• big-O 표기 : • 최악의 경우 복잡도(상한선 표기법)

• big-Omega• 최선의 복잡도(하한선 표기법)

• big-Theta• 평균 복잡도

41

Page 42: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

big-O 표기법

• 최악의 경우 복잡도(상한선 표기법)

임의의 함수에 대하여

"함수의 입력값(정의역의 원소)이 커짐에 따라

그 출력 값(그 원소의 상)이

얼마나 빠르게 커지는가"를 표현

42

Page 43: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

big-Omega 표기법

43

최선의 복잡도(하한선 표기법)

big-Theta 표기법평균 복잡도

Page 44: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

big-O 표기법(상한 표기법)어떤 함수 g(n)이 O(n2)에

속한다는 말은 함수 g(n)이

임의의 N 값보다 큰값에 대하여

어떤 2차 함수 cn2 보다는

작은 값을 가지게 된다는 의미

• 그래프 상에서 아래에 위치한다는 의미

• 즉 그 함수 g(n)은 어떤 2차함수 cn2 보다는 궁극적으로좋다는 의미

44

Page 45: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

big-O 표기의 예(예제 1-page 234)

은 임을

보이라

• 풀이)• x >1 일때, x < x2이고 1 < x2 이다

• x > 1에서

• x > 2에서

45

Big O를 보이는데 단지 한 가지 해답이 있는 것이 아니다.

적당히 큰 k과 C를 선택하여 풀면 된다.

(C = 4, k=1)

(C = 3, k=2)

Page 46: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

big-Omega()(하한 표기법)

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

그함수는궁극에가서는

어떤임의의 N값보다큰값에대해서는

어떤 2차함수 cn2의값보다는

큰값을가지게된다는것을의미

• 그래프 상에서는 윗부분에위치

• 그 함수 g(n)은어떤 2차 함수 cn2 보다는

궁극적으로 나쁘다는의미

46

Page 47: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

big-Theta 표기법

함수 f(n)에 대해서

(f(n)) = O(f(n)) (f(n))의 관계가성립

즉, n N인모든정수 n에 대해서

c f(n) g(n) d f(n)이 성립하는

실수 c 0와 d 0,

그리고음이아닌정수 N이존재

47

Page 48: (Algorithm)jullio.pe.kr/lecture/2017/05inu2017_D_Math_ch03.pdf이산수학 Discrete Mathematics 인천대학교컴퓨터공학과 공학시인이숙이철호교수 알고리즘(Algorithm)

생각하는 시간• 또 하나의 천칭 문제???

1 g 단위로 자를 수 있는 40 g 짜리 분동이 있다.

이것을 잘라서 1 ~ 40 g까지 무게를 측정하려 한다. 40 g짜리 분동을

가장 적은 수의 토막으로 잘라 만들려면

어떻게 잘라야 할까?

48

이름,학번,답과 이유를 설명(수학적 모델링)

1 g짜리 40개가 위와 같이 있다.어떻게 잘라야 할까?

1 g (40개)