+ All Categories
Home > Documents > October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University...

October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University...

Date post: 02-Jan-2016
Category:
Upload: arnold-mccoy
View: 216 times
Download: 0 times
Share this document with a friend
42
October 16, 2003 1 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University [email protected]
Transcript
Page 1: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 1

Algorithms and Data StructuresLecture IX

Simonas ŠaltenisAalborg [email protected]

Page 2: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 2

This Lecture

Red-Black Trees Properties Rotations Insertion Deletion

Page 3: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 3

Balanced Binary Search Trees

Problem: execution time for dynamic set operations is (h), which in worst case is (n)

Solution: balanced search trees guarantee small height – h = O(log n)

Page 4: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 4

Red/Black Trees A red-black tree is a binary search tree with the

following properties: Nodes (incoming edges) are colored red or black Nil-pointer leaves are black The root is black

No two consecutive red edges on any root-leaf path

Same number of black edges on any root-leaf path (= black height of the tree)

Page 5: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 5

RB-Tree Properties (1)

Some measures n – # of internal nodes h – height bh – black height

2bh – 1 n bh h/2 2h/2 n +1 h/2 lg(n +1) h 2 lg(n +1)

Page 6: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 6

Operations in the binary-search tree (search, insert, delete, ...) can be accomplished in O(h) time

The RB-tree is a binary search tree, whose height is bound by 2 log(n +1), thus the operations run in O(log n) Provided that we can maintain red-black

tree properties spending no more than O(h) time on each insertion or deletion

RB-Tree Properties (2)

Page 7: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 7

Red-Black Tree ADT

RBTree ADT: Accessor functions:

key():int color(): {red, black} parent(): RBTree left(): RBTree right(): RBTree

Modification procedures: setKey(k:int) setColor(c:{red, black}) setParent(T:RBTree) setLeft(T:RBTree) setRight(T:RBTree)

nil

Page 8: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 8

NIL Sentinel

To simplify algorithms we have a special instance of the RBTree ADT – nil : nil.color() = black nil.right() = nil.left() = root of the tree parent() of the root node = nil nil.parent() and nil.key() – undefined

Page 9: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 9

Rotation

right rotation of B

left rotation of A

A

B

B

A

Page 10: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 10

Right Rotation

RightRotate(B)01 A B.left() Move 02 B.setLeft(A.right())03 A.right().setParent(B) Move A04 if B = B.parent().left() then B.parent().setLeft(A)05 if B = B.parent().right() then B.parent().setRight(A)06 A.setParent(B.parent()) Move B 07 A.setRight(B) 08 B.setParent(A)

A

B

B

A

Page 11: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 11

The Effect of a Rotation Maintains inorder key ordering

After right rotation Depth() decreases by 1 Depth() stays the same Depth() increases by 1

Rotation takes O(1) time

, ,

we can state the invariant

a b c

a A b B c

Page 12: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 12

Insertion in the RB-Trees

RBInsert(T,n)01 Insert n into T using the normal binary search tree insertion

procedure02 n.setLeft(nil)03 n.setRight(nil)04 n.setColor(red)05 RBIsertFixup(n)

Page 13: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 13

Insertion, Plain and Simple

Let n = the new node p = n.parent() g = p.parent()

Case 0: p.color() = black No properties of the tree are

violated – we are done! In the following assume:

p = g.left()

Page 14: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 14

Insertion: Case 1

Case 1: p.color() = red and g.right().color() = red (parent and its sibling are red) a tree rooted at g is balanced enough!

01 p.setColor(black)02 g.right().setColor(black)03 g.setColor(red)04 n g // and update p and g

Page 15: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 15

Insertion: Case 1 (2)

We call this a promotion Note how the black depth remains

unchanged for all of the descendants of g

Page 16: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 16

Insertion: Case 3

Case 3: p.color() = red and g.right().color() = black n = p.left()

01 p.setColor(black)02 g.setColor(red)03 RightRotate(g)04 // we are done!

Page 17: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 17

Insertion: Case 3 (2)

