design and analysis of algorithmsailab.cs.nchu.edu.tw/course/algorithms/106/al04.pdfreview: master...

97
1 Design and Analysis of Algorithms 演算法設計與分析 Lecture 4 October 18, 2017 洪國寶

Upload: others

Post on 08-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

1

Design and Analysis of

Algorithms

演算法設計與分析

Lecture 4

October 18, 2017

洪國寶

Page 2: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

2

Homework # 3

1. - / 4.1-5 (p.75) Use the following ideas to develop a nonrecursive, linear time algorithm for the maximum-subarray problem. Start at the left end of the array, and progress toward the right, keeping track of the subarray seen so far. Knowing a maximum subarray of A[1..j], extend the answer to find a maximum subarray ending at index j+1 by using the following observation: a maximum subarray of A[1..j+1] is either a maximum subarray of A[1..j] or a subarray A[i..j+1], for some 1≦ i≦ j+1. Determine a maximum subarray of A[i..j+1] in constant time based on knowing a maximum subarray ending at index j+1.

2. 10.2-7 (p. 209 / p. 241)

3. 10.4-3 (p. 216 / p. 248)

4. 10-1 (p. 217 / p. 249)

5. Consider the following problem: Given a set S of n integers and another integer x, determine whether or not there exist two integers in S whose sum is exactly x. Without assuming S is sorted, can we solve this problem in O(n)-time? How about O(n) expected time? Justify your answers.

Due (No need to hand in.)

Page 3: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

3

Outline

• Review

• Binary search trees

• Red-black trees

• Augmenting data structures

Page 4: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

4

Review: Recurrence Relations

• Describe functions in terms of their values on smaller inputs

• Arise from Divide and Conquer

T(n) = (1) if n c

T(n) = a T(n/b) + D(n)+C(n) otherwise

• Solution Methods (Chapter 4)

– Substitution Method

– Iteration Method

– Master Method ■

Page 5: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

5

Review: Substitution Method

• Guess the form of the solution, then use

mathematical induction to show that it

works

• Works well when the solution is easy to

guess

• No general way to guess the correct solution

Page 6: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

6

Review: Iteration Method

• Expand (iterate) the recurrence and express it as a summation of terms dependent only on n and the initial conditions

• The key is to focus on 2 parameters

– the number of times the recurrence needs to be iterated to reach the boundary condition

– the sum of terms arising from each level of the iteration process

• Techniques for evaluating summations can then be used to provide bounds on solution.

Page 7: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

7

Review: Master Method

• Provides a “cookbook” method for solving

recurrences of the form

T(n) = a T(n/b) + f(n)

• Assumptions:

– a 1 and b 1 are constants

– f(n) is an asymptotically positive function

– T(n) is defined for nonnegative integers

– We interpret n/b to mean either n/b or n/b■

Page 8: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

8

Review: The Master Theorem

• With the recurrence T(n) = a T(n/b) + f(n) as in the

previous slide, T(n) can be bounded asymptotically as

follows:

1. If f(n)=O(nlogba-) for some constant > 0, then T(n)= (nlogba).

2. If f(n) = (nlogba), then T(n) = (nlogba lg n).

3. If f(n) = ( nlogba+ ) for some constant > 0, and if a f(n/b)

c f(n) for some constant c < 1 and all sufficiently large n,

then T(n)= (f(n)). ■

Page 9: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

9

Review: Simplified Master Theorem

Let a 1 and b > 1 be constants and let T(n) be the

recurrence

T(n) = a T(n/b) + nk

defined for n 0.

1. If a > bk, then T(n) = ( nlogba ).

2. If a = bk, then T(n) = ( nk lg n ).

3. If a < bk, then T(n) = ( nk ). ■

Page 10: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

10

Review: Dynamic Sets

• Sets that grow, shrink, or otherwise change with time are called dynamic sets.

• Each element in the set is represented by a data object.

• Usually one of the fields of an object is called a key, and plays a central role in the manipulation of the set data.

• Operations on a dynamic set generally fall into two categories, 1. queries that return information about the set,

2. modifying operations that change the set.

Page 11: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

11

Review: Dynamic Sets

