Вы находитесь на странице: 1из 28

CPSC 411 Design and Analysis of Algorithms

Set 6: Amortized Analysis Prof. Jennifer Welch Fall 2008

CPSC 411, Fall 2008: Set 6

Analyzing Calls to a Data Structure


Some algorithms involve repeated calls to one or more data structures Example: Heapsort

repeatedly insert keys into a priority queue (heap) repeatedly remove the smallest key from the heap

When analyzing the running time of the overall algorithm, need to sum up the time spent in all the calls to the data structure When different calls take different times, how can we accurately calculate the total time?
CPSC 411, Fall 2008: Set 6 2

Heapsort Example

Each of the n calls to insert into the heap operates on a heap with at most n elements Inserting into a heap with n elements takes O(log n) time So total time spent doing the insertions is O(n log n) time But maybe this is an over-estimate!

different insertions take different amounts of time many of the insertions are on significantly smaller heaps

CPSC 411, Fall 2008: Set 6

Amortized Analysis

Purpose is to accurately compute the total time spent in executing a sequence of operations on a data structure Three different approaches:

aggregate method: brute force accounting method: assign costs to each operation so that it is easy to sum them up while still ensuring that result is accurate potential method: a more sophisticated version of the accounting method

CPSC 411, Fall 2008: Set 6

Running Example #1: Augmented Stack S

Operations are:

Push(S,x) Pop(S) Multipop(S,k) - pop the top k elements time for Push is O(1) time for Pop is O(1) time for Multipop is O(min(|S|,k))
CPSC 411, Fall 2008: Set 6 5

Implement with either array or linked list


Running Example #2: k-Bit Counter A

Operation:

increment(A) - add 1 (initially 0)

Implementation:

k-element binary array use grade school ripple-carry algorithm

CPSC 411, Fall 2008: Set 6

Aggregate Method

Show that a sequence of n operations takes T(n) time We can then say that the amortized cost per operation is T(n)/n Makes no distinction between operation types

CPSC 411, Fall 2008: Set 6

Simple Argument for Augmented Stack

In a sequence of n operations, the stack never holds more than n elements. So cost of a multipop is O(n) So worst-case cost of any sequence of n operations is O(n2). But this is an over-estimate!

CPSC 411, Fall 2008: Set 6

Aggregate Method for Augmented Stack

Key idea: total number of elements popped in the entire sequence is at most the total number of Pushes done.

for both Pop and Multipop

Maximum number of Pushes is n. So time for entire sequence is O(n). And amortized cost per operation is O(n)/n = O(1).
CPSC 411, Fall 2008: Set 6 9

Aggregate Method for k-Bit Counter

Worst-case time for an increment is O(k), occurs when all k bits are flipped But in a sequence of n operations, not all of them will cause all k bits to flip

bit 0 flips with every increment bit 1 flips with every 2nd increment bit 2 flips with every 4th increment bit k flips with every 2k-th increment
CPSC 411, Fall 2008: Set 6 10

Aggregate Method for k-Bit Counter

Total number of bit flips in n increment operations is

n + n/2 + n/4 + + n/2k < 2n

So total cost of the sequence is O(n). Amortized cost per operation is O(n)/n = O(1).

CPSC 411, Fall 2008: Set 6

11

Accounting Method

Assign a cost, called the "amortized cost", to each operation Assignment must ensure that the sum of all the amortized costs in a sequence is at least the sum of all the actual costs

remember, we want an upper bound on the total cost of the sequence

How to ensure this property?


CPSC 411, Fall 2008: Set 6 12

Accounting Method

For each operation in the sequence:

if amortized cost > actual cost then store extra as a credit with an object in the data structure if amortized cost < actual cost then use the stored credits to make up the difference

Never allowed to go into the red! Must have enough credit saved up to pay for any future underestimates.
CPSC 411, Fall 2008: Set 6 13

Accounting Method vs. Aggregate Method

Aggregate method:

first analyze entire sequence then calculate amortized cost per operation first assign amortized cost per operation check that they are valid (never go into the red) then compute cost of entire sequence of operations

Accounting method:

CPSC 411, Fall 2008: Set 6

14

