제 9 장 우선순위 큐

Similar documents
chap 5: Trees

제 11 장 다원 탐색 트리

chap 5: Trees

슬라이드 1

슬라이드 1

슬라이드 1

슬라이드 1

정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2

Chapter 4. LISTS

Ch.1 Introduction

Microsoft PowerPoint - 제8장-트리.pptx

o 경로 (path) 트리에서사용하는용어 ~ 어떤한노드에서다른노드까지링크를통해이동했을때, 거쳐온노드들의집합. o 루트 (root) ~ 트리의가장상위에있는노드로루트는항상하나만존재 o 부모, 자식 (parent, children) ~ 링크로연결된노드중위에있는노드를부모노드,

슬라이드 1

슬라이드 1

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74

Microsoft PowerPoint - chap10_tree

7장

Microsoft PowerPoint - lec07_tree [호환 모드]

06장.리스트

Lab 3. 실습문제 (Single linked list)_해답.hwp

C 언어 강의노트

입학사정관제도

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Microsoft PowerPoint - 6장 탐색.pptx

슬라이드 1

Chap 6: Graphs

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

08장.트리

슬라이드 1

09J1_ _R.hwp

Chapter 4. LISTS

5 장 트 리

쉽게 배우는 알고리즘 강의노트

제 1 장 기본 개념

Microsoft PowerPoint Merging and Sorting Files.ppt

제 10 장 최적 이원 탐색 트리

03_queue

Microsoft PowerPoint - chap4_list

PowerPoint 프레젠테이션

Algorithms

11장 포인터

1장. 리스트

