Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Data Structures and Practice (INA240) Note 10: Priority Queue: Heap and AVL Tree, Lecture notes of Data Structures and Algorithms

These are algorithm courses materials.

Typology: Lecture notes

2017/2018

Uploaded on 10/23/2018

keehwan
keehwan ๐Ÿ‡จ๐Ÿ‡ฆ

20 documents

1 / 15

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต(INA240) NOTE 10
ยฉcopyright 2005
์šฐ์„ ์ˆœ์œ„ ํ: ํž™
AVL ํŠธ๋ฆฌ
ํ•œ๊ตญ๊ธฐ์ˆ ๊ต์œก๋Œ€ํ•™๊ต
ํ•œ๊ตญ๊ธฐ์ˆ ๊ต์œก๋Œ€ํ•™๊ต ์ธํ„ฐ๋„ท๋ฏธ๋””์–ด๊ณตํ•™๋ถ€
์ธํ„ฐ๋„ท๋ฏธ๋””์–ด๊ณตํ•™๋ถ€ ๊น€์ƒ์ง„
๊น€์ƒ์ง„
2
2/30
/30
๊ต์œก๋ชฉํ‘œ
์ด์ง„ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ์œ ์šฉํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ
์šฐ์„ ์ˆœ์œ„ ํ: ํž™(heap)
AVL ํŠธ๋ฆฌ: ๊ท ํ˜• ํŠธ๋ฆฌ
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Partial preview of the text

Download Data Structures and Practice (INA240) Note 10: Priority Queue: Heap and AVL Tree and more Lecture notes Data Structures and Algorithms in PDF only on Docsity!

ยฉcopyright 2005 ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต( INA240) NOTE 10

AVL ํŠธ๋ฆฌ

์šฐ์„ ์ˆœ์œ„ ํ: ํž™(heap)

AVL ํŠธ๋ฆฌ: ๊ท ํ˜• ํŠธ๋ฆฌ

์šฐ์„ ์ˆœ์œ„ ํ

์ผ๋ฐ˜์ ์œผ๋กœ ํ๋Š” FIFO ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

FIFO ํ๋„ ์šฐ์„ ์ˆœ์œ„ ํ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

deq O(N) O(1) O(log 2 N)

enq O(1) O(N) O(log 2 N)*

ํž™

ํž™ํž™์ž๋ฃŒ๊ตฌ์กฐ๋กœ์„œ(heap)์€ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”, ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ํŠน์„ฑ์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

J

H

D G

B C E

I

F A

J

I

F G

B C D

H

E A

heap

ํž™: enqueue

ํž™์—์„œ enqueue๋Š” ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ญ์ƒ ๊ฐ€์žฅ

P

L

E F

B C A

N

K G

P

L

E F

B C A

N

K G

M

ํž™: enqueue โ€“ ๊ณ„์†

dequeue๊ต์ฒดํ•ด์•ผ ํ•œ๋‹ค์™€ ๋น„์Šทํ•˜๊ฒŒ ์ˆœ์„œ ํŠน์„ฑ์„ ๋งŒ์กฑํ•˜๋„๋ก ๋ถ€๋ชจ์™€ ๊ฐ’์„. ์ด๋Ÿฐ ๊ต์ฒด๋Š” ํŠธ๋ฆฌ๊ฐ€ ์ˆœ์„œ ํŠน์„ฑ์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€

๋ฐ˜๋ณต๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋Ÿฐ ์žฌ์กฐ์ •์„ reheapupreheapup์ด๋ผ ํ•œ๋‹ค.

P

L

E F

B C A

N

K G

M

P

M

E L

B C A

N

K G

F

ํž™์˜ ๊ตฌํ˜„

P

L

E F

B C

N

K G

P L N E F K G B C

๋ถ€๋ชจ์˜ ์œ„์น˜ ์™ผ์ชฝ ์ž์‹์˜ ์œ„์น˜: (index-1)/2: (index2)+ ์˜ค๋ฅธ์ชฝ ์ž์‹์˜ ์œ„์น˜: (index2)+

Dequeue

M

E L

B C A

N

K G

F

hole nextHole

public Object deq() throws QueueUnderflowException{if(isEmpty()) throw new QueueUnderflowException(โ€œโ€ฆโ€); Comparable toMove = (Comparable)elements[lastIndex];Object tmp = elements[0]; lastIndexreheapDown(toMove);--; } return tmp; private void reheapDown(Comparable item){int hole = 0; int nextHole;nextHole = findNextHole(hole, item); while(nextHole != hole){elements[hole] = elements[nextHole]; hole = nextHole;nextHole = findNextHole(hole, item); }elements[hole] = item; }

