알고리즘 강의 슬라이드 2 분할정복 강의 슬라이드 #2

Slides:



Advertisements
Similar presentations
3 학년 -54 명 4 학년 -53 명 3.4 학년 총인원 -107 명 교사 -21 명 초 등 부 총인원 -128 명 2008 년 1 월 인원보고.
Advertisements

개인의견 차가있을수있음 훈훈한남자 배우 TOP 5. 5 위는 박보검 웃을때보이는 치명적인 미소 꺄 ~~~ 5위5위.
기업 인사담당자가 밝힌 면접 합격 비법 취업포털 사람인 ( 기업 인사담당자 397 명 조사 )
E X R 홍 혜 진 박 수 연 박 유 미 석 민 희 이 수 란 제 5 장 소비자 행동.
(목) 심형석 영산대학교 부동산∙금융학과 교수 영산대학교 부동산연구소 소장
1. 던전 디자인 개요_1 1. ‘던전’ 룬스톤은 던전 한 층에도 여러 개가 존재하며, 각 룬스톤 마다 영향을 미치는 범위가 설정되어 있다. 룬스톤이 영향을 주는 범위에 일정시간 사용자가 위치해 있게 되면 사용자 캐릭터는 ‘유령화’ 되어 버리기 때문에, 사용자는.
제1장 소프트웨어 프로젝트 개요 1.1 프로젝트개요 1.2 프로젝트 유형 1.3 프로젝트 관리의 중요성과 실패 원인
[ 하나투어 여행박람회 중국사업부 교육 ] 실크로드 담당: 하나투어 이재현 교육일 : 2009년 5월 22일.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
10장 정렬.
쉽게 배우는 알고리즘 3장. 정렬Sorting
분할 정복 (Divide-and-Conquer)
CHAP 9 : 정렬.
『디지털 경제시대의 경영정보시스템』 김효석 · 홍일유 공저 ⓒ 법문사, 2000
빠른정렬(Quick Sort) – 개요 (1/2)
Chapter 9 정렬(sorting) SANGJI University Kwangman KO
CHAP 9:정렬 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
C언어 응용 제 13 주 그래프2, 정렬.
7. 자극과 반응 7-2. 신경계 3. 여러 가지 반응.
성탄절을 향한 길에서.
12 검색.
정렬과 합병.
함께 만들어가는 혁신 교실수업개선 송 수 현 (목) 용인백현고 교장 용인백현고등학교
목차 INDEX 1. 회원가입 및 로그인 2. 업체정보 3. 제조검사 신청 4. 인보이스 5. 검사진행현황(현장검사 신청)
2017년 인천항만공사 고객만족도 조사 결과 보고서 [ ].
8주차. 태도형성 변화모형.
Ch.02 Divide and Conquer (분할정복)
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
CHAP 9: 정렬 (part 2) 순천향대학교 컴퓨터학부 하 상 호.
[CPA340] Algorithms and Practice Youn-Hee Han
알고리즘 강의 슬라이드 2 분할정복 분할정복법 도경구역, 알고리즘, 사이텍미디어, 1999.
 Divide and Conquer (분할정복)
프로그래밍 기초와 실습 Chapter 11 Recursion.
 Divide and Conquer (분할정복)
Empirical Analysis of Purchasing Power Parity
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
건강평가 이미경 임선미.
 Divide and Conquer (분할정복)