Accounting Method for Augmented Stack

Assign these amortized costs: Push - 2 Pop - 0 Multipop - 0 For Push, actual cost is 1. Store the extra 1 as a credit, associated with the pushed element. Pay for each popped element (either from Pop or Multipop) using the associated credit
CPSC 411, Fall 2008: Set 6 15

Accounting Method for Augmented Stack

There is always enough credit to pay for each operation (never go into red). Each amortized cost is O(1) So cost of entire sequence of n operations is O(n).

CPSC 411, Fall 2008: Set 6

16

Accounting Method for k-Bit Counter


Assign amortized cost for increment operation to be 2. Actual cost is the number of bits flipped:

a series of 1's are reset to 0 then a 0 is set to 1

Idea: 1 is used to pay for flipping a 0 to 1. The extra 1 is stored with the bit to pay for the next change (when it is flipped back to 0)
CPSC 411, Fall 2008: Set 6 17

Accounting Method for k-Bit Counter


1

0 0

0
1

0 0

1
1

0
1

0 0

0 1

0 0

1 1

0 1 1

0 0

0 0

1
0 0 0 1

1
1 0 0
CPSC 411, Fall 2008: Set 6

1
1

1
1

1
1
18

Accounting Method for k-Bit Counter

All changes from 1 to 0 are paid for with previously stored credit (never go into red) Amortized time per operation is O(1) total cost of sequence is O(n)

CPSC 411, Fall 2008: Set 6

19

Potential Method

Similar to accounting method Amortized costs are assigned in a more complicated way

based on a potential function and the current state of the data structure

Must ensure that sum of amortized costs of all operations in the sequence is at least the sum of the actual costs of all operations in the sequence.

CPSC 411, Fall 2008: Set 6

20

Potential Method

Define potential function which maps any state of the data structure to a real number
Notation: D0 - initial state of data structure Di - state of data structure after i-th operation ci - actual cost of i-th operation mi - amortized cost of i-th operation

CPSC 411, Fall 2008: Set 6

21

Potential Method

Define amortized cost of i-th operation: mi = ci + (Di) (Di1) This is the actual cost plus the change in the potential from previous state to current state Sum of all the amortized costs is sum of all the actual costs plus (Dn) (D0)

must ensure this last term is nonnegative

CPSC 411, Fall 2008: Set 6

22

Potential Function

Usually is defined so that


(D0) = 0 and (Di) 0

so it is easy to see that (Dn) (D0) is nonnegative

CPSC 411, Fall 2008: Set 6

23

Potential Method for Augmented Stack


Define (Di) to be number of elements in the stack after the i-th operation Check:

(D0) = 0, since stack is initially empty (Di) 0, since can't have a negative number of elements in the stack

Next calculate amortized cost of each operation

CPSC 411, Fall 2008: Set 6

24

Potential Method for Augmented Stack

If i-th operation is a Push and stack has s elements:

mi = ci + (Di) (Di-1) = 1 + (s+1) s =2

If i-th operation is a pop and stack has s elements:

mi = ci + (Di) (Di-1) = 1 + (s1) s =0

CPSC 411, Fall 2008: Set 6

25

Potential Method for Augmented Stack

If i-th operation is a Multipop(k) and stack has s elements:


Let x = min(s,k) mi = ci + (Di) (Di-1) = x + (s x ) s =0

All operations have O(1) amortized time So cost of entire sequence is O(n)

CPSC 411, Fall 2008: Set 6

26

Potential Method for k-Bit Counter


Define (Di) to be number of 1's in the counter after the i-th operation Check:

(D0) = 0, since counter is initially all 0's (Di) 0, since can't have a negative number of 1's in the counter

Next calculate amortized cost of the increment operation

CPSC 411, Fall 2008: Set 6

27

Potential Method for k-Bit Counter


Let b = number of 1's just before i-th op Let x = number of 1's that are changed to 0 in i-th op

mi = ci + (Di) (Di-1) x 1's are changed to 0 = (x+1) + (bx+1) b and one 0 is changed to 1 =2 All ops have O(1) amortized time So total cost of sequence is O(n)

CPSC 411, Fall 2008: Set 6

28

Вам также может понравиться