We do a right rotation and two re-colorings Tree becomes more balanced Black depths remain unchanged No further work on the tree is necessary!

Page 18: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 18

Insertion: Case 2

Case 2: p.color() = red and g.right().color() = black n = p.right()

01 LeftRotate(p)02 exchange n and p pointers and do as in case 3!

Page 19: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 19

Insertion: Mirror cases

All three cases are handled analogously if p is a right child For example, case 2 and 3 – right-left

double rotation

Page 20: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

20

Insertion: Pseudo Code

Case 1

Case 2

Case 3

RBInsertFixup(n)01 p n.parent()02 g p.parent()03 while p.color() = red do04 if p = g.left() then 05 if g.right().color() = red06 then p.setColor(black)07 g.right().setColor(black)08 g.setColor(red)09 n g // and update p and g, as in 01,02 10 else if n = p.right() 11 then LeftRotate(p)12 exchange n p13 p.setColor(black)14 g.setColor(red)15 RightRotate(g)16 else (same as then clause with ”right” and ”left”

exchanged)17 nil.left().setColor(black) // set the color of root to

black

Page 21: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 21

Insertion Summary

If two red edges are present, we do either a restructuring (with a simple or double

rotation) and stop (cases 2 and 3), or a promotion and continue (case 1)

A restructuring takes constant time and is performed at most once. It reorganizes an off-balanced section of the tree

Promotions may continue up the tree and are executed O(log n) times (height of the tree)

The running time of an insertion is O(log n)

Page 22: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 22

Inserting "REDSOX" into an empty tree

Now, let us insert "CUBS"

An Insertion Example

Page 23: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 23

Example C

Page 24: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 24

Example U

Page 25: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 25

Example U (2)

Double Rotation

Page 26: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 26

Example B

What now?

Page 27: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 27

Example B (2)

Right Rotation on D

Page 28: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 28

Example S

two red edges and red uncle X- promotion

Page 29: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 29

Example S (2)again two red edges - rotation

Page 30: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 30

Deletion

As with binary search trees, we can always delete a node that has at least one nil child

If the key to be deleted is stored at a node that has no external children, we move there the key of its in-order successor, and delete that node instead

Page 31: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 31

Deletion Algorithm1. Remove v2. If v.color() = red, we are done! Else, assume that u (v’s non-nil child or

nil) gets additional black color: If u.color() = red then u.setColor(black) and we are done! Else u’ s color is double black.

Page 32: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 32

Deletion Algorithm (2)

How to eliminate double black edges? The intuitive idea is to perform a "color

compensation" Find a red edge nearby, and change the pair (red,

double black) into (black, black) We have two cases :

restructuring, and recoloring

Restructuring resolves the problem locally, while recoloring may propagate it two levels up

Slightly more complicated than insertion

Page 33: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 33

Deletion Case 2

If sibling and its children are black, perform a recoloring

If parent becomes double black, continue upward

Page 34: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 34

Deletion: Cases 3 and 4

If sibling is black and one of its children is red, perform a restructuring

Page 35: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 35

Deletion Case 1

If sibling is red, perform a rotation to get into one of cases 2, 3, and 4

If the next case is 2 (recoloring), there is no propagation upward (parent is now red)

Page 36: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 36

A Deletion Example

Delete 9

Page 37: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 37

A Deletion Example (2)

Case 2 (sibling is black with black children) – recoloring

Page 38: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 38

A Deletion Example (3)

Delete 8: no double black

Page 39: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 39

A Deletion Example (4)

Delete 7: restructuring

Page 40: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 40

How long does it take?

Deletion in a RB-tree takes O(log n) Maximum three rotations and O(log n)

recolorings

Page 41: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 41

Red-Black trees are related to 2-3-4 trees (non-binary trees)

Other balanced trees

AVL-trees have simpler algorithms, but may perform a lot of rotations

Page 42: October 16, 20031 Algorithms and Data Structures Lecture IX Simonas Šaltenis Aalborg University simas@cs.auc.dk.

October 16, 2003 42

Next Week

Solving optimization problems using Dynamic Programming “Improved version” of divide-and-

conquer


Recommended