• Dynamic sets support queries such as:

• Search(S, k), Minimum(S), Maximum(S),

Successor(S, x), Predecessor(S, x)

• Dynamic sets support modifying operations

like:

• Insert(S, x), Delete(S, x)

Page 12: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

12

Review: Elementary Data Structures

• Stacks: push (insert), pop (delete)

• Queues: enqueue (insert), dequeue (delete)

• Linked lists: insert, delete, search

• Rooted trees

Page 13: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

13

Review: Hashing Tables

• Motivation: symbol tables

– A compiler uses a symbol table to relate

symbols to associated data

• Symbols: variable names, procedure names, etc.

• Associated data: memory location, call graph, etc.

– For a symbol table (also called a dictionary),

we care about search, insertion, and deletion

– We typically don’t care about sorted order

Page 14: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

14

Review: Hash Tables

• More formally:

– Given a table T and a record x, with key (= symbol) and satellite data, we need to support:

• Insert (T, x)

• Delete (T, x)

• Search(T, x)

– We want these to be fast, but don’t care about sorting the records

• The structure we will use is a hash table

– Supports all the above in O(1) expected time!

Page 15: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

15

Review: Chaining

• Chaining puts elements that hash to the

same slot in a linked list:

——

——

——

——

——

——

T

k4

k2k3

k1

k5

U

(universe of keys)

K

(actual

keys)

k6

k8

k7

k1 k4——

k5 k2

k3

k8 k6——

——

k7——

Page 16: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

16

Review: Analysis of Chaining

• Assume simple uniform hashing: each key in table

is equally likely to be hashed to any slot

• Given n keys and m slots in the table, the

load factor = n/m = average # keys per slot

• The cost of searching = O(1 + )

– In other words, we can make the expected cost of

searching constant if we make constant

• If the number of keys n is proportional to the

number of slots in the table, then = O(1).

Page 17: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

17

Outline

• Review

• Binary search trees

• Red-black trees

• Augmenting data structures

Page 18: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

18

Binary Search Trees

• Binary Search Trees (BSTs) are binary trees with

binary search tree property:

key[leftSubtree(x)] key[x] key[rightSubtree(x)]

• In addition to satellite data, elements in a BST have:

– key: an identifying field inducing a total ordering

– left: pointer to a left child (may be NULL)

– right: pointer to a right child (may be NULL)

– p: pointer to a parent node (NULL for root) ■

Page 19: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

19

Binary Search Trees

• Examples:

Page 20: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

20

Inorder Tree Walk

• Consider the following codeTreeWalk(x)

if x Nil

then TreeWalk(left[x]);

print(x);

TreeWalk(right[x]);

• It prints elements in sorted (increasing) order

• This is called an inorder tree walk– Preorder tree walk: print root, then left, then right

– Postorder tree walk: print left, then right, then root ■

Page 21: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

21

Inorder Tree Walk

• Example:

• How long will a tree walk take? What is the recurrence T(n)?

• Prove that inorder walk prints in monotonically increasing order.

F

B H

KDA

TreeWalk(x)

if x Nil

then TreeWalk(left[x])

print(x)

TreeWalk(right[x])

Page 22: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

22

Operations on BSTs: Search

• Given a key k

and a pointer to a

node x, returns

an element with

that key or

NULL

• Initially, x is the

root of the tree

Page 23: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

23

Operations on BSTs: Search

• Example: search for the key 13

Page 24: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

24

Operations on BSTs: Search

• How long will a search operation take?

• T(n) = ?

Use whiteboard.

Page 25: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

25

Operations of BSTs: Insert

• Adds an element z to the tree so that the

binary search tree property continues to

hold

• The basic algorithm

– Like the search procedure above

– Insert z in place of NULL ■

Page 26: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

26

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Page 27: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

27

BST Insert: Example

• Example: Insert CF

B H

KDA

C

Page 28: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

28

BST Search/Insert:

Running Time and Tree Height

• What is the running time of TreeSearch( ) or

TreeInsert( )?

• A: O(h), where h = height of tree

• What is the height of a binary search tree?

• A: worst case: h = O(n) when tree is just a

