b-tree variants. amortized analysis -...

44
DSA - lecture 13 - T.U. Cluj - M. Joldoş 1 B-Tree Variants. Amortized Analysis B-Tree Variants. Accounting method. Splay Trees

Upload: tranngoc

Post on 06-Mar-2018

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 1

B-Tree Variants

Amortized Analysis

B-Tree Variants

Accounting method Splay

Trees

DSA - lecture 13 - TU Cluj - M Joldoş 2

Other Access Methods

B-tree variants B+-trees B-trees

B+-trees used in data base management systems

General scheme for access methods (used in B+-trees too) bull Data keys stored only in leaves

bull Each entry in a non-leaf node stores

bull a pointer to a subtree

bull a compact description of the set of keys stored in this subtree

DSA - lecture 13 - TU Cluj - M Joldoş 3

B+ Tree Definition

At most n sub-trees and n1 keys

At least sub-trees and keys

Root at least 2 sub-trees and 1 key

The keys can be repeated in non-leaf nodes

Only the leafs point to data pages

The leafs are linked together with pointers

The Most Widely Used Index

1

2

n

2

n

DSA - lecture 13 - TU Cluj - M Joldoş 4

B+ Tree Example

Data pages

DSA - lecture 13 - TU Cluj - M Joldoş 5

Example of Clustering (primary) B+ Tree on

Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

This example corresponds to dense B+-tree index

Every search key value appears in a leaf node

You may also have sparse B+-tree eg entries in leaf nodes correspond to pages

DSA - lecture 13 - TU Cluj - M Joldoş 6

Example of Non-clustering (Secondary) B+

Tree on Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

record with

search key 11 Should always be dense

DSA - lecture 13 - TU Cluj - M Joldoş 7

Example of Clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

records with

search key 1record with

search key 3

FILE WITH RECORDS

DSA - lecture 13 - TU Cluj - M Joldoş 8

Example of Non-clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

FILE WITH RECORDS

records withsearch key 1

pointers torecords withsearch key 3

pointers to

DSA - lecture 13 - TU Cluj - M Joldoş 9

B+ Tree Insertions

Find appropriate leaf node

If it is full

bull allocate new node

bull split its contents and

bull insert separator key in father node

If the father is full

bull allocate new node and split the same way

bull continue upwards if necessary

bull if the root is split create new root with two sub-trees

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 2: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 2

Other Access Methods

B-tree variants B+-trees B-trees

B+-trees used in data base management systems

General scheme for access methods (used in B+-trees too) bull Data keys stored only in leaves

bull Each entry in a non-leaf node stores

bull a pointer to a subtree

bull a compact description of the set of keys stored in this subtree

DSA - lecture 13 - TU Cluj - M Joldoş 3

B+ Tree Definition

At most n sub-trees and n1 keys

At least sub-trees and keys

Root at least 2 sub-trees and 1 key

The keys can be repeated in non-leaf nodes

Only the leafs point to data pages

The leafs are linked together with pointers

The Most Widely Used Index

1

2

n

2

n

DSA - lecture 13 - TU Cluj - M Joldoş 4

B+ Tree Example

Data pages

DSA - lecture 13 - TU Cluj - M Joldoş 5

Example of Clustering (primary) B+ Tree on

Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

This example corresponds to dense B+-tree index

Every search key value appears in a leaf node

You may also have sparse B+-tree eg entries in leaf nodes correspond to pages

DSA - lecture 13 - TU Cluj - M Joldoş 6

Example of Non-clustering (Secondary) B+

Tree on Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

record with

search key 11 Should always be dense

DSA - lecture 13 - TU Cluj - M Joldoş 7

Example of Clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

records with

search key 1record with

search key 3

FILE WITH RECORDS

DSA - lecture 13 - TU Cluj - M Joldoş 8

Example of Non-clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

FILE WITH RECORDS

records withsearch key 1

pointers torecords withsearch key 3

pointers to

DSA - lecture 13 - TU Cluj - M Joldoş 9

B+ Tree Insertions

Find appropriate leaf node

If it is full

bull allocate new node

bull split its contents and

bull insert separator key in father node

If the father is full

bull allocate new node and split the same way

bull continue upwards if necessary

bull if the root is split create new root with two sub-trees

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 3: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 3

B+ Tree Definition

At most n sub-trees and n1 keys

At least sub-trees and keys

Root at least 2 sub-trees and 1 key

The keys can be repeated in non-leaf nodes

Only the leafs point to data pages

