8장. 상호 배타적 집합의 처리.

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

1 ‘ 우리나라의 주요공업 ’ - 정도웅, 주민혁, 안수진, 백경민, 엄다운, 박경찬 -.
2014년도 주요법령 개정사항 (월) ~ (금) 대한전문건설협회 강원도회.
이진 나무 구조 강윤섭 2008년 5월 23일.
컴퓨터와 인터넷.
공부할 내용 조상들이 살던 곳 자연과 잘 어울리는 한옥 지방에 따라 서로 다른 집의 모양 섬 지방의 집
사랑, 데이트와 성적 자율성 :데이트 성폭력!!! 성폭력예방교육 전문강사 / 여성학 전공 신 순 옥.
퇴계와 율곡의 사회사상 비교 남 일 재 동서대학교 교수/ 정치학 박사 1. 퇴계 이황과 율곡 이이의 약전(略傳)
제14장 동적 메모리.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
되추적(Backtracking).
501. 군인들의 세상 502. 민정 이양과 한일회담 이선용.
연결리스트(linked list).
제 9 장 구조체와 공용체.
Chapter 05. 연결 자료 구조.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
제 3 장 선형 리스트 3.1 선형 리스트 3.2 연결 리스트 3.3 다항식.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
제 11 장 다원 탐색 트리.
CHAPTER 5 트리(Tree).
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
CHAP 10: 그래프(part 2) 순천향대학교 하상호.
자료구조: CHAP 7 트리(1) 순천향대학교 컴퓨터공학과 하 상 호.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 7: 트 리 (1) 한 성 대 학 교 정보통신공학과 봉 정 식.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
Introduction To Data Structures Using C
P2P시스템에 대해서 (peer to peer)
셍산관리시스템 작업일보 등록 ☞ ☞ 작업일보등록 - 실행화면 C B A 사용설명
자바 5.0 프로그래밍.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
쉽게 배우는 알고리즘 7장. 상호 배타적 집합의 처리.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
11장 균형 탐색 트리.
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
FileMaker를 이용한 데이터 관리 옥현진(KICE).
정치개혁의 가능성 논의 권력구조 개편을 통하여 본 -개헌을 통한 정부형태의 변화를 중심으로 [한국정치론] 윤성이 교수님
합집합과 교집합이란 무엇인가? 01 합집합 두 집합 A, B에 대하여 A에 속하거나 B에 속하는 모든 원소로 이루어진 집합을 A와 B의 합집합이라고 하며, 기호 A∪B로 나타낸다. A∪B ={x | x∈A 또는 x∈B}
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 27).
노년기 발달 장안대 행정법률과 세류반 정 오 손
Addressing the Network – IPv4
5장. 선택 알고리즘.
태국 문학 욜라다 왓짜니 싸란차나 팟차라와라이 끼따야펀 르앙다우 타니다.
7주차: Functions and Arrays
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
Chapter 10 데이터 검색1.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
발표자 : 이지연 Programming Systems Lab.
구조체(struct)와 공용체(union)
수학 10-가 단계 Ⅰ수와 연산> 1.집합과 명제 > 1. 집합 > 3/9 집합 수업계획 수업활동.
Numerical Analysis Programming using NRs
제 4장 트리.
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
제 4 장 Record.
워밍업 실뭉치 전달게임.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
음파성명학 최종욱.
수학 2 학년 1 학기 문자와 식 > 미지수가 2개인 연립방정식 ( 1 / 1 ) 연립일차방정식의 해.
문제풀이방식-맹목적 탐색 Ai4.
플래시MX2004 디자인스쿨 Chapter 11. 플래시와 사운드.
C++ Espresso 제15장 STL 알고리즘.
7 생성자 함수.
11. 트리.
Presentation transcript:

8장. 상호 배타적 집합의 처리

8장. 상호 배타적 집합의 처리 얼마 전 나는 학술회의 준비차 『다윈』을 읽었다. 읽으면서 그동안 읽지 않기를 잘했다는 생각이 들었다. 다른 때 『다윈』을 읽었더라면 여전히 이해할 수 없었을 것이기 때문이다. … 결국, 읽을 준비가 되었을 때 읽어야 한다는 것이다. -로저 생크

학습목표 연결 리스트를 이용한 상호 배타적 집합의 처리 방법을 이해한다. 연결 리스트를 이용한 상호 배타적 집합의 처리 방법을 이해한다. 연결 리스트를 이용해 집합을 처리하는 연산들의 수행 시간을 분석할 수 있도록 한다. 트리를 이용한 상호 배타적 집합의 처리 방법을 이해한다. 트리를 이용해 집합을 처리하는 연산들의 수행 시간을 기본적인 수준에서 분석할 수 있도록 한다.