linear string of left or right children

– We’ll keep all analysis in terms of h for now

– Later we’ll see how to maintain h = O(lg n)

Page 29: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

29

Sorting again

• Sorting With Binary Search Trees (see the next slide for an example)

Informal code for sorting array A of length n:BSTSort(A)

for i=1 to n

TreeInsert(T, A[i]);

InorderTreeWalk(root[T]);

• Argue that this is (n log n)

• What will be the running time in the – Worst case?

– Average case?

Page 30: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

30

Sorting With BSTsfor i=1 to n

TreeInsert(A[i]);

InorderTreeWalk(root);

3 1 8 2 6 7 5

5 7

1 2 8 6 7 5

2 6 7 5

3

1 8

2 6

5 7

Page 31: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

31

More BST Operations:

Minimum, Maximum

• How can we implement

Minimum and Maximum

queries?

• What are their running

time?

Page 32: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

32

More BST Operations:

Successor and Predecessor

• For deletion, we will need a Successor() operation.

• What are the general rules for finding the successor of node x?

• Two cases:

– x has a right subtree: successor is minimum node in right subtree

– x has no right subtree: successor is first ancestor of xwhose left child is also ancestor of x

• Intuition: As long as you move to the left up the tree, you’re visiting smaller nodes.

• Predecessor: similar algorithmTreeWalk(x)

if x Nil

then TreeWalk(left[x])

print(x)

TreeWalk(right[x])

Page 33: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

33

BST Operations: Successor

TreeWalk(x)

if x Nil

then TreeWalk(left[x])

print(x)

TreeWalk(right[x])

Page 34: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

34

BST Operations: Successor

• Example:

What is the successor of node 3? Node 15? Node

13?

TreeWalk(x)

if x Nil

then TreeWalk(left[x])

print(x)

TreeWalk(right[x])

Page 35: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

35

BST Operations: Delete

• Deletion is a bit tricky

• 3 cases:

– (0). x has no children:

• Remove x

– (1). x has one child:

• Splice out x

– (2). x has two children:

• Swap x with its successor y

• Perform case (0) or (1) to delete y

Page 36: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

36

BST Operations: Delete

• Why will case 2 always go to case 0 or case 1?

• A: because when x has 2 children, its

successor is the minimum in its right subtree

• Could we swap x with predecessor instead of

successor?

• A: yes.

Page 37: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

37

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Case 0 or case 1

Case 2

Note that y can

have at most

one child

x is a child of y

and is used to

replace y

If y is the root

then x will

become the new

root

Copy y to z

Page 38: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

38

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Page 39: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

39

Binary search trees: conclusion

• Search trees are data structures that support many

dynamic-set operations.

• Basic operations on a binary search tree take time

propositional to the height of the tree.

– The height of a node in a tree is the number of edges on

the longest simple downward path from the node to a

leaf.

– The height of a tree is the height of its root.

• Up next: guaranteeing a O(log n) height tree■

Page 40: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

40

Outline

• Review

• Binary search trees

• Red-black trees

• Augmenting data structures

Page 41: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

41

Red-Black Trees

• Red-black trees:

– Binary search trees augmented with node color

– Operations designed to guarantee that the height

h = O(lg n)

• First: describe the properties of red-black trees

Then: prove that these guarantee h = O(lg n)

Finally: describe operations on red-black trees ■

Page 42: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

42

Red-Black Properties

• The red-black properties:

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

– Note: this means every “real” node has 2 children

3. If a node is red, both children are black

– Note: can’t have 2 consecutive reds on a path

4. Every path from node to descendent leaf contains the same number of black nodes

5. The root is always black ■

Page 43: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

43

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Page 44: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

44

Height of Red-Black Trees

• We call the number of black nodes on any path

from, but not including, a node x to a leaf the

black-height of the node, denoted bh(x).

• What is the minimum black-height of a node with

height h?

A: a height-h node has black-height h/2

• Theorem: A red-black tree with n internal nodes

has height h 2 log(n + 1) ■

Page 45: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

45

RB Trees: Proving Height Bound

• Prove: n-node RB tree has height h 2 lg(n+1)