기업회생 절차.
2. 윤리학의 원리와 적용 가. 상대주의와 절대주의.
C언어 응용 제 15 주 검색.
알고리즘의 분석(analysis) 공간적 효율성(Space Efficiency)과 시간적 효율성(Time Efficiency)
합병정렬(Merge Sort) (1/2) 문제: n개의 정수를 (비내림차순으로) 정렬하시오.
CHAP 9:정렬 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
7. Quicksort.
제 8 장 계산복잡도 개론 검색 문제 알고리즘 강의 슬라이드 8 검색 문제
빠른정렬(Quick Sort) – 개요 (1/2)
원가(C)-조업도(V)-이익(P) 분석
알고리즘 강의 슬라이드 2 분할정복 제 2 장 분할정복 도경구역, 알고리즘, 사이텍미디어, 1999.
직장생활 예절 ① - 인사 1.내가 먼저 [인사의 5point] 2.상대방의 눈을 보고 미소지으며 3.상대방에 맞춰서
알고리즘의 분석(analysis) 공간적 효율성(Space Efficiency)과 시간적 효율성(Time Efficiency)
알고리즘(Algorithm) – Divide and Conquer (분할정복)
CONTENTS Part1. 조사 개요 / 3 1. 조사 목적 2. 조사 설계 3. 주요 조사 내용 4. 응답자 특성 5. 지수산출방법 Part2. 결과요약 및 제언 / 9 Part3. 조사결과 분석(만족도) / 종합 및 차원 만족도 2. 항목 만족도 3.
김진승 한국물리학회 교육위원장, 전북대학교 물리학과
워드데이터 삽입 엑셀 차트의 삽입 소리와 동영상 삽입 워드 문서로 파일 저장
서울, 1964년 겨울 -김승옥.
서울, 1964년 겨울 -김승옥.
서울, 1964년 겨울 -김승옥.
경청 Wisdom21 Management Consulting
국어지도 유아교육과 권수연 김아람 중등특수교육과 박수진 양한솔
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
책을 읽읍시다  탈향 진지하게 설명해드림 1303 김소희 1309박지호 1315이지수.
제 7 장 정렬.
빠른정렬(Quick Sort) – 개요 (1/2)
2016년 제1차 운영위원회 평택시건강가정 ∙다문화가족지원센터
의사소통 이론의 이해 김연주 백정훈.
알고리즘 강의 슬라이드 7 정렬문제 알고리즘 해석 강의 슬라이드 #7
강사 및 비전임교원 공개채용시스템 메뉴얼 교 무 연 구 팀.
제3장 선교 구역.반장학교 제1단계.
알고리즘의 분석(analysis) 공간적 효율성(Space Efficiency)과 시간적 효율성(Time Efficiency)
Presentation transcript:

알고리즘 강의 슬라이드 2 분할정복 강의 슬라이드 #2 2018-11-21 분할정복 II 강의 슬라이드 #2 도경구역, 알고리즘, 사이텍미디어, 1999

분할정복(Divide-and-Conquer)식 설계 전략 통합(Combine): (필요하다면) 해결된 해답을 모은다. 이러한 문제 해결 방법을 하향식(top-down) 접근방법이라고 한다. 2018-11-21 알고리즘 강의 슬라이드 2

빠른정렬(Quicksort) 1962년에 영국의 호아(C.A.R. Hoare)의 의해서 고안 빠른정렬(Quicksort)란 이름이 오해의 여지가 있음. 왜냐하면 사실 절대적으로 가장 빠른 정렬 알고리즘이라고 할 수는 없기 때문이다. 차라리 “분할교환정렬(partition exchange sort)”라고 부르는 게 더 정확함. 보기: 15 22 13 27 12 10 20 25 2018-11-21 알고리즘 강의 슬라이드 2

