• No results found

Amortized analysis 10/28/21

N/A
N/A
Protected

Academic year: 2021

Share "Amortized analysis 10/28/21"

Copied!
17
0
0

Loading.... (view fulltext now)

Full text

(1)

Amortized analysis

10/28/21

(2)

Administrivia

• Read Section 17.3 for tomorrow (10/29)

(3)

Where we left off: Subset sum

Given a set of n (positive) values v 1 , v 2 , ..., v n , is there a subset of them summing to S?

• T[i][j] = whether can make i using v 1 , v 2 , ..., v j

• T[0][j] = true for all j

• T[i][0] = false for i ≠ 0

• T[i][j] = T[i][j-1] || T[i-v

j

][j-1]

(4)

Recall: Adding to an ArrayList

Doubling the array void add(T value) {

if(num == vals.length) {

T[] temp = (T[]) new Object[num*2];

for(int i=0; i<num; i++) temp[i] = vals[i];

vals = temp;

}

vals[num] = value;

num++;

}

Growing the array by 1 void add(T value) {

if(num == vals.length) {

T[] temp = (T[]) new Object[num+1];

for(int i=0; i<num; i++) temp[i] = vals[i];

vals = temp;

}

vals[num] = value;

num++;

}

(5)

Recall: Adding to an ArrayList

Doubling the array void add(T value) {

if(num == vals.length) {

T[] temp = (T[]) new Object[num*2];

for(int i=0; i<num; i++) temp[i] = vals[i];

vals = temp;

}

vals[num] = value;

num++;

}

Growing the array by 1 void add(T value) {

if(num == vals.length) {

T[] temp = (T[]) new Object[num+1];

for(int i=0; i<num; i++) temp[i] = vals[i];

vals = temp;

}

vals[num] = value;

num++;

}

What are the worst-case running times of these methods?

A. O(1) and O(1) B. O(1) and O(n) C. O(n) and O(1)

D. O(n) and O(n) E. None of the above

(6)

Recall: Adding to an ArrayList

Doubling the array void add(T value) {

if(num == vals.length) {

T[] temp = (T[]) new Object[num*2];

for(int i=0; i<num; i++) temp[i] = vals[i];

vals = temp;

}

vals[num] = value;

num++;

}

Growing the array by 1 void add(T value) {

if(num == vals.length) {

T[] temp = (T[]) new Object[num+1];

for(int i=0; i<num; i++) temp[i] = vals[i];

vals = temp;

}

vals[num] = value;

num++;

}

What are the worst-case running times of these methods?

A. O(1) and O(1) B. O(1) and O(n) C. O(n) and O(1)

D. O(n) and O(n) E. None of the above

(7)

Both have O(n) worst case time per operation, but…

• Times (in sec) for adding chars one at a time to a list of chars:

Final length doubling incrementing

10,000 0.001 0.015

50,000 0.007 0.721

100,000 0.012 2.743

500,000 0.054 64.746

(8)

Motivation for amortized analysis

• Suppose we have a program with the following properties:

• Does n operations

• Operations take different amounts of time, but always ≤ t

• What is the running time?

• Worst case: O(nt)

• Average case: What does this mean? Average over what?

• Amortized analysis: Looks at worst case over a sequence of operations

• If n operations take T(n) time, then amortized time is T(n) / n

(e.g. If T(n) is O(n), then constant amortized time per operation)

(9)

Motivation for amortized analysis

• Suppose we have a program with the following properties:

• Does n operations

• Operations take different amounts of time, but always ≤ t

• What is the running time?

• Worst case: O(nt)

• Average case: What does this mean? Average over what?

• Amortized analysis: Looks at worst case over a sequence of operations

• If n operations take T(n) time, then amortized time is T(n) / n

(e.g. If T(n) is O(n), then constant amortized time per operation)

(10)

Motivation for amortized analysis

• Suppose we have a program with the following properties:

• Does n operations