• Claim: A subtree rooted at a node x contains at

least 2bh(x) - 1 internal nodes

– Proof by induction on height h

– Base step: x has height 0 (i.e., NULL leaf node)

• What is bh(x)?

Page 46: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

46

RB Trees: Proving Height Bound

• Prove: n-node RB tree has height h 2 lg(n+1)

• Claim: A subtree rooted at a node x contains at least 2bh(x) - 1 internal nodes

- Proof by induction on height h

- Basis (Base case): x has height 0 (i.e., NULL leaf node)

What is bh(x)?

A: 0

So…subtree contains 2bh(x) - 1 = 20 - 1 = 0 internal nodes (TRUE)

Page 47: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

47

RB Trees: Proving Height Bound• Inductive proof that subtree at node x contains at least

2bh(x) - 1 internal nodes

- Inductive step: x has positive height and 2 children

- Each child has black-height of bh(x) or bh(x)-1 (Why?)

- The height of a child = (height of x) - 1

- So the subtrees rooted at each child contain at least 2bh(x) - 1 - 1 internal nodes

- Thus subtree at x contains (2bh(x) - 1 - 1) + (2bh(x) - 1 - 1) + 1

= 2•2bh(x)-1 - 1 = 2bh(x) - 1 nodes ■

Page 48: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

48

RB Trees: Proving Height Bound

• Thus at the root of the red-black tree:

n 2bh(root) - 1

n 2h/2 - 1

log(n+1) h/2

h 2 log(n + 1)

Thus h = O(log n) ■

Page 49: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

49

RB Trees: Worst-Case Time

• So we’ve proved that a red-black tree has O(log n) height

• Corollary: These operations take O(log n) time:

– Minimum(), Maximum()

– Successor(), Predecessor()

– Search()

• Insert() and Delete():

– Will also take O(log n) time

– But will need special care since they modify tree ■

Page 50: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

50

Red-Black Trees: An Example

• Color this tree:7

5 9

1212

5 9

7

Red-black properties:

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

Page 51: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

51

• Insert 8

– Where does it go?

Red-Black Trees:

The Problem With Insertion

12

5 9

7

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

Page 52: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

52

• Insert 8 (Cont.)

– Where does it go?

– What color

should it be?

Red-Black Trees:

The Problem With Insertion

12

5 9

7

8

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

Page 53: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

53

• Insert 8 (Cont.)

– Where does it go?

– What color

should it be?

Red-Black Trees:

The Problem With Insertion

12

5 9

7

8

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

Page 54: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

54

Red-Black Trees:

The Problem With Insertion

• Insert 11

– Where does it go?

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

12

5 9

7

8

Page 55: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

55

Red-Black Trees:

The Problem With Insertion

• Insert 11 (Cont.)

– Where does it go?

– What color?

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

12

5 9

7

8

11

Page 56: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

56

Red-Black Trees:

The Problem With Insertion

• Insert 11 (Cont.)

– Where does it go?

– What color?

