260 likes | 401 Views
Amortized Complexity. Aggregate method. Accounting method. Potential function method. Potential Function P(). P(i) = amortizedCost(i) – actualCost(i) + P(i – 1) S (P(i) – P(i – 1)) = S (amortizedCost(i) –actualCost(i)) P(n) – P(0) = S (amortizedCost(i) –actualCost(i)) P(n) – P(0) >= 0
E N D
Amortized Complexity • Aggregate method. • Accounting method. • Potential function method.
Potential Function P() • P(i) = amortizedCost(i) – actualCost(i) + P(i – 1) • S(P(i) – P(i – 1)) = S(amortizedCost(i) –actualCost(i)) • P(n) – P(0) = S(amortizedCost(i) –actualCost(i)) • P(n) – P(0) >= 0 • WhenP(0) = 0,P(i)is the amount by which thefirstioperations have been over charged.
Potential Function Example a = x + ( ( a + b ) * c + d ) + y ; actual cost 1 1 1 1 1 1 1 1 1 5 1 1 1 1 7 1 1 7 amortized cost 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 potential 1 2 3 4 5 6 7 8 9 6 7 8 9 5 6 7 2 10 Potential = stack size except at end.
Accounting Method • Guess the amortized cost. • Show that P(n) – P(0) >= 0.
Accounting Method Example create an empty stack; for (int i = 1; i <= n; i++) // n is number of symbols in statement processNextSymbol(); • Guess that amortized complexity of processNextSymbol is 2. • Start with P(0) = 0. • Can show that P(i) >= number of elements on stack after ith symbol is processed.
a = x + ( ( a + b ) * c + d ) + y ; actual cost 1 1 1 1 1 1 1 1 1 5 1 1 1 1 7 1 1 7 amortized cost 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 potential 1 2 3 4 5 6 7 8 9 6 7 8 9 5 6 7 2 10 Accounting Method Example • Potential >= number of symbols on stack. • Therefore, P(i) >= 0 for all i. • In particular, P(n) >= 0.
Potential Method • Guess a suitable potential function for which P(n) – P(0) >= 0 for all n. • Derive amortized cost of ith operation using DP = P(i) – P(i–1) = amortized cost – actual cost • amortized cost = actual cost + DP
Potential Method Example create an empty stack; for (int i = 1; i <= n; i++) // n is number of symbols in statement processNextSymbol(); • Guess that the potential function is P(i) = number of elements on stack after ith symbol is processed (exception is P(n) = 2). • P(0) = 0andP(i) – P(0) >=0for alli.
ith Symbol Is Not ) or ; • Actual cost of processNextSymbol is 1. • Number of elements on stack increases by 1. • DP = P(i) – P(i–1) = 1. • amortized cost = actual cost + DP = 1 + 1 = 2
ith Symbol Is ) • Actual cost of processNextSymbol is #unstacked + 1. • Number of elements on stack decreases by #unstacked –1. • DP = P(i) – P(i–1) = 1 – #unstacked. • amortized cost = actual cost + DP = #unstacked + 1 + (1 – #unstacked) = 2
ith Symbol Is ; • Actual cost of processNextSymbol is #unstacked = P(n–1). • Number of elements on stack decreases by P(n–1). • DP = P(n) – P(n–1) = 2 – P(n–1). • amortized cost = actual cost + DP = P(n–1) + (2 – P(n–1)) = 2
Binary Counter • n-bit counter • Cost of incrementing counter is number of bits that change. • Cost of 001011=>001100 is 3. • Counter starts at 0. • What is the cost of incrementing the counter mtimes?
Worst-Case Method • Worst-case cost of an increment isn. • Cost of 011111=>100000 is 6. • So, the cost of mincrements is at most mn.
0 0 0 0 0 counter Aggregate Method • Each increment changes bit 0(i.e., the rightmost bit). • Exactly floor(m/2) increments change bit 1 (i.e., second bit from right). • Exactly floor(m/4) increments change bit 2.
0 0 0 0 0 counter Aggregate Method • Exactly floor(m/8) increments change bit 3. • So, the cost of mincrements is m + floor(m/2) + floor(m/4) + .... < 2m • Amortized cost of an increment is2m/m = 2.
bits 0 0 0 0 0 0 0 0 0 1 credits 0 0 0 0 0 0 0 0 0 1 Accounting Method • Guess that the amortized cost of an increment is 2. • Now show that P(m) – P(0) >= 0 for all m. • 1st increment: • one unit of amortized cost is used to pay for the change in bit 0from0to1. • the other unit remains as a credit on bit 0 and is used later to pay for the time when bit 0 changes from 1 to 0.
bits 0 0 0 0 1 0 0 0 1 0 credits 0 0 0 0 1 0 0 0 1 0 2nd Increment. • one unit of amortized cost is used to pay for the change in bit 1from0to1 • the other unit remains as a credit on bit 1 and is used later to pay for the time when bit 1 changes from 1 to 0 • the change in bit 0 from 1 to 0 is paid for by the credit on bit 0
bits 0 0 0 1 0 0 0 0 1 1 credits 0 0 0 1 0 0 0 0 1 1 3rd Increment. • one unit of amortized cost is used to pay for the change in bit 0from 0 to 1 • the other unit remains as a credit on bit 0 and is used later to pay for the time when bit 1 changes from 1 to 0
bits 0 0 0 1 1 0 0 1 0 0 credits 0 0 0 1 1 0 0 1 0 0 4th Increment. • one unit of amortized cost is used to pay for the change in bit 2 from 0 to 1 • the other unit remains as a credit on bit 2 and is used later to pay for the time when bit 2 changes from 1 to 0 • the change in bits 0and1 from 1 to 0 is paid for by the credits on these bits
Accounting Method • P(m) – P(0) = S(amortizedCost(i) –actualCost(i)) = amount by which thefirstm increments have been over charged = number of credits = number of 1s in binary rep. of m >= 0
Potential Method • Guess a suitable potential function for which P(n) – P(0) >= 0 for all n. • Derive amortized cost of ith operation using DP = P(i) – P(i–1) = amortized cost – actual cost • amortized cost = actual cost + DP
Potential Method • Guess P(i) =number of1s in counter after ith increment. • P(i) >= 0 and P(0) = 0. • Let q =# of 1s at right end of counter just before ith increment (01001111=> q = 4). • Actual cost of ith increment is 1+q. • DP = P(i) – P(i – 1) = 1 – q(0100111 =>0101000) • amortized cost = actual cost + DP = 1+q + (1 – q) = 2