1. 리스트개념 리스트 (list) 고정된길이의자료 ( 원소 ) 들을순차적으로나열해놓은집합을가르키는자료구조의추상적인개념 순서를가진항목들의모임 집합 (set) : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : (ᄀ,ᄂ,,ᄒ

슬라이드 1

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ

05_tree

PowerPoint 프레젠테이션

-09- 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고, 선형시간정렬이가능한조건과선형시간정렬알고리즘을이해한다. - - 한빛미디어 Sortng Algorth

리스트구현방법 배열 (array) 을이용하는방법 구현이간단 삽입, 삭제동작에따른원소이동. 항목의개수제한, 정적기억공간할당. 메모리낭비, 오버플로우 연결리스트 (linked list) 를이용하는방법 구현이복잡 삽입, 삭제가효율적 크기가제한되지않음 Lecture 03_Li

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >

리스트연산, 검색 + 삽입 + 삭제 새로운항목을리스트의처음, 중간, 끝에추가. 기존의항목을리스트의임의의위치에서삭제. 모든항목을삭제. 기존항목을대치 (replace). 리스트가특정항목을가지고있는지를검색 (search). 리스트의특정위치의항목을반환. 리스트안의항목의개수를센

슬라이드 1

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

슬라이드 1

e-비즈니스 전략 수립

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Chapter 4. LISTS

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

1장. 리스트

PowerPoint 프레젠테이션

Chapter 08. 트리(Tree)

PowerPoint 프레젠테이션

<4D F736F F F696E74202D FBFACB0E120C0DAB7E1B1B8C1B6205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

슬라이드 1

1장. 리스트

q 이장에서다룰내용 1 연결자료구조방식 2 단순연결리스트 3 원형연결리스트 4 이중연결리스트 3 다항식의연결자료구조표현 2

Microsoft PowerPoint - 자료구조2008Chap07

4.1 관계

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

Microsoft PowerPoint - 08-chap06-Queue.ppt

Microsoft PowerPoint - ch08_큐 [호환 모드]

슬라이드 1

Microsoft PowerPoint - 08-Queue.ppt

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

v 이원탐색트리 (binary search tree) u 인덱스를조직하는한가지방법 u 이진트리 (binary tree) 유한한수의노드를가진트리 공백 (empty) 이거나루트와두개의분리된이진트리즉, 왼쪽서브트리 (left subtree) 와오른쪽서브트리 (right su

OCW_C언어 기초

Microsoft PowerPoint - 제4장-스택과큐.pptx

쉽게배우는알고리즘 5 장. 검색트리 IT COOKBOOK 5 장. 검색트리 나는보다응용력있는유형의수학이라는이유때문에컴퓨터과학을하고싶었다. - 로버트타잔 한빛미디어 1

Microsoft PowerPoint - 제9장-트리의응용.pptx

Visual Basic 반복문

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 -

PowerPoint 프레젠테이션

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

슬라이드 1

adfasdfasfdasfasfadf

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C0DAB7E1B1B8C1B65FC3E2BCAEBCF6BEF7>

4장

중간고사 (자료 구조)

04장.큐

2_안드로이드UI

CH06)자료구조.hwp

6장정렬알고리즘.key

슬라이드 1

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

Microsoft PowerPoint - 06-List.ppt

PowerPoint Presentation

Transcription:

제 9 장 우선순위큐 Copyright 007 DBLAB, Seoul National University

한쪽끝과양쪽끝우선순위큐 우선순위큐 (priority queue) - 각원소가연관된우선순위를갖고있는원소들의모임 최소우선순위큐에서의연산 - SP: 최소우선순위를가진원소의반환 - SP: 임의의우선순위를가진원소의삽입 - SP3: 최소우선순위를가진원소의삭제 최대우선순위큐에서의연산 - SP: 최대우선순위를가진원소의반환 - SP: 임의의우선순위를가진원소의삽입 - SP3: 최대우선순위를가진원소의삭제 히프구현 - SP : O() - SP, SP3 : O(log n) Copyright 007 DBLAB, Seoul National University

합병성우선순위큐 합병성 ( 한쪽끝 )(meldable(single-ended)) 우선순위큐 - 두개의우선순위큐를합병해서 SP~SP3 의연산을확장 - 하나의우선순위큐를가진서버가멈췄을때적용가능 작동되는서버의우선순위큐와합병 - 좌향트리 (leftist tree), 이항히프 (binomial heap) 합병성우선순위큐의확장 - 임의원소를삭제 - 임의원소의키 / 우선순위감소 ( 또는증가 ) - 피보나치히프 (Fibonacci heap), 페어링히프 (pairing heap) Copyright 007 DBLAB, Seoul National University 3

양쪽끝우선순위큐 (DEPQ) 최소우선순위큐와최대우선순위큐가하나의구조로합해진최소최대우선순위큐 연산 - DP : 최소우선순위를가진원소의반환 - DP : 최대우선순위를가진원소의반환 - DP3 : 임의의우선순위를가진원소의삽입 - DP : 최소우선순위를가진원소의삭제 - DP : 최대우선순위를가진원소의삭제 사용예 - 네트워크버퍼 - 외부퀵정렬 Copyright 007 DBLAB, Seoul National University

외부퀵정렬 내부 DEPQ 가찰때까지원소들을메모리로읽음 나머지원소를한번에하나씩처리 - if 다음원소 DEPQ 의가장작은원소 이원소를왼쪽그룹으로 - elseif 다음원소 DEPQ 의가장큰원소 이원소를오른쪽그룹으로 - else 최대또는최소원소제거최대원소가제거되었을경우, 최대원소를오른쪽그룹으로최소원소가제거되었을경우, 최소원소를왼쪽그룹으로 새로운원소를 DEPQ 에삽입 중간그룹으로 DEPQ 에있는원소를정렬된순서로출력 왼쪽과오른쪽그룹에대해순환적으로정렬 Copyright 007 DBLAB, Seoul National University

확장이진트리 (extended binary tree) 모든공백이진서브트리를정사각형노드로대체 - 정사각형노드 : 외부노드 (external node) - 원래의 ( 원형 ) 노드 : 내부노드 (internal node) A G B C H I D E F J (a) (b) Copyright 007 DBLAB, Seoul National University

좌향트리 () 높이편향좌향트리 (height biased leftest tree:hblt) - 일반적으로 HBLT 를좌향트리라고함 x 로부터외부노드까지의최단경로의길이 0 (x 가외부노드인경우 ) - shortest(x) +min {shortest(leftchild(x)),shortest(rightchild(x))} ( 그밖의경우 ) - LeftChild(x) : 내부노드 x의왼쪽자식 - RightChild(x) : 내부노드 x의오른쪽자식 Copyright 007 DBLAB, Seoul National University 7

좌향트리 () 정의 - 이진트리로서트리가공백이아닌경우모든내부노드 x 에대해다음식을만족 shortest(leftchild(x)) shortest(rightchild(x)) B A C D E F J H G I 보조정리 9. (a) 좌향트리아님 (b) 좌향트리 - n 개의내부노드를가진좌향트리의루트 : r - n shortest(r) - - shortest(r)= 루트로부터외부노드까지의가장오른쪽경로 shortest(r) log (n+) Copyright 007 DBLAB, Seoul National University

최소 ( 최대 ) 좌향트리 각노드의키값이그노드의자식들의키값보다크지 ( 작지 ) 않은좌향트리. 좌향트리이면서최소 ( 최대 ) 트리 최소좌향트리의예 7 0 0 9 0 3 0 (a) (b) Copyright 007 DBLAB, Seoul National University 9

최소좌향트리의합병 () 루트비교 < 3 - 가루트 7 0 0 9 0 0 - 의오른쪽서브트리와루트가 인이진트리합병 3 7 0 0 9 0 0 Copyright 007 DBLAB, Seoul National University 0

최소좌향트리의합병 () 루트비교 <0 3 7 - 가루트 0 0 9 0 0 - 의오른쪽서브트리와루트가 0 인이진트리합병 3 7 0 9 0 0 0 Copyright 007 DBLAB, Seoul National University

최소좌향트리의합병 (3) 루트비교 3 7 9 0 <0, 의오른쪽서브트리없음 0 0 0 - 루트가 0 인이진트리와루트가 인이진트리합병 7 9 0 0 0 3 0 Copyright 007 DBLAB, Seoul National University

최소좌향트리의합병 () 루트가 인이진트리와루트가 인이진트리합병 7 9 0 0 3 0 0 루트가 인이진트리와루트가 인이진트리합병 7 9 3 0 0 0 0 Copyright 007 DBLAB, Seoul National University 3

최소좌향트리의합병 () shortest(leftchild()) shortest(rightchild()) 3 7 9 0 0 0 0 서브트리교환 3 7 9 0 0 0 0 3 7 9 0 0 0 0 서브트리교환 0 0 0 0 9 3 7 Copyright 007 DBLAB, Seoul National University

가중치편향좌향트리 () 가중치 w(x) - 루트가 x 인서브트리에있는내부노드의수 - 내부노드의가중치 = 자식들의가중치합계 + - 외부노드의가중치 = 0 3 0 0 0 0 0 0 0 0 0 0 0 0 가중치편향좌향트리 (weight-biased liftest tree:wblt) - w(leftchild(x)) w(rightchild(x)) 인이진트리 최대가중치편향좌향트리 - 가중치편향좌향트리이면서최대트리 Copyright 007 DBLAB, Seoul National University

가중치편향좌향트리 () 보조정리 9. - rightmost(x) = x에서외부노드까지가장오른쪽경로길이 - rightmost(x) log (w(x)+) - 증명 w(x)= 이면 rightmost(x)= 이고, log (w(x)+)=log ()= w(x)<n 이면항상 rightmost(x) log (w(x)+) 라고가정 w(x)=n 이면 w(rightchild(x)) (n-)/ 이고 rightmost(x)= +rightmost(rightchild(x)) + log ((n-)/+) = + log (n+)- = log (n+) 가중치편향트리의연산 - 삽입, 최대 - 삭제, 초기화연산 : 최대 HBLT 연산과유사 - 합병연산 : 한번의하향식과정으로수행 Copyright 007 DBLAB, Seoul National University

비용상환 어떤연산의실제비용을다른연산에부과 - 어느한연산에부과된비용감소 / 다른연산의비용증가 상환비용 : 그연산에부과된총비용 연산순서의복잡도에있어보다엄격한한계값얻을수있음 개별연산시간보다전체시간에관심이있는응용에적합 - e.g. 정렬 Copyright 007 DBLAB, Seoul National University 7

이항히프 () 최소이항히프 (min-binomial heap) - 최소트리의집합 - B- 히프 최대이항히프 - 최대트리의집합 최소이항히프의예 3 0 7 상환시간 - 삽입, 합병 : O() - 최소 - 삭제 : O(log n) 0 30 9 Copyright 007 DBLAB, Seoul National University

이항히프 () 구조 - 노드구조 degree : 자식의수 child : 자식중의하나 link : 형제사이의단순연결원형리스트를유지하는데사용 data - 최소트리들의루트는단순연결원형리스트로연결 - min은최소값을갖는트리를가리킴 min 3 0 7 30 9 0 Copyright 007 DBLAB, Seoul National University 9

이항히프에서의연산 이항히프에서의삽입 - 새로운노드에 x 를넣음 - min 이가리키는원형리스트에이노드를넣음 - 만약 min 이 0 이거나현재최소값보다 x 의키가작으면 min 이새로운노드를가리키도록변경 - O() 두이항히프의합병 - 최상위원형리스트를하나의원형리스트로합병. - 두트리의 min 포인터중작은값을가리키게변경 - O() Copyright 007 DBLAB, Seoul National University 0

이항히프에서최소원소삭제. 공백 B- 히프의처리 - if(!min) throw QueueEmpty();. 공백이아닌 B- 히프에서의삭제 - x=min data; y=min child; - 원형리스트에서 min 을삭제 - min 은결과리스트에남아있는임의의노드를가리킴 - 그런노드가없으면 min=0; 3. 최소트리조인 - 리스트 min 과 y 의최소트리들에대해, 이최소트리가모두서로다른차수를가질때까지차수가같은최소트리들을둘씩서로조인. 최소트리루트리스트의구성 - 최소트리의루트들을전부연결하여원형리스트로구성 - min 이가장작은키를가진루트를가리키도록한다 - x 를반환 ; Copyright 007 DBLAB, Seoul National University

3 7 0 30 9 0 최소원소를삭제한후의 B- 히프 7 3 9 30 0 0 차수가 인두최소트리를조인 3 30 7 0 9 0 차수가 인두최소트리를조인 Copyright 007 DBLAB, Seoul National University

최소 - 삭제연산의복잡도 단계 : O() 단계 : O() 단계 3: O(maxDegree + s) - maxdegree : 최소트리의예상최고차수 - s : min 과 y 에있는최소트리의수 - tree[] : 0 부터 maxdegree 까지인덱스된배열 for (d = p->degree; tree[d]; d++) { JoinMinTrees(p,tree[d]); tree[d] = 0; } tree[d] = p; 단계 : O(maxDegree) - tree[0],..., tree[maxdegree] 를조사하여발견된최소트리를서로연결 - 가장작은키값을가진최소트리결정 Copyright 007 DBLAB, Seoul National University 3

이항히프분석 () 이항트리 - 차수가 k 인이항트리 B k 는 k=0 이면하나의노드만가지고있고, k>0 이면서브트리 B 0,B,..., B k- 을갖는차수 k 인루트로구성된트리 - B k 는정확히 k 개의노드를가짐 보조정리 9.3 - a 는처음에공백인 B- 히프에서시작하여삽입, 합병, 최소 - 삭제연산을통해얻어진 n 개의원소를가진 B- 히프. - a 의각최소트리의차수 log n - maxdegree log n - 최소 - 삭제의실제비용 : O(log n +s) Copyright 007 DBLAB, Seoul National University

이항히프분석 () 정리 9. - 빈 B- 히프에대해총 n 개의삽입, 합병, 최소 - 삭제연산 - 삽입, 합병연산의상환된시간복잡도 : O() - 최소 - 삭제연산의상환된시간복잡도 : O(log n) i 회삽입, c 회합병, dm 회최소 - 삭제 - O(i+c+dm log i) Copyright 007 DBLAB, Seoul National University

피보나치히프 최소피보나치히프 (F- 히프 ) / 최대피보나치히프 B- 히프는 F- 히프의특수한경우 연산 - GetMin, Insert, DeleteMin, Meld : B- 히프와같음 - Delete( 임의삭제 ) : O(log n) 명기된노드에서원소삭제 - DecreaseKey( 키감소 ) : O() 명기된노드에서주어진양수만큼키 / 우선순위감소 구조 - B- 히프의각노드에 parent 와 childcut 데이타멤버추가 parent : 그노드의부모 childcut : 추후설명 - 단순연결원형리스트 이중연결원형리스트 link leftlink, rightlink Copyright 007 DBLAB, Seoul National University

F- 히프에서의삭제 F- 히프에서임의의노드 b 삭제.min==b 이면최소 - 삭제. 그렇지않을경우,3, 수행.b 가속한이중연결리스트에서 b 삭제 3.b 의자식의이중연결리스트와 min 이가리키는이중연결리스트합병. 차수가같은트리조인은생략. 노드 b 제거 min 0 3 7 30 9 삭제후 0 3 7 30 0 0 9 실행비용 : O() Copyright 007 DBLAB, Seoul National University 7

키감소 노드 b 의키값감소.b 의키값감소. b 최소트리루트 and b 의키 < 부모의키 이면 - b 를이중연결리스트에서삭제 - 최소트리루트의이중연결리스트에삽입 3. b 의키 <min 의키 이면 - min 이 b 를가리키도록변경 min min 3 3 0 7 30 9 0 실행비용 : O() 를 감소 0 7 30 9 0 Copyright 007 DBLAB, Seoul National University

연쇄분리 (cascading cut) bool 데이타멤버 childcut - x 가가장최근에현재부모의자식으로된이후 x 의자식중하나가삭제될경우 true - 두최소트리가조인될때더큰키를가진루트의 childcut 은 false 로설정 - 삭제, 키 - 감소연산에서루트가아닌노드 q 를삭제할때마다연쇄분리단계호출 q 의부모 p 에서부터 childcut=false 인가장가까운조상에이르는경로검사 그런조상이없으면 p 부터 p 가속한최소트리의루트까지검사 이경로상에 childcut 이 true 이면서루트가아닌모든노드들을삭제하고 F- 히프의최소트리루트노드의이중연결리스트에삽입 이경로상에서 childcut 이 false 인것은 true 로변경 Copyright 007 DBLAB, Seoul National University 9

0 0 0 30 0 7 0 를 감소 0 7 30 * (a) Copyright 007 DBLAB, Seoul National University 30 0 (b)

분석 보조정리 9. - 공백인 F- 히프에일련의삽입, 합병, 최소 - 삭제, 삭제, 키 - 감소연산을수행하여 n 개의원소를가진 F- 히프 a 가되었다고할때 - b는 a의한최소트리에있는임의의노드라고하면 b의차수 log φ m (φ = ( ) /, m=b의서브트리의원소수 ) - maxdegree log φ n - 최소-삭제의실제비용 : O(logn+s) 정리 9. - 처음에공백인 F- 히프에대해 n 번의삽입, 합병, 최소 - 삭제, 삭제, 키 - 감소연산을수행할때 - 삽입, 합병, 키 - 감소연산의상환시간복잡도 : O() - 최소 - 삭제, 삭제연산의상환시간복잡도 : O(log n) Copyright 007 DBLAB, Seoul National University 3

최단 - 경로문제에응용 하나의출발점과모든목표점에대한최단 - 경로문제 - S : 최단경로가찾아진정점들의집합 - dist(i) S 에있는정점만을통해출발점에서 i 로가는최단경로의길이 - 최소 - 삭제연산 dist(i) 가최소가되는 i(i ) 를 S 에첨가 n- 번수행 - 키-감소연산 S 에남아있는정점의 dist 값이작아질때 그래프의간선수 (e) 만큼수행 - n- 번삽입 +n- 번최소 - 삭제 +e 번키 - 감소 = O(nlogn+e) S Copyright 007 DBLAB, Seoul National University 3

페어링히프 (pairing heap) GetMin,Insert,DeleteMin,Meld,Delete,DecreaseKey 연산 최대페어링히프 / 최소페어링히프 우선순위큐를표현하는데사용 피보나치히프와페어링히프연산의복잡도비교 연산피보나치히프페어링히프 GetMin Insert DeleteMin Meld Delete DecreaseKey 실제상환실제상환 O() O() O(n) O() O(n) O(n) O() O() O(log n) O() O(log n) O() O() O() O(n) O() O(n) O() O() O() O(log n) O(log n) O(log n) O(log n) Copyright 007 DBLAB, Seoul National University 33

최소페어링히프예 3 3 3 9 7 Copyright 007 DBLAB, Seoul National University 3

합병과삽입 () 비교링크 (compare-link) - 두최소페어링히프를하나의최소페어링히프로합병 - 두최소트리의루트를비교, 더큰루트를가진최소트리가다른트리의가장왼쪽서브트리가됨 - 합병예 3 3 3 3 3 3 9 9 7 7 삽입 - 원소 x 를가진페어링히프를만든후두페어링히프합병 Copyright 007 DBLAB, Seoul National University 3

합병과삽입 () 3 3 3 9 7 3 3 3 7 9 Copyright 007 DBLAB, Seoul National University 3

키감소 노드 N 이루트 or N 의감소시킨키 부모노드의키 - 키감소후종료 변경된키 < 부모노드의키 - 트리에서루트가 N 인서브트리분리 - 두최소트리를합병 0 0 0 3 3 7 7 7 3 Copyright 007 DBLAB, Seoul National University 37

Copyright 007 DBLAB, Seoul National University 3 최소 - 삭제 () 루트노드 ( 최소원소 ) 삭제후남은최소트리들을합병 단계페어링히프 (two pass pairing heap) 에서의합병. 왼쪽에서오른쪽으로진행하면서트리쌍들을합병 0 0 9 3 7 0 9 3 7 루트삭제 0 9 3 7

최소 - 삭제 ().. 가장오른쪽트리에서시작하여한번에하나씩남아있는트리를이트리에합병 ( 오른쪽에서왼쪽으로 ) 0 0 3 7 단계 () 9 3 7 9 Copyright 007 DBLAB, Seoul National University 39

Copyright 007 DBLAB, Seoul National University 0 최소 - 삭제 (3) 다단계패스페어링히프 (multi pass pairing heap) 의합병 - FIFO 큐에최소트리들삽입 - 큐앞에서 개뽑아합병후큐뒤에삽입 - 트리하나남을때까지반복 0 9 3 7 0 9 3 7 3 0 9 7 3 0 9 7

임의삭제 N 이루트일때 - 최소 - 삭제연산으로처리 N 이루트가아닐때. 트리에서루트가 N인서브트리분리. 노드 N 삭제후, 서브트리들을하나의최소트리로합병 3.,로부터나온최소트리들을하나로합병 Copyright 007 DBLAB, Seoul National University

구현고려사항과복잡도 구현고려사항 - 다양한수의자식필드를가진노드로구현 자식필드수를동적으로증가 비용증가 - 이진트리로구현 형제노드들을이중연결리스트로구현 가장왼쪽에있는노드는부모노드를가리킴 이중연결리스트사용시 O() 시간에임의원소삭제가능 복잡도 - GetMin,Insert,,Meld,DecreaseKey : O() - DeleteMin,Delete : O(n) 노드삭제후합병되어야하는서브트리의수가 O(n) Copyright 007 DBLAB, Seoul National University

대칭최소 - 최대히프 (SMMH) 루트는공백 루트를제외한각노드들이정확히하나의원소만갖는완전이진트리 elements(n) Ø 라면 - elements(n) : N 에있는원소를제외하고 N 을루트로하는서브트리에있는원소 - N 의왼쪽자식은 elements(n) 에있는최소원소 - N 의오른쪽자식은 elements(n) 에있는최대원소 0 0 0 0 0 30 Copyright 007 DBLAB, Seoul National University 3

SMMH 의성질 P. 각노드의원소는오른쪽형제에있는원소보다작거나같다. P. 조부모를가진모든노드 N 에대하여조부모의왼쪽자식에있는원소는 N 에있는원소보다작거나같다. P3. 조부모를가진모든노드 N 에대하여조부모의오른쪽자식에있는원소는 N 에있는원소보다크거나같다. Copyright 007 DBLAB, Seoul National University

SMMH 표현 완전이진트리를 차원배열 (h) 로표현 루트를표현하는위치 은비어있음 last : h 의제일오른쪽위치 - SMMH 의크기 = last - arraylength : h 에있는위치들의현재수 최소반환, 최대반환연산 : O() - n= : 최소와최대원소동일. 루트의왼쪽자식 - n> : 최소원소는루트의왼쪽, 최대원소는루트의오른쪽 Copyright 007 DBLAB, Seoul National University

SMMH 로의삽입 (). 완전이진트리의크기를 확장삽입될원소 x 를위한새노드 E 생성 0 삽입 0 0 0 0. E 로 x 를삽입한결과가 P 에위배되는지검증위배되는경우, E 의형제에있는원소는 E 로이동,E 는공백인형제노드를갖도록갱신 30 E Copyright 007 DBLAB, Seoul National University

SMMH 로의삽입 () 3. E 로부터트리위쪽으로 P 와 P3 을검증하면서버블업패스 (bubble-up pass) 수행 x 를 E 로삽입해도 P 와 P3 을위배하지않게되는곳에 E 가위치했을때 x 를 E 에삽입 0 0 0 0 과 E 교환 0 E 0 0 0 30 E 0 0 30 > : P 위배 Copyright 007 DBLAB, Seoul National University 7

SMMH 로의삽입 (3) 0 0 E 0 와 E 교환 E 0 0 0 0 0 30 0 0 30 > : P 위배 E 0 0 0 0 E 에 삽입 0 0 0 0 30 0 0 30 P,P,P3 모두만족 Copyright 007 DBLAB, Seoul National University

SMMH 에 0 을삽입하는예제 () 0 0 0 0 0 E 0 0 30 E 0 0 30 0 0<0 : P3 위배 P,P,P3 모두만족 0 0 0 0 0 30 0 E 에 0 삽입 Copyright 007 DBLAB, Seoul National University 9

SMMH 에서의삭제 최소원소 h[] 삭제 last 를 감소한후, h[last] 를 SMMH 에재삽입 P 과 P 성질들확인하면서 x 를삽입할적당한노드에도달할때까지트리아래쪽으로경로를따라감 - 최소 - 삭제연산인경우 P3 에위배될수없음. Copyright 007 DBLAB, Seoul National University 0

최소 - 삭제예제 () 0 E 0 0 0 0 0 0 0 30 0 0 0 30 x = 0 0> : P 위배 0 0 0 E 0 0 0 0 0 0> : P 위배 30 x = 0 0 0 30 E에 x 삽입 E x = 0 Copyright 007 DBLAB, Seoul National University

최소 - 삭제예제 () 0 E 0 0 0 0 0 0 0 삭제 30 0 0 0 30 0> : P 위배 x=0 0 0 0 E 0 0 0 0 0 30 x=0 0 0 E 30 x=0 0> : P 위배 0>30 : P 위배 Copyright 007 DBLAB, Seoul National University

최소 - 삭제예제 (3) 0 0 0 0 0 E 0 x=30 E 에 x 삽입 복잡도 : O(log n) Copyright 007 DBLAB, Seoul National University 3

구간히프 (interval heap) 마지막노드를제외한각노드가두개의원소 (a,b 이고 a b) 를포함하고있는완전이진트리 닫힌구간 [a,b] 를표현 각노드 P 의자식들의구간은 P 의구간에포함됨,30 3,7,, 3,,0,,0,,9,7, 7,9 Copyright 007 DBLAB, Seoul National University

구간히프의성질 노드구간의왼쪽끝점은최소히프를, 오른쪽끝점은최대히프를정의 30 3 7 3 0 7 0 9 7 9 (a) 최소히프 (b) 최대히프 루트의왼쪽끝점은구간히프에서최소원소, 오른쪽끝점은최대원소루트가하나의원소를가질때는최소이자최대원소 배열에사상시키는방식으로표현 n 개의원소를갖는구간히프의높이 : Ɵ(log n) Copyright 007 DBLAB, Seoul National University

구간히프로의삽입,30,0,, 3,7,,9 3,,7,,0 7,9 A, x 삽입 <x< : A 에삽입 x < : 최소히프에삽입 x > : 최대히프에삽입,30, 3,7, 3,,0, 0 삽입 <0< : A 에삽입,0,,9,7, 7,9 0 Copyright 007 DBLAB, Seoul National University

구간히프에 3 을삽입하는예제,30,30 3,7, 3,7,, 3,,0,, 3,,0,,0,,9,7, 7,9 A,0,,9,7, 7,9 3< 이므로최소히프삽입 3< 이므로 을아래로이동,30 3,7,,30 3,7 3,, 3,,0,, 3,,0,,0,,9,7, 7,9,0,,9,7, 7,9 3< 이므로 를아래로이동 3> 이므로 3 삽입 Copyright 007 DBLAB, Seoul National University 7

구간히프에 0 을삽입하는예제,30 3,7,,30 3,7,, 3,,0,, 3,,0,,0,,9,7, 7,9 A,0,,9,7, 7,9 0> 이므로최대히프삽입 0> 이므로 를아래로이동,30 3,7,,0 3,7,30, 3,,0,, 3,,0,,0,,9,7, 7,9,0,,9,7, 7,9 0> 이므로 를아래로이동 0>30 이므로 30 을아래로이동, 0 삽입 Copyright 007 DBLAB, Seoul National University

홀수개의원소를가진구간히프에삽입,0,0,, 3,7,30 3,,0,9,7, 7,9 A, x 삽입 <x< : A 에삽입 (x<a. : x 가왼쪽끝점 ) x< : 최소히프에삽입 x> : 최대히프에삽입,0 3,7,3 3 삽입 : 최대히프삽입, 3,,0,30,0,,9,7, 7,9, Copyright 007 DBLAB, Seoul National University 9

최소원소삭제 구간히프가비어있으면 DeleteMin 실패 구간히프가오직하나의원소를가질때, 이원소를반환하고공백구간히프가됨 둘이상의원소가있을경우루트의왼쪽끝점반환, 제거루트가마지막노드가아닐경우 - 마지막노드에서왼쪽점 p 제거후최소히프에 p 재삽입 ( 마지막노드가공백이되면노드제거 ) Copyright 007 DBLAB, Seoul National University 0

최소원소삭제예제 (),0 B 3,7,3,0 p= B 3,7,3, C 3,,0,30, C 3,,0,30,0,,9 D,7, 7,9,,0, D,9,7, 7,9 B의 3<, 3을루트로이동, 3,0 3,0 p= B,7,3 B 3,7,3, C 3,,0,30, p= C,,0,30,0,,9 D,7, 7,9,,0,,9 D,7, 7,9, 7, B 의오른쪽점과교환하지않음 C 의 3<, 3 을 B 로이동 >, p 와 교환 Copyright 007 DBLAB, Seoul National University

최소원소삭제예제 () 3,0 3,0 B 3,7,3 B 3,7,3,,0,,9 C, p=,0 D,7, 7,9,,30,0,,,9 C, p= D,7,,0 7,9,,30 D 의 <, 를 C 로이동 >7, p 와 7 교환 3,0 3,0 3,7,3 3,7,3,, p=7,0,30,,,0,30,0,,9,, 7,9,0,,9 7,, 7,9 p 삽입 Copyright 007 DBLAB, Seoul National University

구간히프의초기화 각서브트리가구간히프인지확인하면서히프제일밑에서부터루트까지검사 각서브트리에대해 - 루트에있는원소들을순서화 - DeleteMin 에사용된재삽입방법을이용, 서브트리의루트의왼쪽끝점을재삽입 - DeleteMax 에사용된방법을이용, 서브트리의루트의오른쪽끝점을재삽입 Copyright 007 DBLAB, Seoul National University 3

구간히프연산의복잡도 GetMin() : O() GetMax() : O() Insert() : O(log n) DeleteMin() : O(log n) DeleteMax() : O(log n) 초기화 : Ɵ(n) Copyright 007 DBLAB, Seoul National University

보완적범위탐색문제 일차원점들의동적인모임이주어졌을때구간 [a,b] 의밖에있는점탐색 보완적범위질의 : Ɵ(k) ( 단 k 는답이되는점들의수 ). 구간히프가비어있다면반환. 루트구간이 [a,b] 에포함된다면, 반환 - 모든점들이범위안에있으므로, 답이없음 3. 범위 [a,b] 에없는루트구간의끝점들이답이됨. 루트의왼쪽서브트리를순환적으로탐색. 루트의오른쪽서브트리를순환적으로탐색. 반환 방문된구간히프노드들의총수 : O(3k+) Copyright 007 DBLAB, Seoul National University