The leafs are linked together with pointers

The Most Widely Used Index

1

2

n

2

n

DSA - lecture 13 - TU Cluj - M Joldoş 4

B+ Tree Example

Data pages

DSA - lecture 13 - TU Cluj - M Joldoş 5

Example of Clustering (primary) B+ Tree on

Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

This example corresponds to dense B+-tree index

Every search key value appears in a leaf node

You may also have sparse B+-tree eg entries in leaf nodes correspond to pages

DSA - lecture 13 - TU Cluj - M Joldoş 6

Example of Non-clustering (Secondary) B+

Tree on Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

record with

search key 11 Should always be dense

DSA - lecture 13 - TU Cluj - M Joldoş 7

Example of Clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

records with

search key 1record with

search key 3

FILE WITH RECORDS

DSA - lecture 13 - TU Cluj - M Joldoş 8

Example of Non-clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

FILE WITH RECORDS

records withsearch key 1

pointers torecords withsearch key 3

pointers to

DSA - lecture 13 - TU Cluj - M Joldoş 9

B+ Tree Insertions

Find appropriate leaf node

If it is full

bull allocate new node

bull split its contents and

bull insert separator key in father node

If the father is full

bull allocate new node and split the same way

bull continue upwards if necessary

bull if the root is split create new root with two sub-trees

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 4: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 4

B+ Tree Example

Data pages

DSA - lecture 13 - TU Cluj - M Joldoş 5

Example of Clustering (primary) B+ Tree on

Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

This example corresponds to dense B+-tree index

Every search key value appears in a leaf node

You may also have sparse B+-tree eg entries in leaf nodes correspond to pages

DSA - lecture 13 - TU Cluj - M Joldoş 6

Example of Non-clustering (Secondary) B+

Tree on Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

record with

search key 11 Should always be dense

DSA - lecture 13 - TU Cluj - M Joldoş 7

Example of Clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

records with

search key 1record with

search key 3

FILE WITH RECORDS

DSA - lecture 13 - TU Cluj - M Joldoş 8

Example of Non-clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

FILE WITH RECORDS

records withsearch key 1

pointers torecords withsearch key 3

pointers to

DSA - lecture 13 - TU Cluj - M Joldoş 9

B+ Tree Insertions

Find appropriate leaf node

If it is full

bull allocate new node

bull split its contents and

bull insert separator key in father node

If the father is full

bull allocate new node and split the same way

bull continue upwards if necessary

bull if the root is split create new root with two sub-trees

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 5: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 5

Example of Clustering (primary) B+ Tree on

Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

This example corresponds to dense B+-tree index

Every search key value appears in a leaf node

You may also have sparse B+-tree eg entries in leaf nodes correspond to pages

DSA - lecture 13 - TU Cluj - M Joldoş 6

Example of Non-clustering (Secondary) B+

Tree on Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

record with

search key 11 Should always be dense

DSA - lecture 13 - TU Cluj - M Joldoş 7

Example of Clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

records with

search key 1record with

search key 3

FILE WITH RECORDS

DSA - lecture 13 - TU Cluj - M Joldoş 8

Example of Non-clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

FILE WITH RECORDS

records withsearch key 1

pointers torecords withsearch key 3

pointers to

DSA - lecture 13 - TU Cluj - M Joldoş 9

B+ Tree Insertions

Find appropriate leaf node

If it is full

bull allocate new node

bull split its contents and

bull insert separator key in father node

If the father is full

bull allocate new node and split the same way

bull continue upwards if necessary

bull if the root is split create new root with two sub-trees

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 6: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 6

Example of Non-clustering (Secondary) B+

Tree on Candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 53 30 33 41 43 45 47 1

record with

search key 1

record with

search key 3

FILE WITH RECORDS

record with

search key 11 Should always be dense

DSA - lecture 13 - TU Cluj - M Joldoş 7

Example of Clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

records with

search key 1record with

search key 3

FILE WITH RECORDS

DSA - lecture 13 - TU Cluj - M Joldoş 8

Example of Non-clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

FILE WITH RECORDS

records withsearch key 1

pointers torecords withsearch key 3

pointers to

DSA - lecture 13 - TU Cluj - M Joldoş 9

B+ Tree Insertions

Find appropriate leaf node

If it is full

bull allocate new node

bull split its contents and

bull insert separator key in father node

If the father is full

bull allocate new node and split the same way

bull continue upwards if necessary

bull if the root is split create new root with two sub-trees

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 7: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 7

