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 ๐Ÿ‡จ๐Ÿ‡ฆ

18 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 ํŠธ๋ฆฌ: ์‚ญ์ œ ์˜ˆ โ€“ ๊ณ„์†