• Operations take different amounts of time, but always ≤ t

• What is the running time?

• Worst case: O(nt)

• Average case: What does this mean? Average over what?

• Amortized analysis: Looks at worst case over a sequence of operations

• If n operations take T(n) time, then amortized time is T(n) / n

(e.g. If T(n) is O(n), then constant amortized time per operation)

(11)

Motivation for amortized analysis

• Suppose we have a program with the following properties:

• Does n operations

• Operations take different amounts of time, but always ≤ t

• What is the running time?

• Worst case: O(nt)

• Average case: What does this mean? Average over what?

• Amortized analysis: Looks at worst case over a sequence of operations

• If n operations take T(n) time, then amortized time is T(n) / n

(e.g. If T(n) is O(n), then constant amortized time per operation)

(12)

Recall: BFS

while q is non-empty u = q.dequeue()

for each neighbor v of u if v is unmarked

mark v

q.enqueue(v)

O(V) worst case,

but O(E) total for

all operations

(13)

Accounting version

(yes, this example is depreciation, but it’s the same idea)

• Suppose you want to run a laundrymat

Profit

• Year 1: Buy machines ($1000), Earn operating profit ($300) -$700

• Year 2: Earn operating profit ($300) -$300

• Year 3: Earn operating profit ($300) -$300

• Year 4: Earn operating profit ($300) -$300

• Year 5: Earn operating profit ($300) -$300

• Year 6: Replace machines ($1000), Earn operating profit ($300) -$700

• Year 7: Earn operating profit ($300) -$300

• Year 8: Earn operating profit ($300) -$300

• …

(14)

Approach 1: Aggregate method

• Compute total time for n operations and then divide by n

(15)

Approach 2: Accounting method

• Run a “data structure store”

• Charge amortized costs to the customers

• Pay workers in the back the actual cost

• When amortized cost > actual cost, save the extra in the data

structure; use this to pay for times when amortized cost < actual cost

(16)

Approach 2: Accounting method

• Run a “data structure store”

• Charge amortized costs to the customers

• Pay workers in the back the actual cost

• When amortized cost > actual cost, save the extra in the data

structure; use this to pay for times when amortized cost < actual cost

NOTE: Money stored “in the data structure” does not

appear in the implementation; this is just for the analysis

(17)

Approach 3: Potential method

• Accounting method except you keep a bank account for all the money

• Name comes from thinking of this as potential energy (from physics) Φ(𝐷) is the current balance/potential for data structure D

Φ(𝐷 ! ) for initial data structure D 0 (no trust funds)

Φ(𝐷) ≥ 0 always (no going into debt)

amortized cost = actual cost + ∆Φ = actual cost + Φ after - Φ before

References

Related documents

Isolation of anaerob thermophilic bacteria from Gedong Songo hot spring 1 (GS 1) Ambarawa had been done in SP (Sucrose Peptone), LMM (Lactose Minimal Media) and

In the next section, we formulate a weak non-satiation assumption, sufficient for quasiequilibrium existence, especially adapted to the exchange economies considered in this paper,

1961/1993: 123).19 Merleau-Ponty’s work on style continues the lines of thought (influenced by Husserl) on the phenomenology of painting in “Cézanne’s Doubt” based on

Furthermore, while symbolic execution systems often avoid reasoning precisely about symbolic memory accesses (e.g., access- ing a symbolic offset in an array), C OMMUTER ’s test

All stationary perfect equilibria of the intertemporal game approach (as slight stochastic perturbations as in Nash (1953) tend to zero) the same division of surplus as the static

Contributions of this thesis include a unified framework for fitting the frailty model with different frailty distributions, a new diagnostic plot to evaluate the frailty

Acknowledging the lack of empirical research on design rights, our paper wishes to investigate the risk of piracy and the perceptions of the registered and unregistered design

However, the present study employed pure tones rather than white noise, and it could be argued that as white noise is more aversive than tones (Graham &amp; Slaby, 1973),