집합의 처리 이 장에서는 상호배타적 집합만을 대상으로 한다 그러므로 교집합은 없다 지원할 연산 Make-Set(x): 원소 x로만 이루어진 집합을 만든다 Find-Set(x): 원소 x를 가지고 있는 집합을 알아낸다 Union(x, y): 원소 x를 가진 집합과 원소 y를 가진 집합의 합집합 연결 리스트를 이용하는 방법과 트리를 이용하는 방법을 소개한다

연결 리스트를 이용한 처리 같은 집합의 원소들은 하나의 연결 리스트로 관리한다 연결 리스트의 맨 앞의 원소를 집합의 대표 원소로 삼는다

하나의 원소로 이루어진 집합 x tail

연결 리스트로 된 두 집합 a b c tail tail d e f g h

합집합을 만드는 예 (a) 합치고자 하는 두 집합 a b c tail tail d e f g h (b) 두 집합을 합친 결과

무게를 고려한 Union 연결 리스트로 된 두 집합을 합칠 때 작은 집합을 큰 집합의 뒤에 붙인다 대표 원소를 가리키는 포인터 갱신 작업을 최소화하기 위한 것

수행 시간 [정리 1] 연결 리스트를 이용해 표현되는 배타적 집합에서 무게를 고려한 Union을 사용할 때, m번의 Make-Set, Union, Find-Set 중 n번이 Make-Set이라면 이들의 총 수행 시간은 O(m + n log n)이다.  

트리를 이용한 집합의 처리 같은 집합의 원소들은 하나의 트리로 관리한다 트리의 루트를 집합의 대표 원소로 삼는다 자식 노드가 부모 노드를 가리킨다 트리의 루트를 집합의 대표 원소로 삼는다

트리를 이용한 집합 표현의 예 c b h a e d f g

+ = 두 집합의 합집합 c e b h d f g c a h b e d f g a (a) 합치고자 하는 두 집합

하나의 원소로 이루어진 집합 a

트리를 이용한 집합 처리 알고리즘 Make-Set(x) ▷ 노드 x를 유일한 원소로 하는 집합을 만든다. {         p[x] ← x ; } Union(x, y) ▷ 노드 x가 속한 집합과 노드 y가 속한 집합을 합친다         p[Find-Set(y)] ← Find-Set(x) ; Find-Set(x) ▷ 노드 x가 속한 집합을 알아낸다. 노드 x가 속한 트리의 루트 노드를 리턴한다.         if (x = p[x]) then return x ; else return Find-Set(p[x]) ;

연산의 효율을 높이는 방법 랭크를 이용한 Union 경로압축 각 노드는 자신을 루트로 하는 서브트리의 높이를 랭크Rank라는 이름으로 저장한다 두 집합을 합칠 때 랭크가 낮은 집합을 랭크가 높은 집합에 붙인다 경로압축 Find-Set을 행하는 과정에서 만나는 모든 노드들이 직접 루트를 가리키도록 포인터를 바꾸어 준다

+ = 랭크를 이용한 Union의 예 2 1 2 c e c 1 1 1 b h d f b h e a a d f 1 1 b h d f b h e a a d f (a) 합치고자 하는 두 집합 (b) 두 집합을 합친 결과

랭크를 이용한 Union에서 랭크가 증가하는 예 2 2 3 c e c + = 1 1 1 2 b h d f b h e a g a 1 d f g (a) 합치고자 하는 두 집합 (b) 두 집합을 합친 결과

경로압축의 예 c c Find-Set(g) b h b h e g a e a d f d f g

랭크를 이용한 Union과 Make-Set Make-Set(x) ▷ 노드 x를 유일한 원소로 하는 집합을 만든다. {         p[x] ← x;         rank[x] ← 0; } Union(x, y) ▷ 노드 x가 속한 집합과 노드 y가 속한 집합을 합한다         x' ← Find-Set(x);         y' ← Find-Set(y);         if (rank[x'] > rank[y'])                 then p[y'] ← x' ;                 else {                         p[x'] ← y' ;                         if (rank[x'] = rank[y']) then rank[y'] ← rank[y'] + 1;                 }

경로압축을 이용한 Find-Set Find-Set(x) {         if (p[x] ≠ x) then p[x] ← Find-Set(p[x]);         return p[x]; }

log*n = min {k : log log … log n ≤ 1} 수행 시간 [정리 5] 트리를 이용해 표현되는 배타적 집합에서 랭크를 이용한 Union과 경로압축을 이용한 Find-Set을 동시에 사용하면, m번의 Make-Set, Union, Find-Set 중 n번이 Make-Set일 때 이들의 수행 시간은 O(m log*n)이다.   log*n = min {k : log log … log n ≤ 1} k개 사실상 선형시간임

Thank you