Example of Clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

records with

search key 1record with

search key 3

FILE WITH RECORDS

DSA - lecture 13 - TU Cluj - M Joldoş 8

Example of Non-clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

FILE WITH RECORDS

records withsearch key 1

pointers torecords withsearch key 3

pointers to

DSA - lecture 13 - TU Cluj - M Joldoş 9

B+ Tree Insertions

Find appropriate leaf node

If it is full

bull allocate new node

bull split its contents and

bull insert separator key in father node

If the father is full

bull allocate new node and split the same way

bull continue upwards if necessary

bull if the root is split create new root with two sub-trees

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 8: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 8

Example of Non-clustering B+ Tree on Non-

candidate Key

41

11 21 30 45 51

3 11 13 15 21 23 51 5330 33 41 43 45 471

FILE WITH RECORDS

records withsearch key 1

pointers torecords withsearch key 3

pointers to

DSA - lecture 13 - TU Cluj - M Joldoş 9

B+ Tree Insertions

Find appropriate leaf node

If it is full

bull allocate new node

bull split its contents and

bull insert separator key in father node

If the father is full

bull allocate new node and split the same way

bull continue upwards if necessary

bull if the root is split create new root with two sub-trees

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 9: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 9

B+ Tree Insertions

Find appropriate leaf node

If it is full

bull allocate new node

bull split its contents and

bull insert separator key in father node

If the father is full

bull allocate new node and split the same way

bull continue upwards if necessary

bull if the root is split create new root with two sub-trees

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 10: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 10

B+ Tree Deletions

Find and delete key from the leaf

If the leaf has lt n2 keys

a) borrowing if its neighbor leaf has more than n2

keys update father node (the separator key may

change) or

b) merging with neighbor if both have lt n keys

bull causes deletion of separator in father node

bull update father node

bull Continue upwards if father node is not the root

and has less than n2 keys

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 11: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 11

B+ Tree Performance

B+Trees are better than B-trees for range

searching

B Trees are better for random accesses

The search must reach a leaf before it is

confirmed

bull internal keys may not correspond to actual record

information (can be separator keys only)

bull insertions leave middle key in father node

bull deletions do not always delete key from internal

node (if it is a separator key)

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 12: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 12

Applications of B+ Trees

A B+-tree can serve as a dense index there is a (keypointer) in leaf nodes for every record in a data file bull search key in B+-tree is the primary key of the data file

bull data file may or may not be sorted according to its primary key

A B+-tree can serve as a sparse index there is a (keypointer) in leaf nodes for every block of a data file that is sorted according to its primary key

A B+-tree can serve as a secondary index if the file is sorted by a non-key attribute there is a (keypointer) in leaf nodes pointing to the first of records having this sort-key value

Multiple occurrences of search keys are allowed in certain variants bull must change the structure of internal nodes

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 13: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 13

B+B-Trees Comparison

B-trees bull no key repetition

bull better for random accesses (do not always reach

a leaf)

bull data pages on any node1048707

B+-trees bull key repetition

bull data page on leaf nodes only

bull better for range queries

bull easier implementation

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 14: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 14

Amortized Analysis

We examined worst-case average-case and best-case analysis performance

In amortized analysis we care for the cost of one operation if considered in a sequence

of n operations

bull In a sequence of n operations some operations may be cheap some may be expensive (actual cost)

bull The amortized cost of an operation equals the

total cost of the n operations divided by n

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 15: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 15

Amortized Analysis

Think of it this way

bull You have a bank account with 1000euro and you

want to go shopping and purchase some itemshellip

bull Some items you buy cost 1euro some items you buy

cost 100euro

bull You purchase 20 items in total thereforehellip

bull hellipthe amortized cost of each purchase is 5euro

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 16: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 16

Amortized Analysis

AMORTIZED ANALYSIS bull You try to estimate an upper bound of the total

work T(n) required for a sequence of n

operationshellip

bull Some operations may be cheap some may be

expensive Overall your algorithm does T(n) of

work for n operationshellip

bull Therefore by simple reasoning the amortized

cost of each operation is T(n)n

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 17: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 17

Amortized Analysis

Imagine T(n) (the budget) being the number

of CPU cycles a computer needs to solve

the problem

If computer spends T(n) cycles for n

operations each operation needs T(n)n

amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 18: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 18

Amortized Analysis

We prove amortized run times with the accounting method We present how it works with two examples bull Stack example

bull Binary counter example