Dequeue _private int findNextHole(int hole, Comparable item){int left = hole2+1;int right = hole2+2; Comparable leftChild = null;//_** hole์ด ์ž์‹์ด ์—†๋Š” ๊ฒฝ์šฐ if(left>lastIndex){return hole; }// hole์ด ์™ผ์ชฝ ์ž์‹๋ฐ–์—๋Š” ์—†๋Š” ๊ฒฝ์šฐ else if(left==lastIndex){if(item.compareTo(elements[left])>0) return hole; } else return left; // else{ hole์ด ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์ž์‹์ด ๋ชจ๋‘ ์žˆ๋Š” ๊ฒฝ์šฐ leftChild = (Comparable)elements[left];if(leftChild.compareTo(elements[right])>0){ if(item.compareTo(leftChild)>0) return hole;else return left; }else{ if(item.compareTo(elements[right])>0) return hole;else return right; } } }

ํž™ VS. ๋‹ค๋ฅธ ์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌํ˜„

O(log 2 N)

O(log 2 N)

deq O(log 2 N) O(1) O(N)

enq O(log 2 N) O(N) O(N)

AVL ํŠธ๋ฆฌ(๊ท ํ˜•ํŠธ๋ฆฌ)

AVL(AdelsonAVL(Adelson-๋†’์ด์™€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด์˜ ์ฐจ์ด๊ฐ€-VelskiiVelskii and Landis)and Landis) ํŠธ๋ฆฌํŠธ๋ฆฌ : 1 ๊ฐ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜์ดํ•˜์ธ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ

์ด์ง„ ํŠธ๋ฆฌ์˜ ํ•œ ๋…ธ๋“œ๊ฐ€ AVL ์„ฑ์งˆ์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

๋‘ ๊ฒฝ๋กœ์˜ ์ฐจ์ด๋ฅผ ๊ท ํ˜•๊ท ํ˜• ์ธ์ˆ˜์ธ์ˆ˜(balance factor)๋ผ ํ•œ๋‹ค.

AVL Tree non AVL Tree

LL, RR ํšŒ์ „

ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์€ ๋…ธ๋“œ๋“ค์„ ํšŒ์ „ํšŒ์ „(rotate)ํ•˜์—ฌ ๋งž์ถ˜๋‹ค.

LL๊ณผ RR์˜ ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ผ ํšŒ์ „์œผ๋กœ ๊ท ํ˜•์„ ๋งž์ถœ ์ˆ˜ ์žˆ์ง€๋งŒ

LR๊ณผ RL์˜ ๊ฒฝ์šฐ์—๋Š” ์ด์ค‘ ํšŒ์ „์„ ํ•ด์•ผ ๊ท ํ˜•์„ ๋งž์ถœ ์ˆ˜ ์žˆ๋‹ค.

A

B

B

A

T2 T

A

B

T1 T1 T

B

A

T

LL Rotate (^) RR Rotate

T1 T2 T3^ T1^ T2^ T

LR ํšŒ์ „

A B C

B A

C

A

B

C

T1 T2 T

T

C

B A

T

A

B

C

T1 T2 T

T

C

B A

T1 T2 T3 T

T1 T2 T

RL ํšŒ์ „

A B C

A B

C

A

B

C

C

A B

T1 T2 T3 T

A

B

C

C

A B

T

T2 T

T1 T

T2 T

T1 T

T1 T2 T

AVL ํŠธ๋ฆฌ: ์‚ฝ์ž… ์˜ˆ 15 30 15 30 45

RR

LL^02150

LR

AVL ํŠธ๋ฆฌ: ์‚ญ์ œ โ€“ ๊ณ ๋ ค์‚ฌํ•ญ 1

๊ฒฝ์šฐ๊ฒฝ์šฐ๊ท ํ˜•์ธ์ˆ˜๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค^ 2.2.^ ๋…ธ๋“œ์˜ ๊ท ํ˜•์ธ์ˆ˜๊ฐ€^1. (๋˜๋Š”๋ฐ”๋€Œ๊ธฐ ์ „ ์ธ์ˆ˜ ๊ฐ’์€^ -1๋กœ ๋ฐ”๋€Œ๋ฉด ๊ทธ๊ฒƒ์˜ ๋ถ€๋ชจ๋…ธ๋“œ์˜ 0)

๊ฒฝ์šฐ๊ฒฝ์šฐํ•ด์•ผ ํ•˜๋ฉฐ^ 3.3.^ ๋…ธ๋“œ์˜ ๊ท ํ˜•์ธ์ˆ˜๊ฐ€, ์žฌ์กฐ์ •๋˜๋ฉด ๊ทธ ๋…ธ๋“œ์˜ ๊ท ํ˜•์ธ์ˆ˜๋Š”^2 ๋˜๋Š”^ -2๋กœ ๋ฐ”๋€Œ๋ฉด ๊ทธ ์œ„์น˜์—์„œ ์žฌ์กฐ์ • 0 ์ด ๋œ๋‹ค.

๊ฒฝ์šฐ 2.^0

AVL ํŠธ๋ฆฌ: ์‚ญ์ œ โ€“ ๊ณ ๋ ค์‚ฌํ•ญ 2

LL

RR

AVL ํŠธ๋ฆฌ: ์‚ญ์ œ ์˜ˆ

RR

RR^0

์ด ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์ด ํšŒ์ „์— ์‚ฌ์šฉ๋˜๋Š” B๋…ธ๋“œ, C๋…ธ๋“œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. (์‚ฝ์ž…๊ณผ ์ฐจ์ด์ )

AVL ํŠธ๋ฆฌ: ์‚ญ์ œ ์˜ˆ โ€“ ๊ณ„์†