Vous êtes sur la page 1sur 18

Priority Search Trees

Keys are pairs (x,y). Basic (search, insert, delete) and rectangle operations. Two varieties.
Based on a balanced binary search tree such as a red-black tree.
Red-black Priority Search Tree (RBPST)

Based on a radix search tree.


Radix Priority Search Tree (RPST)

Radix Priority Search Tree


All x values are different, integral, and in the range [0, k 1]. Each node of the priority search tree has exactly one element. Min tree on y. Radix tree on x.

Radix Priority Search Tree


The y value of the element in node w is <= the y value of all elements in the subtree rooted at w (y values define a min tree). Root interval is [0,k). Interval for node w is [a,b).
Left child interval is [a, floor((a+b)/2)). Right child interval is [floor((a+b)/2, b)).

Insert
Start with empty RPST. k = 16. Root interval is [0,16). Insert (5,8).
[0,16)
5,8

[0,16) Insert (6,9). 5,8 (5,8) remains in root, because 8 < 9. (6,9) inserted in left subtree, because[0,8) 6 is in the left child interval. 6,9

Insert

[0,16)

5,8 Insert (7,1). (7,1) goes into the root, because 1 < 8. [0,8) (5,8) inserted in left subtree, because 5 6,9 [0,16) is in the left child interval. 7,1 (5,8) displaces (6,9), because 8 < 9.

(6,9) inserted in right subtree, because 6 is in the right child interval.

[0,8) 5,8 [4,8) 6,9

Insert
[0,16) 7,1 [0,8) 5,8 [4,8) 6,9 [0,8) 5,8 [4,8) 6,9 [0,16) 7,1 [8,16) 11,5

Insert (11,5).

Properties
[0,16)

7,1
[0,8) 5,8 [0,4) 2,12 [4,8) 6,9 [8,16) 11,5

Height is O(log k). Insert time is O(log k).

Search
[0,16)

7,1
[0,8) 5,8 [0,4) 2,12 [4,8) 6,9 [8,16) 11,5

Search time is O(log k).

Delete
[0,16)

7,1
[0,8) 5,8 [0,4) 2,12 [4,8) 6,9 [8,16) 11,5

Similar to delete min of min heap. Delete time is O(log k).

minXinRectangle(xL,xR,yT)
[0,16)

12,1
[0,8) 5,8 [0,4) 2,12 [4,8) 6,9 [8,16) 11,5 [12,16) 14,6

minXinRectangle(6,12,7). Time is O(log k).

Complexity
yok yok yok ynotOK ynotOK yok yok

yok
ynotOK Profile of visited nodes.

ynotOK

yok

ynotOK ynotOK

Complexity
yok yok yok ynotOK ynotOK yok yok

yok
ynotOK

ynotOK

yok

ynotOK ynotOK

Yellow node is node closest to root with 2 examined children.

Complexity
yok yok yok ynotOK ynotOK yok yok

yok
ynotOK

ynotOK

yok

ynotOK ynotOK

No yellow node O(log k) examined nodes Yellow node unique

Complexity
yok yok yok ynotOK ynotOK yok yok

yok
ynotOK

ynotOK

yok

ynotOK ynotOK

No node in the yellow nodes subtree can have two children marked yok.

Complexity
yok yok yok ynotOK ynotOK yok yok

yok
ynotOK

ynotOK

yok

ynotOK ynotOK

# nodes visited < 4log k.

maxXinRectangle(xL,xR,yT)
[0,16)

12,1
[0,8) 5,8 [0,4) 2,12 [4,8) 6,9 [8,16) 11,5 [12,16) 14,6

maxXinRectangle(6,12,7). Time is O(log k).

minYinXrange(xL,xR)
[0,16)

12,1
[0,8) 5,8 [0,4) 2,12 [4,8) 6,9 [8,16) 11,5 [12,16) 14,6

minYinXrange(6,10). Time is O(log k).

enumerateRectangle(xL,xR,yT)
[0,16)

12,1
[0,8) 5,8 [0,4) 2,12 [4,8) 6,9 [8,16) 11,5 [12,16) 14,6

enumerateRectangle(6,12,8). Time is O(log k + s), where s is #points in rectangle.

Vous aimerez peut-être aussi