We describe InsertSearchDeleteJoinSplit in Splay Trees Accounting method can show that these operations have O(log n) amortized cost (run time) and they are ldquobalancedrdquo just like AVL trees

bull We do not show the analysis behind the O(log n) run time

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 19: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 19

Amortized Analysis Stack Example

Consider a stack S that holds up to n elements and it has

the following three operations

PUSH(S x) helliphelliphellip pushes object x in stack S

POP(S) helliphelliphellip pops top of stack S

MULTIPOP(S k) hellip pops the k top elements of S

or pops the entire stack if it

has less than k elements

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 20: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 20

Amortized Analysis Stack Example

How much a sequence of n PUSH() POP()

and MULTIPOP() operations cost

bull A MULTIPOP() may take O(n) time

bull Therefore (a naiumlve way of thinking says that) a

sequence of n such operations may take

O(nn) = O(n2) time since we may call n MULTIPOP() operations of O(n) time each

With accounting method (amortized analysis) we can

show a better run time of O(1) per operation

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 21: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 21

Amortized Analysis Stack Example

Accounting method

Charge each operation an amount of euros euro

bull Some money pays for the actual cost of the

operation

bull Some is deposited to pay for future operations

bull Stack element credit invariant 1euro deposited on it

Actual cost

PUSH 1

POP 1

MULTIPOP min(k S)

Amortized cost

PUSH 2

POP 0

MULTIPOP 0

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 22: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 22

Amortized Analysis Stack Example

In amortized analysis with accounting

method we charge (amortized cost) the

following euro

bull We let a POP() and a MULTIPOP() cost nothing

bull We let a PUSH() cost 2euro

bull 1euro pays for the actual cost of the operation

bull 1euro is deposited on the element to pay whenif POP-ed

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 23: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 23

Amortized Analysis Stack Example

Push(b) = 2euro

1euro pays for push

and 1euro is deposited

Push(c) = 2euro

1euro pays for push

and 1euro is deposited

Push(a) = 2euro

1euro pays for push

and 1euro is deposited

MULTIPOP() costs nothing

because you have the 1euro bills to

pay for the pop operations

1euro

1euro 1euro

credit invariant

a a

b

1euro

1euro

1euro

a

b

c

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 24: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 24

Accounting Method

We charge operations a certain amount of

money

We operate with a budget T(n)

bull A sequence of n POP() MULTIPOP() and

PUSH() operations needs a budget T(n) of at

most 2n euro

bull Each operation costs

T(n)n = 2nn = O(1) amortized time

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 25: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 25

Binary Counter Example

Let n-bit counter A[n-1]hellipA[0] (counts from 0

to 2n)

bull How much work does it take to increment the

counter n times starting from zero

bull Work T(n) how many bits do you need to flip

(01 and 10) as you increment the counter hellip

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 26: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 26

Binary Counter Example

INCREMENT(A) 1 i=0

2 while i lt length(A) and A[i]=1 do

3 A[i]=0

4 i=i+1

5 if i lt length(A) then

6 A[i] = 1

This procedure resets the first i-th sequence of 1 bits and sets

A[i] equal to 1 (ex 0011 0100 0101 0110 0111 1000)

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 27: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 27

4-bit counter Counter value COUNTER Bits flipped (work T(n)) 0 0 0 0 0 0

1 0 0 0 1 1

2 0 0 1 0 3

3 0 0 1 1 4

4 0 1 0 0 7

5 0 1 0 1 8

6 0 1 1 0 10

7 0 1 1 1 11

8 1 0 0 0 15

highlighted are bits that flip at each increment

A3A2A1A0

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 28: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 28

Binary Counter Example

A naiumlve approach says that a sequence of n

operations on a n-bit counter needs O(n2) work

bull Each INCREMENT() takes up to O(n) time n

INCREMENT() operations can take O(n2) time

Amortized analysis with accounting method

bull We show that amortized cost per INCREMENT()

is only O(1) and the total work O(n)

bull OBSERVATION In example T(n) (work) is

never twice the amount of counter value (total of

increments)

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 29: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 29

Binary Counter Example

Charge each 01 flip 2euro in line 6

bull 1euro pays for the 01 flip in line 6

bull 1euro is deposited to pay for the 10 flip later in line 3

Therefore a sequence of n INCREMENTS() needs

T(n)= 2n euro

hellipeach INCREMENT() has an amortized cost of

2nn = O(1)

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 30: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 30