• Can’t be red! (#3)

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

12

5 9

7

8

11

Page 57: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

57

Red-Black Trees:

The Problem With Insertion

• Insert 11 (Cont.)

– Where does it go?

– What color?

• Can’t be red! (#3)

• Can’t be black! (#4)

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

12

5 9

7

8

11

Page 58: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

58

Red-Black Trees:

The Problem With Insertion

• Insert 11 (Cont.)

– Where does it go?

– What color?

• Solution:

recolor the tree

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

12

5 9

7

8

11

Page 59: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

59

Red-Black Trees:

The Problem With Insertion

• Insert 11 (Cont.)

– Where does it go?

– What color?

• Solution:

recolor the tree

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

12

5 9

7

8

11

Page 60: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

60

Red-Black Trees:

The Problem With Insertion

• Insert 10

– Where does it go?

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

12

5 9

7

8

11

Page 61: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

61

Red-Black Trees:

The Problem With Insertion

• Insert 10 (Cont.)

– Where does it go?

– What color?

1. Every node is either red or black

2. Every leaf (NULL pointer) is black

3. If a node is red, both children are black

4. Every path from node to descendent leaf

contains the same number of black nodes

5. The root is always black

12

5 9

7

8

11

10

Page 62: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

62

Red-Black Trees:

The Problem With Insertion

• Insert 10 (Cont.)

– Where does it go?

– What color?

• A: no color! Tree is too imbalanced

• Must change tree structureto allow re-coloring

– Goal: restructure tree in O(log n) time

12

5 9

7

8

11

10

Page 63: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

63

RB Trees: Rotation

• Our basic operation for changing tree structure is

called rotation:

• Does rotation preserve inorder key ordering?

• What would the code for rightRotate()

actually do?

y

x C

A B

x

A y

B C

rightRotate(y)

leftRotate(x)

Page 64: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

64

rightRotate(y)

RB Trees: Rotation

• Answer: A lot of pointer manipulation

– x keeps its left child

– y keeps its right child

– x’s right child becomes y’s left child

– x’s and y’s parents change

• What is the running time?

y

x C

A B

x

A y

B C

Page 65: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

65

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Page 66: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

66

Red-Black Trees: Insertion

• Insertion: the basic idea

– Insert x into tree, color x red

– Only r-b property 3 might be violated (if p[x]

red)

• If so, move violation up tree until a place is found

where it can be fixed (by recoloring nodes and

performing rotations)

– Total time will be O(log n)

Page 67: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

67

Red-Black Trees: Insertion

• There are actually six cases to consider, but three of them are symmetric to the other three, depending on whether x's parent p[x] is a left child or a right child of x's grandparent p[p[x]].

• We consider the situation in which p[x] is a left child. – Case 1: the color of x's parent's sibling, or "uncle” y is red

– Case 2: the color of x's uncle y is black x is a right child of p[x].

– Case 3: the color of x's uncle y is black x is a left child of p[x].

• Figure 13.4

Page 68: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

68

Page 69: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

69

Red-Black Trees: Insertion

• We will not cover the details in class.

– You should read section 13.3 on your own ■

• http://www.youtube.com/watch?gl=TW&

hl=zh-TW&v=vDHFF4wjWYU

Page 70: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

70

Red-Black Trees: Deletion

• We will not cover RB delete in class either.

– You should read section 13.4 on your own

too

– Read for the overall picture, not the details ■

Page 71: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

71

Balancing a binary search tree

• 1962 Adel’son-Vel’skii and Landis AVL tree

(problem 13-3)

• 1970 Hopcroft 2-3 trees (B-trees Chapter 18)

• 1972 Bayer Red-black tree

• 1983 Sleator and Tarjan Splay trees

(amortized cost)

• 1990 Pugh SkipLists (probabilistic) ■

Page 72: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

72

Outline

• Review

• Binary search trees

• Red-black trees

• Augmenting data structures

Page 73: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

73

Augmenting Data Structures

• This course is about design and analysis of

algorithms.

• So far, we have looked at two design

techniques:

- induction (incremental approach)

- divide and conquer

• Next up: augmenting data structures■

Page 74: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

74

Augmenting Data Structures

• Often, it will suffice to augment a textbook data

structure by storing additional information in it.

– You can then program new operations for the data

structure to support the desired application.

• Augmenting a data structure is not always

straightforward, however, since the added

information must be updated and maintained by

the ordinary operations on the data structure. ■

Page 75: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

75

Methodology For Augmenting

Data Structures

1. Choose underlying data structure

2. Determine additional information to

maintain

3. Verify that information can be maintained

for operations that modify the structure

4. Develop new operations ■

Page 76: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

76

Example: interval trees

• Maintain a dynamic set of intervals such

that it is efficient to find out what events

occurred during a given interval.

Page 77: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

77

Interval

• The problem: maintain a set of intervals

– E.g., time intervals for a scheduling program:

107

115

84 1815 2321

17 19

i = [7,10]; low[i] = 7; high[i] = 10

Page 78: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

78

Interval

• The problem: maintain a set of intervals

– E.g., time intervals for a scheduling program:

– Query: find an interval in the set that overlaps a

given query interval

• [14,16] [15,18]

• [16,19] [15,18] or [17,19]

• [12,14] NULL

107

115

84 1815 2321

17 19

i = [7,10]; low[i] = 7; high[i] = 10

Page 79: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

79

Interval Trees

• We need an data structure to efficiently implement the following operations:

- insert intervals

- delete intervals

- search for overlap

• Can we use hash table? Why?

• If efficiency is not an issue, then we can simply use linked lists.

Page 80: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

80

Interval Trees

• All of the data structures we have studied so

far cannot be used directly.

• Issues:

- What is the key of an interval? (I,D)

- How to decide if two intervals overlap? (S)

Page 81: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

81

Page 82: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

82

Interval Trees

• Following the methodology:

– Pick underlying data structure

– Decide what additional information to store

– Figure out how to maintain the information

– Develop the desired new operations

Page 83: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

83

Interval Trees

• Following the methodology:

– Pick underlying data structure

• Red-black trees will store intervals, keyed on low[i]

– Decide what additional information to store

– Figure out how to maintain the information

– Develop the desired new operations

Page 84: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

84

Interval Trees

• Following the methodology:

– Pick underlying data structure

• Red-black trees will store intervals, keyed on low[i]

– Decide what additional information to store

• We will store max, the maximum endpoint in the

subtree rooted at i (Figure 14.4)

– Figure out how to maintain the information

– Develop the desired new operations

Page 85: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

85

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Page 86: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

86

Interval Trees

• Following the methodology:

– Pick underlying data structure

• Red-black trees will store intervals, keyed on low[i]

– Decide what additional information to store

• Store the maximum endpoint in the subtree rooted at i

– Figure out how to maintain the information

• How would we maintain max field?

– Develop the desired new operations

Page 87: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

87

Interval Trees

• What are the new max values for the subtrees?

[11,35]y 35

[6,20]x 20

[6,20]x ???

[11,35]y ???

rightRotate(y)

leftRotate(x)

14

19

30

???

???

???

Page 88: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

88

Interval Trees

• What are the new max values for the subtrees?

• A: Unchanged

• What are the new max values for x and y?

[11,35]35

[6,20]20

[6,20]???

[11,35]???

rightRotate(y)

leftRotate(x)

14

19

30

14

19

30

Page 89: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

89

Interval Trees

• What are the new max values for the subtrees?

• A: Unchanged

• What are the new max values for x and y?

• A: root value unchanged, recompute other

[11,35]35

[6,20]20

[6,20]35

[11,35]35

rightRotate(y)

leftRotate(x)

14

19

30

14

19

30

Page 90: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

90

Interval Trees

• Following the methodology:

– Pick underlying data structure

• Red-black trees will store intervals, keyed on ilow

– Decide what additional information to store

• Store the maximum endpoint in the subtree rooted at i

– Figure out how to maintain the information

• Insert: update max on way down, during rotations

• Delete: similar

– Develop the desired new operations

• Interval-search(T,i)

Page 91: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

91

Searching Interval Trees

• What will be the running time? O(h)

• Proof of Correctness

Page 92: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

92

IntervalSearch() Example

• Example: search for

interval

overlapping [14,16]

[17,19]

23

[5,11]

18

[21,23]

23

[4,8]

8

[15,18]

18

[7,10]

10

Page 93: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

93

IntervalSearch() Example

• Example: search for

interval

overlapping [12,14]

[17,19]

23

[5,11]

18

[21,23]

23

[4,8]

8

[15,18]

18

[7,10]

10

Page 94: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

94

Correctness of IntervalSearch()

• Key idea: need to check only 1 of node’s 2 children

– Case 1: search goes right

• Show that overlap in right subtree, or no overlap at all

– Case 2: search goes left

• Show that overlap in left subtree, or no overlap at all

Page 95: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

95

Prove correctness by loop invariant

Page 96: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

96

Prove correctness

• Invariant for the while loop of lines 2-5:

If tree T contains an interval that overlaps i, then

there is such an interval in the subtree rooted at x.

• Use whiteboard

Page 97: Design and Analysis of Algorithmsailab.cs.nchu.edu.tw/course/Algorithms/106/AL04.pdfReview: Master Method • Provides a “cookbook”method for solving recurrences of the form T(n)

97

Questions?