빠른정렬 알고리즘 문제: n개의 정수를 비내림차순으로 정렬 입력: 정수 n > 0, 크기가 n인 배열 S[1..n] 알고리즘: void quicksort (index low, index high) { index pivotpoint; if (high > low) { partition(low,high,pivotpoint); quicksort(low,pivotpoint-1); quicksort(pivotpoint+1,high); } 2018-11-21 알고리즘 강의 슬라이드 2

분할 알고리즘 문제: 빠른정렬을 하기 위해서 배열 S를 둘로 쪼갠다. 알고리즘 강의 슬라이드 2 분할정복 분할 알고리즘 2018-11-21 문제: 빠른정렬을 하기 위해서 배열 S를 둘로 쪼갠다. 입력: (1) 첨자 low,high, (2) 첨자 low에서 high까지의 S의 부분배열 출력: 첨자 low에서 high까지의 S의 부분배열의 기준점(pivot point), pivotpoint 알고리즘: void partition (index low, index high, index& pivotpoint) { index i, j; keytype pivotitem; pivotitem = S[low]; //pivotitem을 위한 첫번째 항목을 고른다 j = low; for (i = low + 1; i <= high; i++) if (S[i] < pivotitem) { j++; exchange S[i] and S[j]; } pivotpoint = j; exchange S[low] and S[pivotpoint]; // pivotitem 값을 pivotpoint에 넣는다 2018-11-21 알고리즘 강의 슬라이드 2 도경구역, 알고리즘, 사이텍미디어, 1999

2018-11-21 알고리즘 강의 슬라이드 2

분석 분할 알고리즘의 모든 경우를 고려한 시간복잡도 분석 단위연산: S[i]와 key와의 비교 입력크기: 부분배열이 가지고 있는 항목의 수, n = high - low + 1 분석: 배열의 첫번째 항목만 제외하고 모든 항목을 한번씩 비교하므로, T(n) = n - 1이다. 2018-11-21 알고리즘 강의 슬라이드 2

분석 빠른정렬 알고리즘의 최악의 경우를 고려한 시간복잡도 분석 단위연산: 분할알고리즘의 S[i]와 key와의 비교 입력크기: 배열이 S가 가지고 있는 항목의 수, n 분석: 이미 비내림차순으로 정렬이 되어 있는 배열을 정렬하려는 경우가 최악의 경우가 된다. 왜 그럴까? 비내림차순으로 정렬되어 있으면 첫번째(기준점) 항목보다 작은 항목은 없으므로, 크기가 n인 배열은 크기가 0인 부분배열은 왼쪽에 오고, 크기가 n-1인 부분배열은 오른쪽에 오도록 하여 계속 쪼개진다. 따라서, 그런데, T(0) = 0이므로, 재현식은 다음과 같이 된다. T(n) = T(n - 1) + n - 1, n > 0이면 T(0) = 0 2018-11-21 알고리즘 강의 슬라이드 2

분석 이 재현식을 풀면, T(n) = T(n - 1) + n - 1 T(n - 1) = T(n - 1) + n - 2 ... T(2) = T(1) + 1 T(1) = T(0) + 0 T(0) = 0 가 되므로, 이미 정렬이 되어 있는 경우 빠른정렬 알고리즘의 시간복잡도 는 이 된다는 사실을 알았다. 그러면 시간이 더 많이 걸리는 경우는 있을까? 이 경우가 최악이 경우이며, 따라서 이 보다 더 많은 시간이 걸릴 수가 없다는 사실을 수학적으로 엄밀하게 증명해 보자. 2018-11-21 알고리즘 강의 슬라이드 2

귀납가정: 0  k < n인 모든 k에 대해서, 귀납단계: pivotpoint 값이 p인 경우 재현식에 의해서 증명: (수학적귀납법) 귀납출발점: n = 0일 때, 귀납가정: 0  k < n인 모든 k에 대해서, 귀납단계: pivotpoint 값이 p인 경우 재현식에 의해서 여기서 p = n 또는 p = 1일 때 최대값을 가진다. 가 된다. 따라서 최악의 경우 시간복잡도는 귀납가정에 의해서 2018-11-21 알고리즘 강의 슬라이드 2

분석 빠른정렬 알고리즘의 평균의 경우를 고려한 시간복잡도 분석 단위연산: 분할알고리즘의 S[i]와 key와의 비교 입력크기: 배열이 S가 가지고 있는 항목의 수, n 분석: 배열 안에 있는 항목이 어떤 특정 순으로 정렬이 되어 있는 경우는 사실 별로 없다. 그러므로 분할 알고리즘이 주는 기준점 값은 1부터 n사이의 어떤 값도 될 수가 있고, 그 확률은 모두 같다고 봐도 된다. 따라서, 평균의 경우를 고려한 시간복잡도 분석을 해도 된다. 기준점이 p가 될 확률은 이고, 기준점이 p일 때 두 부분배열을 정렬하는데 걸리는 평균기간은 [A(p - 1) + A(n - p)]이고, 분할하는데 걸리는 시간은 n - 1이므로, 평균적인 시간복잡도는 다음과 같이 된다. 2018-11-21 알고리즘 강의 슬라이드 2

양변을 n으로 곱하면, n대신 n - 1을 대입하면, (1)에서 (2)를 빼면, 간단히 정리하면, 여기서, 라고 하면, 다음과 같은 재현식을 얻을 수가 있다. 그러면, ... 2018-11-21 알고리즘 강의 슬라이드 2

여기에서 오른쪽 항은 무시해도 될 만큼 작으므로 무시한다. ln n = logen이고, 따라서, 해는 여기에서 오른쪽 항은 무시해도 될 만큼 작으므로 무시한다. ln n = logen이고, 이므로, 해는 an  2 ln n. 따라서, 2018-11-21 알고리즘 강의 슬라이드 2

분할정복을 사용하지 말아야 하는 경우 크기가 n인 입력이 2개 이상의 조각으로 분할되며, 분할된 부분들의 크기가 거의 n에 가깝게 되는 경우  시간복잡도: 지수(exponential) 시간 크기가 n인 입력이 거의 n개의 조각으로 분할되며, 분할된 부분의 크기가 n/c인 경우. 여기서 c는 상수이다.  시간복잡도: (nlg n) 2018-11-21 알고리즘 강의 슬라이드 2