euro euro 0 0 0 0 0 0 0 1 0 0 1 0

0 0 1 1

euro euro

0 1 0 0

euro

0 1 0 1

euro euro

0 1 1 0

euro euro

bull Charge 2euro for every 01 bit flip

1euro pays for the actual operation

bull Every 1 bit has 1 euro deposited to

pay for 10 bit flip later

Credit invariant

Binary Counter Example

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 31: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 31

Splay Trees

Splay Trees Self-Adjusting (balanced) Binary Search Trees (Sleator and Tarjan ATampT Bell 1984)

They have O(log n) amortized run time for bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

bull Split() bull splits in 2 trees around an element

bull Join() bull joins two ordered trees

These are expensive

operations for AVLs

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 32: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 32

Splay Trees

A splay tree has the binary search tree

property

left subtree lt parent lt right subtree

Operations are performed similar to BSTs

At the end we always do a splay operation

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 33: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 33

Splay Trees Basic Operations

SplaySearch(x) - search for x as in BST

- if you locate x

splay(x)

SplayInsert(x) - insert x as in BST - splay(x)

SplayDelete(x) - delete x as in BST if successful then

- splay() at successor or predecessor of x

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 34: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 34

Splay Trees Basic Operations

A splay operation moves an element to the

root through a sequence of zig zig-zig and

zig-zag rotation operations

bull rotations preserve BST order

Splay(x) - moves node x at the root of the tree perform zig zig-zig zig-zag rotations until the element becomes the root of the tree

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 35: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 35

Splay Trees Splay(x) Operation

ZIG (1 rotation)

y

x

A B

C

x

y

A

B C

zig

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 36: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 36

Splay Trees Splay(x) Operation

ZIG-ZIG (2 rotations)

y

x

A B

C

z

D

y

z

B

C D

A

x

zig-zig

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 37: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 37

Splay Trees Splay(x) Operation

ZIG-ZAG (2 rotations)

y

C

x

z

D

B

A

y z

C D

x

A B

zig-zag

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 38: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 38

Splaying Example

Splaying at a node splay(a)

e

F E

D

C B

A

d

c

b

a

e

F E

D C

B

A

d

c

b

a

ZIG ZIG-ZAG G

k k

G

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 39: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 39

Splaying Example (cont)

ZIG-ZAG ZIG-ZIG

E

D C

B

a

c

b

A

e

F d

k

G

C

B

a

c

A

e

F

E

D

b

d

k

G

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 40: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 40

Splaying

We observe that the originally ldquounbalancedrdquo splay

trees become more ldquobalancedrdquo after splaying

In general one can prove that it costs 3log n euro to

splay() at a node

Therefore in an amortized sense splay trees are

balanced trees

Demos

bull httpwwwlinkcscmuedusplay

bull httpwwwibrcstu-bsdecoursesss98audiiappletsBST

SplayTree-Examplehtml

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 41: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 41

Splay Trees Join(T1T2x)

Join(T1 T2 x)

- every element in T1 is lt T2

- x largest element (rightmost element) of T1

- it returns a tree containing x T1 and T2

SplayMax(x) this splays max to root

Splay(x)

right(x) = T2

T1 T2

x

T1 T2

x

T1 T2

x

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 42: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 42

Splay Trees Split()

T1 T2

x

T1 T2

x

T

Split(Tx) - it takes a single tree T and splits it

into two trees T1 and T2

- T1 contains x and elements of T smaller than x

- T2 contains elements of T larger than x

SplaySearch(x)

Splay(x) this brings x to root

return left(x) x right(x)

x

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 43: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 43

Splay Trees Complexity

The amortized complexity of the following is O(log n) bull SplayInsert()

bull SplaySearch()

bull SplayDelete()

That is in a sequence of n insertsearchdelete operations on a

splay tree each operation takes O(log n) amortized time

Therefore Split() and Join() also take O(log n) amortized time

Split() and Join() CANNOT be done in O(log n) time with

other balanced tree structures such as AVL trees

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading

Page 44: B-Tree Variants. Amortized Analysis - utcluj.rousers.utcluj.ro/.../Lectures/L13-B-TreeVariants.AmortizedAnalysis.pdf · DSA - lecture 13 - 1T.U. Cluj - M. Joldoş B-Tree Variants

DSA - lecture 13 - TU Cluj - M Joldoş 44

Sleator and Tarjan article available as

httpwwwcscmuedu~sleatorpapersself-

adjustingpdf

CLRS chapter 17 section 2

Reading