SlideShare a Scribd company logo
Algorithms

Sandeep Kumar Poonia
Head Of Dept. CS/IT
B.E., M.Tech., UGC-NET
LM-IAENG, LM-IACSIT,LM-CSTA, LM-AIRCC, LM-SCIEI, AM-UACEE
Algorithms
Merge Sort
Solving Recurrences
The Master Theorem
Introduction to heapsort
Quicksort

Sandeep Kumar Poonia
Merge Sort
MergeSort(A, left, right) {
if (left < right) {
mid = floor((left + right) / 2);
MergeSort(A, left, mid);
MergeSort(A, mid+1, right);
Merge(A, left, mid, right);
}
}
// Merge() takes two sorted subarrays of A and
// merges them into a single sorted subarray of A
//
(how long should this take?)

Sandeep Kumar Poonia
Merge Sort: Example


Show MergeSort() running on the array
A = {10, 5, 7, 6, 1, 4, 8, 3, 2, 9};

Sandeep Kumar Poonia
Analysis of Merge Sort
Statement

Effort

MergeSort(A, left, right) {
if (left < right) {
mid = floor((left + right) / 2);
MergeSort(A, left, mid);
MergeSort(A, mid+1, right);
Merge(A, left, mid, right);
}
}
 So T(n) = (1) when n = 1, and

2T(n/2) + (n) when n > 1


So what (more succinctly) is T(n)?

Sandeep Kumar Poonia

T(n)
(1)
(1)
T(n/2)
T(n/2)
(n)
Recurrences


The expression:
c
n 1



T ( n)  
n
2T    cn n  1
 2


is a recurrence.


Recurrence: an equation that describes a function
in terms of its value on smaller functions

Sandeep Kumar Poonia
Recurrence Examples
0
n0

s ( n)  
c  s(n  1) n  0

0
n0

s ( n)  
n  s(n  1) n  0

c
n 1



T ( n)  
n
2T    c n  1
 2




c
n 1

T ( n)  
 n
aT    cn n  1
 b

Sandeep Kumar Poonia
Solving Recurrences
Substitution method
 Iteration method
 Master method


Sandeep Kumar Poonia
Solving Recurrences


The substitution method





A.k.a. the “making a good guess method”
Guess the form of the answer, then use induction
to find the constants and show that solution works
Examples:
= 2T(n/2) + (n)  T(n) = (n lg n)
 T(n) = 2T(n/2) + n  ???
 T(n)

Sandeep Kumar Poonia
Solving Recurrences


The substitution method





A.k.a. the “making a good guess method”
Guess the form of the answer, then use induction
to find the constants and show that solution works
Examples:
= 2T(n/2) + (n)  T(n) = (n lg n)
 T(n) = 2T(n/2) + n  T(n) = (n lg n)
 T(n) = 2T(n/2 )+ 17) + n  ???
 T(n)

Sandeep Kumar Poonia
Solving Recurrences


The substitution method





A.k.a. the “making a good guess method”
Guess the form of the answer, then use induction
to find the constants and show that solution works
Examples:
= 2T(n/2) + (n)  T(n) = (n lg n)
 T(n) = 2T(n/2) + n  T(n) = (n lg n)
 T(n) = 2T(n/2+ 17) + n  (n lg n)
 T(n)

Sandeep Kumar Poonia
Solving Recurrences


Another option is the “iteration method”






Expand the recurrence
Work some algebra to express as a summation
Evaluate the summation

We will show several examples

Sandeep Kumar Poonia
0
n0

s ( n)  
c  s(n  1) n  0


s(n) =
c + s(n-1)
c + c + s(n-2)
2c + s(n-2)
2c + c + s(n-3)
3c + s(n-3)
…
kc + s(n-k) = ck + s(n-k)

Sandeep Kumar Poonia
0
n0

s ( n)  
c  s(n  1) n  0


So far for n >= k we have




s(n) = ck + s(n-k)

What if k = n?


s(n) = cn + s(0) = cn

Sandeep Kumar Poonia
0
n0

s ( n)  
c  s(n  1) n  0


So far for n >= k we have




s(n) = ck + s(n-k)

What if k = n?


s(n) = cn + s(0) = cn

0
n0

s ( n)  
c  s(n  1) n  0



So



Thus in general


s(n) = cn

Sandeep Kumar Poonia
0
n0

s ( n)  
n  s(n  1) n  0


=
=
=
=
=
=

s(n)
n + s(n-1)
n + n-1 + s(n-2)
n + n-1 + n-2 + s(n-3)
n + n-1 + n-2 + n-3 + s(n-4)
…
n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k)

Sandeep Kumar Poonia
0
n0

s ( n)  
n  s(n  1) n  0


=
=
=
=
=
=

s(n)
n + s(n-1)
n + n-1 + s(n-2)
n + n-1 + n-2 + s(n-3)
n + n-1 + n-2 + n-3 + s(n-4)
…
n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k)
n

=

i

i  n  k 1

Sandeep Kumar Poonia

 s(n  k )
0
n0

s ( n)  
n  s(n  1) n  0


So far for n >= k we have
n

i

i  n  k 1

Sandeep Kumar Poonia

 s(n  k )
0
n0

s ( n)  
n  s(n  1) n  0


So far for n >= k we have
n

i

 s(n  k )

i  n  k 1



What if k = n?

Sandeep Kumar Poonia
0
n0

s ( n)  
n  s(n  1) n  0


So far for n >= k we have
n

i

 s(n  k )

i  n  k 1



What if k = n?

n 1
 i  s(0)   i  0  n 2
i 1
i 1
n

Sandeep Kumar Poonia

n
0
n0

s ( n)  
n  s(n  1) n  0


So far for n >= k we have
n

i

 s(n  k )

i  n  k 1



What if k = n?

n 1
 i  s(0)   i  0  n 2
i 1
i 1
n



Thus in general

n 1
s ( n)  n
2

Sandeep Kumar Poonia

n
c
n 1

 n
T (n)  2T
   c n 1
 2



T(n) =
2T(n/2) + c
2(2T(n/2/2) + c) + c
22T(n/22) + 2c + c
22(2T(n/22/2) + c) + 3c
23T(n/23) + 4c + 3c
23T(n/23) + 7c
23(2T(n/23/2) + c) + 7c
24T(n/24) + 15c
…
2kT(n/2k) + (2k - 1)c

Sandeep Kumar Poonia
c
n 1

 n
T (n)  2T
   c n 1
 2



So far for n > 2k we have




T(n) = 2kT(n/2k) + (2k - 1)c

What if k = lg n?


T(n) = 2lg n T(n/2lg n) + (2lg n - 1)c
= n T(n/n) + (n - 1)c
= n T(1) + (n-1)c
= nc + (n-1)c = (2n - 1)c

Sandeep Kumar Poonia
The Master Theorem


Given: a divide and conquer algorithm






An algorithm that divides the problem of size n
into a subproblems, each of size n/b
Let the cost of each stage (i.e., the work to divide
the problem + combine solved subproblems) be
described by the function f(n)

Then, the Master Theorem gives us a
cookbook for the algorithm’s running time:

Sandeep Kumar Poonia
The Master Theorem


if T(n) = aT(n/b) + f(n) then



 n logb a




logb a
T (n)   n
log n


 f (n) 







Sandeep Kumar Poonia





f (n)  O n logb a 


  0
logb a
f ( n)   n

 c 1


f (n)   n logb a  AND

af (n / b)  cf (n) for large n














Using The Master Method


T(n) = 9T(n/3) + n




a=9, b=3, f(n) = n
nlog a = nlog 9 = (n2)
Since f(n) = O(nlog 9 - ), where =1, case 1 applies:
b

3

3







T (n)   nlogb a when f (n)  O nlogb a 


Thus the solution is T(n) = (n2)

Sandeep Kumar Poonia


Sorting Revisited


So far we’ve talked about two algorithms to
sort an array of numbers





What is the advantage of merge sort?
What is the advantage of insertion sort?

Next on the agenda: Heapsort


Combines advantages of both previous algorithms

Sandeep Kumar Poonia
Heaps


A heap can be seen as a complete binary tree:
16

14

10

8

2




7

4

9

1

What makes a binary tree complete?
Is the example above complete?

Sandeep Kumar Poonia

3
Heaps


A heap can be seen as a complete binary tree:
16

14

10

8

2



7

4

1

9

1

1

3

1

1

The book calls them “nearly complete” binary
trees; can think of unfilled slots as null pointers

Sandeep Kumar Poonia

1
Heaps


In practice, heaps are usually implemented as
arrays:
16
14

A = 16 14 10 8

7

9

3

2

4

8

1 =
2

Sandeep Kumar Poonia

10
7

4

1

9

3
Heaps


To represent a complete binary tree as an array:







The root node is A[1]
Node i is A[i]
The parent of node i is A[i/2] (note: integer divide)
The left child of node i is A[2i]
The right child of node i is A[2i + 1]
16
14

A = 16 14 10 8

7

9

3

2

4

8

1 =
2

Sandeep Kumar Poonia

10
7

4

1

9

3
Referencing Heap Elements


So…
Parent(i) { return i/2; }
Left(i) { return 2*i; }
right(i) { return 2*i + 1; }

An aside: How would you implement this
most efficiently?
 Another aside: Really?


Sandeep Kumar Poonia
The Heap Property


Heaps also satisfy the heap property:
A[Parent(i)]  A[i]
for all nodes i > 1






In other words, the value of a node is at most the
value of its parent
Where is the largest element in a heap stored?

Definitions:




The height of a node in the tree = the number of
edges on the longest downward path to a leaf
The height of a tree = the height of its root

Sandeep Kumar Poonia
Heap Height
What is the height of an n-element heap? Why?
 This is nice: basic heap operations take at most
time proportional to the height of the heap


Sandeep Kumar Poonia
Heap Operations: Heapify()


Heapify(): maintain the heap property







Given: a node i in the heap with children l and r
Given: two subtrees rooted at l and r, assumed to
be heaps
Problem: The subtree rooted at i may violate the
heap property (How?)
Action: let the value of the parent node “float
down” so subtree at i satisfies the heap property
 What

do you suppose will be the basic operation
between i, l, and r?

Sandeep Kumar Poonia
Heap Operations: Heapify()
Heapify(A, i)
{
l = Left(i); r = Right(i);
if (l <= heap_size(A) && A[l] > A[i])
largest = l;
else
largest = i;
if (r <= heap_size(A) && A[r] > A[largest])
largest = r;
if (largest != i)
Swap(A, i, largest);
Heapify(A, largest);
}
Sandeep Kumar Poonia
Heapify() Example

16
4

10

14
2

7
8

3

1

A = 16 4 10 14 7

Sandeep Kumar Poonia

9

9

3

2

8

1
Heapify() Example

16
4

10

14
2

7
8

3

1

A = 16 4 10 14 7

Sandeep Kumar Poonia

9

9

3

2

8

1
Heapify() Example

16
4

10

14
2

7
8

3

1

A = 16 4 10 14 7

Sandeep Kumar Poonia

9

9

3

2

8

1
Heapify() Example

16
14

10

4
2

7
8

3

1

A = 16 14 10 4

Sandeep Kumar Poonia

9

7

9

3

2

8

1
Heapify() Example

16
14

10

4
2

7
8

3

1

A = 16 14 10 4

Sandeep Kumar Poonia

9

7

9

3

2

8

1
Heapify() Example

16
14

10

4
2

7
8

3

1

A = 16 14 10 4

Sandeep Kumar Poonia

9

7

9

3

2

8

1
Heapify() Example

16
14

10

8
2

7
4

3

1

A = 16 14 10 8

Sandeep Kumar Poonia

9

7

9

3

2

4

1
Heapify() Example

16
14

10

8
2

7
4

3

1

A = 16 14 10 8

Sandeep Kumar Poonia

9

7

9

3

2

4

1
Heapify() Example

16
14

10

8
2

7
4

3

1

A = 16 14 10 8

Sandeep Kumar Poonia

9

7

9

3

2

4

1
Analyzing Heapify(): Informal
Aside from the recursive call, what is the
running time of Heapify()?
 How many times can Heapify() recursively
call itself?
 What is the worst-case running time of
Heapify() on a heap of size n?


Sandeep Kumar Poonia
Analyzing Heapify(): Formal
Fixing up relationships between i, l, and r
takes (1) time
 If the heap at i has n elements, how many
elements can the subtrees at l or r have?




Draw it

Answer: 2n/3 (worst case: bottom row 1/2 full)
 So time taken by Heapify() is given by


T(n)  T(2n/3) + (1)
Sandeep Kumar Poonia
Analyzing Heapify(): Formal
So we have
T(n)  T(2n/3) + (1)
 By case 2 of the Master Theorem,
T(n) = O(lg n)
 Thus, Heapify() takes linear time


Sandeep Kumar Poonia
Heap Operations: BuildHeap()


We can build a heap in a bottom-up manner by
running Heapify() on successive subarrays




Fact: for array of length n, all elements in range
A[n/2 + 1 .. n] are heaps (Why?)
So:
 Walk

backwards through the array from n/2 to 1, calling
Heapify() on each node.

 Order

of processing guarantees that the children of node
i are heaps when i is processed

Sandeep Kumar Poonia
BuildHeap()
// given an unsorted array A, make A a heap
BuildHeap(A)
{
heap_size(A) = length(A);
for (i = length[A]/2 downto 1)
Heapify(A, i);
}

Sandeep Kumar Poonia
BuildHeap() Example


Work through example
A = {4, 1, 3, 2, 16, 9, 10, 14, 8, 7}
4
1

3

2
14

Sandeep Kumar Poonia

16
8

7

9

10
Analyzing BuildHeap()


Each call to Heapify() takes O(lg n) time

There are O(n) such calls (specifically, n/2)
 Thus the running time is O(n lg n)







Is this a correct asymptotic upper bound?
Is this an asymptotically tight bound?

A tighter bound is O(n)


How can this be? Is there a flaw in the above
reasoning?

Sandeep Kumar Poonia
Analyzing BuildHeap(): Tight


To Heapify() a subtree takes O(h) time
where h is the height of the subtree



h = O(lg m), m = # nodes in subtree
The height of most subtrees is small

Fact: an n-element heap has at most n/2h+1
nodes of height h
 CLR 7.3 uses this fact to prove that
BuildHeap() takes O(n) time


Sandeep Kumar Poonia
Heapsort


Given BuildHeap(), an in-place sorting
algorithm is easily constructed:



Maximum element is at A[1]
Discard by swapping with element at A[n]
 Decrement

heap_size[A]
 A[n] now contains correct value


Restore heap property at A[1] by calling
Heapify()



Repeat, always swapping A[1] for A[heap_size(A)]

Sandeep Kumar Poonia
Heapsort
Heapsort(A)
{
BuildHeap(A);
for (i = length(A) downto 2)
{
Swap(A[1], A[i]);
heap_size(A) -= 1;
Heapify(A, 1);
}
}

Sandeep Kumar Poonia
Analyzing Heapsort
The call to BuildHeap() takes O(n) time
 Each of the n - 1 calls to Heapify() takes
O(lg n) time
 Thus the total time taken by HeapSort()
= O(n) + (n - 1) O(lg n)
= O(n) + O(n lg n)
= O(n lg n)


Sandeep Kumar Poonia
Priority Queues
Heapsort is a nice algorithm, but in practice
Quicksort (coming up) usually wins
 But the heap data structure is incredibly useful
for implementing priority queues








A data structure for maintaining a set S of
elements, each with an associated value or key
Supports the operations Insert(),
Maximum(), and ExtractMax()
What might a priority queue be useful for?

Sandeep Kumar Poonia
Priority Queue Operations
Insert(S, x) inserts the element x into set S
 Maximum(S) returns the element of S with
the maximum key
 ExtractMax(S) removes and returns the
element of S with the maximum key
 How could we implement these operations
using a heap?


Sandeep Kumar Poonia
Tying It Into The Real World


And now, a real-world example…

Sandeep Kumar Poonia
Tying It Into The “Real World”


And now, a real-world example…combat billiards











Sort of like pool...
Except you’re trying to
kill the other players…
And the table is the size
of a polo field…
And the balls are the
size of Suburbans...
And instead of a cue
you drive a vehicle
with a ram on it

Figure 1: boring traditional pool

Problem: how do you simulate the physics?

Sandeep Kumar Poonia
Combat Billiards:
Simulating The Physics


Simplifying assumptions:


G-rated version: No players
 Just



n balls bouncing around

No spin, no friction
 Easy

to calculate the positions of the balls at time Tn
from time Tn-1 if there are no collisions in between



Simple elastic collisions

Sandeep Kumar Poonia
Simulating The Physics


Assume we know how to compute when two
moving spheres will intersect




Given the state of the system, we can calculate
when the next collision will occur for each ball
At each collision Ci:
 Advance

the system to the time Ti of the collision
 Recompute the next collision for the ball(s) involved
 Find the next overall collision Ci+1 and repeat


How should we keep track of all these collisions
and when they occur?

Sandeep Kumar Poonia
Implementing Priority Queues
HeapInsert(A, key)
// what’s running time?
{
heap_size[A] ++;
i = heap_size[A];
while (i > 1 AND A[Parent(i)] < key)
{
A[i] = A[Parent(i)];
i = Parent(i);
}
A[i] = key;
}

Sandeep Kumar Poonia
Implementing Priority Queues
HeapMaximum(A)
{
// This one is really tricky:
return A[i];

}

Sandeep Kumar Poonia
Implementing Priority Queues
HeapExtractMax(A)
{
if (heap_size[A] < 1) { error; }
max = A[1];
A[1] = A[heap_size[A]]
heap_size[A] --;
Heapify(A, 1);
return max;
}

Sandeep Kumar Poonia
Back To Combat Billiards








Extract the next collision Ci from the queue
Advance the system to the time Ti of the collision
Recompute the next collision(s) for the ball(s)
involved
Insert collision(s) into the queue, using the time of
occurrence as the key
Find the next overall collision Ci+1 and repeat

Sandeep Kumar Poonia
Using A Priority Queue
For Event Simulation
More natural to use Minimum() and
ExtractMin()
 What if a player hits a ball?





Need to code up a Delete() operation
How? What will the running time be?

Sandeep Kumar Poonia
Quicksort
Sorts in place
 Sorts O(n lg n) in the average case
 Sorts O(n2) in the worst case
 So why would people use it instead of merge
sort?


Sandeep Kumar Poonia
Quicksort


Another divide-and-conquer algorithm


The array A[p..r] is partitioned into two nonempty subarrays A[p..q] and A[q+1..r]
 Invariant:

All elements in A[p..q] are less than all
elements in A[q+1..r]





The subarrays are recursively sorted by calls to
quicksort
Unlike merge sort, no combining step: two
subarrays form an already-sorted array

Sandeep Kumar Poonia
Quicksort Code
Quicksort(A, p, r)
{
if (p < r)
{
q = Partition(A, p, r);
Quicksort(A, p, q);
Quicksort(A, q+1, r);
}
}
Sandeep Kumar Poonia
Partition


Clearly, all the action takes place in the
partition() function



Rearranges the subarray in place
End result:
 Two

subarrays
 All values in first subarray  all values in second




Returns the index of the “pivot” element
separating the two subarrays

How do you suppose we implement this
function?

Sandeep Kumar Poonia
Partition In Words


Partition(A, p, r):



Select an element to act as the “pivot” (which?)
Grow two regions, A[p..i] and A[j..r]
 All

elements in A[p..i] <= pivot
 All elements in A[j..r] >= pivot







Increment i until A[i] >= pivot
Decrement j until A[j] <= pivot
Swap A[i] and A[j]
Repeat until i >= j
Return j

Sandeep Kumar Poonia
Partition Code
Partition(A, p, r)
x = A[p];
Illustrate on
i = p - 1;
A = {5, 3, 2, 6, 4, 1, 3, 7};
j = r + 1;
while (TRUE)
repeat
j--;
until A[j] <= x;
What is the running time of
repeat
partition()?
i++;
until A[i] >= x;
if (i < j)
Swap(A, i, j);
else
return j;
Sandeep Kumar Poonia
Review: Analyzing Quicksort


What will be the worst case for the algorithm?




What will be the best case for the algorithm?




Partition is balanced

Which is more likely?




Partition is always unbalanced

The latter, by far, except...

Will any particular input elicit the worst case?


Yes: Already-sorted input

Sandeep Kumar Poonia
Review: Analyzing Quicksort


In the worst case:
T(1) = (1)
T(n) = T(n - 1) + (n)



Works out to
T(n) = (n2)

Sandeep Kumar Poonia
Review: Analyzing Quicksort


In the best case:
T(n) = 2T(n/2) + (n)



What does this work out to?
T(n) = (n lg n)

Sandeep Kumar Poonia
Review: Analyzing Quicksort
(Average Case)


Intuitively, a real-life run of quicksort will
produce a mix of “bad” and “good” splits





Randomly distributed among the recursion tree
Pretend for intuition that they alternate between
best-case (n/2 : n/2) and worst-case (n-1 : 1)
What happens if we bad-split root node, then
good-split the resulting size (n-1) node?

Sandeep Kumar Poonia
Review: Analyzing Quicksort
(Average Case)


Intuitively, a real-life run of quicksort will
produce a mix of “bad” and “good” splits





Randomly distributed among the recursion tree
Pretend for intuition that they alternate between
best-case (n/2 : n/2) and worst-case (n-1 : 1)
What happens if we bad-split root node, then
good-split the resulting size (n-1) node?
 We

end up with three subarrays, size 1, (n-1)/2, (n-1)/2
 Combined cost of splits = n + n -1 = 2n -1 = O(n)
 No worse than if we had good-split the root node!
Sandeep Kumar Poonia
Review: Analyzing Quicksort
(Average Case)
Intuitively, the O(n) cost of a bad split
(or 2 or 3 bad splits) can be absorbed
into the O(n) cost of each good split
 Thus running time of alternating bad and good
splits is still O(n lg n), with slightly higher
constants
 How can we be more rigorous?


Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


For simplicity, assume:



All inputs distinct (no repeats)
Slightly different partition() procedure
 partition

around a random element, which is not
included in subarrays
 all splits (0:n-1, 1:n-2, 2:n-3, … , n-1:0) equally likely

What is the probability of a particular split
happening?
 Answer: 1/n


Sandeep Kumar Poonia
Analyzing Quicksort: Average Case
So partition generates splits
(0:n-1, 1:n-2, 2:n-3, … , n-2:1, n-1:0)
each with probability 1/n
 If T(n) is the expected running time,


1 n1
T n    T k   T n  1  k   n 
n k 0

What is each term under the summation for?
 What is the (n) term for?


Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


So…

1 n 1
T n    T k   T n  1  k   n 
n k 0
2 n 1
  T k   n 
n k 0

Sandeep Kumar Poonia

Write it on
the board
Analyzing Quicksort: Average Case


We can solve this recurrence using the dreaded
substitution method






Guess the answer
Assume that the inductive hypothesis holds
Substitute it in for some value < n
Prove that it follows for n

Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


We can solve this recurrence using the dreaded
substitution method


Guess the answer
 What’s





the answer?

Assume that the inductive hypothesis holds
Substitute it in for some value < n
Prove that it follows for n

Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


We can solve this recurrence using the dreaded
substitution method


Guess the answer
 T(n)





= O(n lg n)

Assume that the inductive hypothesis holds
Substitute it in for some value < n
Prove that it follows for n

Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


We can solve this recurrence using the dreaded
substitution method


Guess the answer
 T(n)



= O(n lg n)

Assume that the inductive hypothesis holds
 What’s





the inductive hypothesis?

Substitute it in for some value < n
Prove that it follows for n

Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


We can solve this recurrence using the dreaded
substitution method


Guess the answer
 T(n)



Assume that the inductive hypothesis holds
 T(n)





= O(n lg n)
 an lg n + b for some constants a and b

Substitute it in for some value < n
Prove that it follows for n

Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


We can solve this recurrence using the dreaded
substitution method


Guess the answer
 T(n)



Assume that the inductive hypothesis holds
 T(n)



= O(n lg n)
 an lg n + b for some constants a and b

Substitute it in for some value < n
 What



value?

Prove that it follows for n

Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


We can solve this recurrence using the dreaded
substitution method


Guess the answer
 T(n)



Assume that the inductive hypothesis holds
 T(n)



 an lg n + b for some constants a and b

Substitute it in for some value < n
 The



= O(n lg n)

value k in the recurrence

Prove that it follows for n

Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


We can solve this recurrence using the dreaded
substitution method


Guess the answer
 T(n)



Assume that the inductive hypothesis holds
 T(n)



 an lg n + b for some constants a and b

Substitute it in for some value < n
 The



= O(n lg n)

value k in the recurrence

Prove that it follows for n
 Grind

Sandeep Kumar Poonia

through it…
Analyzing Quicksort: Average Case
2 n 1
T n    T k   n 
n k 0
2 n 1
  ak lg k  b   n 
n k 0

The recurrence to be solved

Plug in inductive hypothesis
What are we doing here?

2  n 1

What are we doing here?
 b   ak lg k  b   n  Expand out the k=0 case
n  k 1

2 n 1
2b
  ak lg k  b  
 n 
n k 1
n

2b/n is just a constant,
What are we doing here?
so fold it into (n)

2 n 1
  ak lg k  b   n 
n k 1

Note: leaving the same
recurrence as the book

Sandeep Kumar Poonia
Analyzing Quicksort: Average Case
2 n 1
T n    ak lg k  b   n 
n k 1
2 n 1
2 n 1
  ak lg k   b  n 
n k 1
n k 1

The recurrence to be solved

Distribute the summation
What are we doing here?

2a n 1
2b
the summation:

k lg k  (n  1)  n  Evaluateare we doing here?
What

b+b+…+b = b (n-1)
n k 1
n
2a n 1

 k lg k  2b  n 
n k 1
This summation gets its own set of slides later
Sandeep Kumar Poonia

Since n-1<n,we doing here?
What are 2b(n-1)/n < 2b
Analyzing Quicksort: Average Case
2a n 1
T n  
 k lg k  2b  n 
n k 1





The recurrence to be solved

2a  1 2
1 2
We’ll prove this
 n lg n  n   2b  n  What the hell? later
n 2
8 
a
an lg n  n  2b  n 
Distribute the (2a/n) term
What are we doing here?
4
a  Remember, our goal is to get

an lg n  b   n   b  n 
What are we doing here?
T(n)  an lg n + b
4 

Pick a large enough that
an lg n  b
How did we do this?
an/4 dominates (n)+b

Sandeep Kumar Poonia
Analyzing Quicksort: Average Case


So T(n)  an lg n + b for certain a and b






Thus the induction holds
Thus T(n) = O(n lg n)
Thus quicksort runs in O(n lg n) time on average
(phew!)

Oh yeah, the summation…

Sandeep Kumar Poonia
Tightly Bounding
The Key Summation
n 1

n 2 1

n 1

k 1

k 1

k  n 2 

n 2 1

n 1

k 1

k  n 2 

 k lg k   k lg k   k lg k


 k lg k   k lg n

Sandeep Kumar Poonia

n 1

k 1



n 2 1

k  n 2 

 k lg k  lg n  k

Split the summation for a
What are we doing here?
tighter bound

The lg k in the second term
What are we doing here?
is bounded by lg n

Move the lg n outside the
What are we doing here?
summation
Tightly Bounding
The Key Summation
n 1

 k lg k 
k 1

n 2 1

 k lg k  lg n
k 1

n 1

k

The summation bound so far

k  n 2 



n 1

k 1



n 2 1

k  n 2 

 k lgn 2  lg n  k

n 2 1

 k lg n  1  lg n
k 1

n 1

k
n 1

k 1

Sandeep Kumar Poonia

lg n/2 = lg n we doing here?
What are - 1

k  n 2 

n 2 1

k  n 2 

 lg n  1

The lg k in the first term is
What are we doing here?
bounded by lg n/2

 k  lg n  k

Move (lg n - 1) outside the
What are we doing here?
summation
Tightly Bounding
The Key Summation
n 2 1

n 1

 k lg k  lg n  1
k 1

 lg n

 k  lg n
k 1

n 2 1

k 
k 1

k

 k  lg n
k 1

n 1

k

Distribute the (lg n - 1)
What are we doing here?

k  n 2 

n 2 1

k 1

The summation bound so far

k  n 2 

n 2 1

n 1

k 1

 lg n k 

k

 n  1(n) 
 lg n

2


Sandeep Kumar Poonia

n 1

The summations overlap in
What are we doing here?
range; combine them

n 2 1

k
k 1

The Guassian series here?
What are we doing
Tightly Bounding
The Key Summation
 n  1(n) 
 k lg k   2  lg n   k


k 1
k 1
n 2 1
1
 nn  1lg n   k
2
k 1
n 2 1

n 1

The summation bound so far

Rearrange first term, place
What are we doing here?
upper bound on second

1
1  n  n 
 nn  1lg n     1
2
2  2  2 
1 2
1 2 n
 n lg n  n lg n  n 
2
8
4



Sandeep Kumar Poonia



X Guassian series
What are we doing?

Multiply it
What are we doing?
all out
Tightly Bounding
The Key Summation



n 1



1 2
1 2 n
 k lg k  2 n lg n  n lg n  8 n  4
k 1
1 2
1 2
 n lg n  n when n  2
2
8
Done!!!

Sandeep Kumar Poonia

More Related Content

What's hot

Asymptotic notation
Asymptotic notationAsymptotic notation
Asymptotic notation
mustafa sarac
 
Recursive algorithms
Recursive algorithmsRecursive algorithms
Recursive algorithms
subhashchandra197
 
Data Structure and Algorithms Merge Sort
Data Structure and Algorithms Merge SortData Structure and Algorithms Merge Sort
Data Structure and Algorithms Merge Sort
ManishPrajapati78
 
Recursion tree method
Recursion tree methodRecursion tree method
Recursion tree method
Rajendran
 
Asymptotic Notation and Data Structures
Asymptotic Notation and Data StructuresAsymptotic Notation and Data Structures
Asymptotic Notation and Data Structures
Amrinder Arora
 
5.2 divide and conquer
5.2 divide and conquer5.2 divide and conquer
5.2 divide and conquer
Krish_ver2
 
Greedy algorithm
Greedy algorithmGreedy algorithm
Binary Search
Binary SearchBinary Search
Binary Search
kunj desai
 
KMP String Matching Algorithm
KMP String Matching AlgorithmKMP String Matching Algorithm
KMP String Matching Algorithm
kalpanasatishkumar
 
Bruteforce algorithm
Bruteforce algorithmBruteforce algorithm
Bruteforce algorithm
Rezwan Siam
 
Shift reduce parser
Shift reduce parserShift reduce parser
Shift reduce parser
TEJVEER SINGH
 
Operator precedance parsing
Operator precedance parsingOperator precedance parsing
Operator precedance parsing
sanchi29
 
Dynamic Programming
Dynamic ProgrammingDynamic Programming
Dynamic Programming
Sahil Kumar
 
Asymptotic notations
Asymptotic notationsAsymptotic notations
Asymptotic notationsNikhil Sharma
 
07. disjoint set
07. disjoint set07. disjoint set
07. disjoint set
Onkar Nath Sharma
 
Master theorem
Master theoremMaster theorem
Master theorem
fika sweety
 
Quick Sort , Merge Sort , Heap Sort
Quick Sort , Merge Sort ,  Heap SortQuick Sort , Merge Sort ,  Heap Sort
Quick Sort , Merge Sort , Heap Sort
Mohammed Hussein
 
Medians and order statistics
Medians and order statisticsMedians and order statistics
Medians and order statistics
Rajendran
 
Lecture 4 asymptotic notations
Lecture 4   asymptotic notationsLecture 4   asymptotic notations
Lecture 4 asymptotic notations
jayavignesh86
 
Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...
University of Science and Technology Chitttagong
 

What's hot (20)

Asymptotic notation
Asymptotic notationAsymptotic notation
Asymptotic notation
 
Recursive algorithms
Recursive algorithmsRecursive algorithms
Recursive algorithms
 
Data Structure and Algorithms Merge Sort
Data Structure and Algorithms Merge SortData Structure and Algorithms Merge Sort
Data Structure and Algorithms Merge Sort
 
Recursion tree method
Recursion tree methodRecursion tree method
Recursion tree method
 
Asymptotic Notation and Data Structures
Asymptotic Notation and Data StructuresAsymptotic Notation and Data Structures
Asymptotic Notation and Data Structures
 
5.2 divide and conquer
5.2 divide and conquer5.2 divide and conquer
5.2 divide and conquer
 
Greedy algorithm
Greedy algorithmGreedy algorithm
Greedy algorithm
 
Binary Search
Binary SearchBinary Search
Binary Search
 
KMP String Matching Algorithm
KMP String Matching AlgorithmKMP String Matching Algorithm
KMP String Matching Algorithm
 
Bruteforce algorithm
Bruteforce algorithmBruteforce algorithm
Bruteforce algorithm
 
Shift reduce parser
Shift reduce parserShift reduce parser
Shift reduce parser
 
Operator precedance parsing
Operator precedance parsingOperator precedance parsing
Operator precedance parsing
 
Dynamic Programming
Dynamic ProgrammingDynamic Programming
Dynamic Programming
 
Asymptotic notations
Asymptotic notationsAsymptotic notations
Asymptotic notations
 
07. disjoint set
07. disjoint set07. disjoint set
07. disjoint set
 
Master theorem
Master theoremMaster theorem
Master theorem
 
Quick Sort , Merge Sort , Heap Sort
Quick Sort , Merge Sort ,  Heap SortQuick Sort , Merge Sort ,  Heap Sort
Quick Sort , Merge Sort , Heap Sort
 
Medians and order statistics
Medians and order statisticsMedians and order statistics
Medians and order statistics
 
Lecture 4 asymptotic notations
Lecture 4   asymptotic notationsLecture 4   asymptotic notations
Lecture 4 asymptotic notations
 
Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...
 

Similar to Recurrences

lecture 3
lecture 3lecture 3
lecture 3sajinsc
 
lecture 4
lecture 4lecture 4
lecture 4sajinsc
 
8.-DAA-LECTURE-8-RECURRENCES-AND-ITERATION-METHOD.pdf
8.-DAA-LECTURE-8-RECURRENCES-AND-ITERATION-METHOD.pdf8.-DAA-LECTURE-8-RECURRENCES-AND-ITERATION-METHOD.pdf
8.-DAA-LECTURE-8-RECURRENCES-AND-ITERATION-METHOD.pdf
RishikeshJha33
 
What is Algorithm - An Overview
What is Algorithm - An OverviewWhat is Algorithm - An Overview
What is Algorithm - An Overview
Ramakant Soni
 
Algorithms - Rocksolid Tour 2013
Algorithms  - Rocksolid Tour 2013Algorithms  - Rocksolid Tour 2013
Algorithms - Rocksolid Tour 2013Gary Short
 
module2_dIVIDEncONQUER_2022.pdf
module2_dIVIDEncONQUER_2022.pdfmodule2_dIVIDEncONQUER_2022.pdf
module2_dIVIDEncONQUER_2022.pdf
Shiwani Gupta
 
Unit-1 DAA_Notes.pdf
Unit-1 DAA_Notes.pdfUnit-1 DAA_Notes.pdf
Unit-1 DAA_Notes.pdf
AmayJaiswal4
 
T2311 - Ch 4_Part1.pptx
T2311 - Ch 4_Part1.pptxT2311 - Ch 4_Part1.pptx
T2311 - Ch 4_Part1.pptx
GadaFarhan
 
2.pptx
2.pptx2.pptx
2.pptx
MohAlyasin1
 
Mergesort
MergesortMergesort
Mergesort
luzenith_g
 
Divide and conquer
Divide and conquerDivide and conquer
Divide and conquer
Vikas Sharma
 
Recurrence relation solutions
Recurrence relation solutionsRecurrence relation solutions
Recurrence relation solutions
subhashchandra197
 
Analysis Of Algorithms Ii
Analysis Of Algorithms IiAnalysis Of Algorithms Ii
Analysis Of Algorithms IiSri Prasanna
 
03 dc
03 dc03 dc
03 dc
Hira Gul
 
Mathematics
MathematicsMathematics
Mathematics
IITIANS FOR YOUTH
 
Data structure 8.pptx
Data structure 8.pptxData structure 8.pptx
Data structure 8.pptx
SajalFayyaz
 
Nbvtalkatbzaonencryptionpuzzles
NbvtalkatbzaonencryptionpuzzlesNbvtalkatbzaonencryptionpuzzles
Nbvtalkatbzaonencryptionpuzzles
Nagasuri Bala Venkateswarlu
 
Nbvtalkatbzaonencryptionpuzzles
NbvtalkatbzaonencryptionpuzzlesNbvtalkatbzaonencryptionpuzzles
Nbvtalkatbzaonencryptionpuzzles
Nagasuri Bala Venkateswarlu
 
Skiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sortingSkiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sortingzukun
 

Similar to Recurrences (20)

lecture 3
lecture 3lecture 3
lecture 3
 
lecture 4
lecture 4lecture 4
lecture 4
 
8.-DAA-LECTURE-8-RECURRENCES-AND-ITERATION-METHOD.pdf
8.-DAA-LECTURE-8-RECURRENCES-AND-ITERATION-METHOD.pdf8.-DAA-LECTURE-8-RECURRENCES-AND-ITERATION-METHOD.pdf
8.-DAA-LECTURE-8-RECURRENCES-AND-ITERATION-METHOD.pdf
 
What is Algorithm - An Overview
What is Algorithm - An OverviewWhat is Algorithm - An Overview
What is Algorithm - An Overview
 
Algorithms - Rocksolid Tour 2013
Algorithms  - Rocksolid Tour 2013Algorithms  - Rocksolid Tour 2013
Algorithms - Rocksolid Tour 2013
 
Introduction to algorithms
Introduction to algorithmsIntroduction to algorithms
Introduction to algorithms
 
module2_dIVIDEncONQUER_2022.pdf
module2_dIVIDEncONQUER_2022.pdfmodule2_dIVIDEncONQUER_2022.pdf
module2_dIVIDEncONQUER_2022.pdf
 
Unit-1 DAA_Notes.pdf
Unit-1 DAA_Notes.pdfUnit-1 DAA_Notes.pdf
Unit-1 DAA_Notes.pdf
 
T2311 - Ch 4_Part1.pptx
T2311 - Ch 4_Part1.pptxT2311 - Ch 4_Part1.pptx
T2311 - Ch 4_Part1.pptx
 
2.pptx
2.pptx2.pptx
2.pptx
 
Mergesort
MergesortMergesort
Mergesort
 
Divide and conquer
Divide and conquerDivide and conquer
Divide and conquer
 
Recurrence relation solutions
Recurrence relation solutionsRecurrence relation solutions
Recurrence relation solutions
 
Analysis Of Algorithms Ii
Analysis Of Algorithms IiAnalysis Of Algorithms Ii
Analysis Of Algorithms Ii
 
03 dc
03 dc03 dc
03 dc
 
Mathematics
MathematicsMathematics
Mathematics
 
Data structure 8.pptx
Data structure 8.pptxData structure 8.pptx
Data structure 8.pptx
 
Nbvtalkatbzaonencryptionpuzzles
NbvtalkatbzaonencryptionpuzzlesNbvtalkatbzaonencryptionpuzzles
Nbvtalkatbzaonencryptionpuzzles
 
Nbvtalkatbzaonencryptionpuzzles
NbvtalkatbzaonencryptionpuzzlesNbvtalkatbzaonencryptionpuzzles
Nbvtalkatbzaonencryptionpuzzles
 
Skiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sortingSkiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sorting
 

More from Dr Sandeep Kumar Poonia

Soft computing
Soft computingSoft computing
Soft computing
Dr Sandeep Kumar Poonia
 
An improved memetic search in artificial bee colony algorithm
An improved memetic search in artificial bee colony algorithmAn improved memetic search in artificial bee colony algorithm
An improved memetic search in artificial bee colony algorithm
Dr Sandeep Kumar Poonia
 
Modified position update in spider monkey optimization algorithm
Modified position update in spider monkey optimization algorithmModified position update in spider monkey optimization algorithm
Modified position update in spider monkey optimization algorithm
Dr Sandeep Kumar Poonia
 
Enhanced local search in artificial bee colony algorithm
Enhanced local search in artificial bee colony algorithmEnhanced local search in artificial bee colony algorithm
Enhanced local search in artificial bee colony algorithm
Dr Sandeep Kumar Poonia
 
RMABC
RMABCRMABC
Memetic search in differential evolution algorithm
Memetic search in differential evolution algorithmMemetic search in differential evolution algorithm
Memetic search in differential evolution algorithm
Dr Sandeep Kumar Poonia
 
Improved onlooker bee phase in artificial bee colony algorithm
Improved onlooker bee phase in artificial bee colony algorithmImproved onlooker bee phase in artificial bee colony algorithm
Improved onlooker bee phase in artificial bee colony algorithm
Dr Sandeep Kumar Poonia
 
Comparative study of_hybrids_of_artificial_bee_colony_algorithm
Comparative study of_hybrids_of_artificial_bee_colony_algorithmComparative study of_hybrids_of_artificial_bee_colony_algorithm
Comparative study of_hybrids_of_artificial_bee_colony_algorithm
Dr Sandeep Kumar Poonia
 
A novel hybrid crossover based abc algorithm
A novel hybrid crossover based abc algorithmA novel hybrid crossover based abc algorithm
A novel hybrid crossover based abc algorithm
Dr Sandeep Kumar Poonia
 
Multiplication of two 3 d sparse matrices using 1d arrays and linked lists
Multiplication of two 3 d sparse matrices using 1d arrays and linked listsMultiplication of two 3 d sparse matrices using 1d arrays and linked lists
Multiplication of two 3 d sparse matrices using 1d arrays and linked lists
Dr Sandeep Kumar Poonia
 
Sunzip user tool for data reduction using huffman algorithm
Sunzip user tool for data reduction using huffman algorithmSunzip user tool for data reduction using huffman algorithm
Sunzip user tool for data reduction using huffman algorithm
Dr Sandeep Kumar Poonia
 
New Local Search Strategy in Artificial Bee Colony Algorithm
New Local Search Strategy in Artificial Bee Colony Algorithm New Local Search Strategy in Artificial Bee Colony Algorithm
New Local Search Strategy in Artificial Bee Colony Algorithm
Dr Sandeep Kumar Poonia
 
A new approach of program slicing
A new approach of program slicingA new approach of program slicing
A new approach of program slicing
Dr Sandeep Kumar Poonia
 
Performance evaluation of different routing protocols in wsn using different ...
Performance evaluation of different routing protocols in wsn using different ...Performance evaluation of different routing protocols in wsn using different ...
Performance evaluation of different routing protocols in wsn using different ...Dr Sandeep Kumar Poonia
 
Enhanced abc algo for tsp
Enhanced abc algo for tspEnhanced abc algo for tsp
Enhanced abc algo for tsp
Dr Sandeep Kumar Poonia
 
Performance evaluation of diff routing protocols in wsn using difft network p...
Performance evaluation of diff routing protocols in wsn using difft network p...Performance evaluation of diff routing protocols in wsn using difft network p...
Performance evaluation of diff routing protocols in wsn using difft network p...
Dr Sandeep Kumar Poonia
 

More from Dr Sandeep Kumar Poonia (20)

Soft computing
Soft computingSoft computing
Soft computing
 
An improved memetic search in artificial bee colony algorithm
An improved memetic search in artificial bee colony algorithmAn improved memetic search in artificial bee colony algorithm
An improved memetic search in artificial bee colony algorithm
 
Modified position update in spider monkey optimization algorithm
Modified position update in spider monkey optimization algorithmModified position update in spider monkey optimization algorithm
Modified position update in spider monkey optimization algorithm
 
Enhanced local search in artificial bee colony algorithm
Enhanced local search in artificial bee colony algorithmEnhanced local search in artificial bee colony algorithm
Enhanced local search in artificial bee colony algorithm
 
RMABC
RMABCRMABC
RMABC
 
Memetic search in differential evolution algorithm
Memetic search in differential evolution algorithmMemetic search in differential evolution algorithm
Memetic search in differential evolution algorithm
 
Improved onlooker bee phase in artificial bee colony algorithm
Improved onlooker bee phase in artificial bee colony algorithmImproved onlooker bee phase in artificial bee colony algorithm
Improved onlooker bee phase in artificial bee colony algorithm
 
Comparative study of_hybrids_of_artificial_bee_colony_algorithm
Comparative study of_hybrids_of_artificial_bee_colony_algorithmComparative study of_hybrids_of_artificial_bee_colony_algorithm
Comparative study of_hybrids_of_artificial_bee_colony_algorithm
 
A novel hybrid crossover based abc algorithm
A novel hybrid crossover based abc algorithmA novel hybrid crossover based abc algorithm
A novel hybrid crossover based abc algorithm
 
Multiplication of two 3 d sparse matrices using 1d arrays and linked lists
Multiplication of two 3 d sparse matrices using 1d arrays and linked listsMultiplication of two 3 d sparse matrices using 1d arrays and linked lists
Multiplication of two 3 d sparse matrices using 1d arrays and linked lists
 
Sunzip user tool for data reduction using huffman algorithm
Sunzip user tool for data reduction using huffman algorithmSunzip user tool for data reduction using huffman algorithm
Sunzip user tool for data reduction using huffman algorithm
 
New Local Search Strategy in Artificial Bee Colony Algorithm
New Local Search Strategy in Artificial Bee Colony Algorithm New Local Search Strategy in Artificial Bee Colony Algorithm
New Local Search Strategy in Artificial Bee Colony Algorithm
 
A new approach of program slicing
A new approach of program slicingA new approach of program slicing
A new approach of program slicing
 
Performance evaluation of different routing protocols in wsn using different ...
Performance evaluation of different routing protocols in wsn using different ...Performance evaluation of different routing protocols in wsn using different ...
Performance evaluation of different routing protocols in wsn using different ...
 
Enhanced abc algo for tsp
Enhanced abc algo for tspEnhanced abc algo for tsp
Enhanced abc algo for tsp
 
Database aggregation using metadata
Database aggregation using metadataDatabase aggregation using metadata
Database aggregation using metadata
 
Performance evaluation of diff routing protocols in wsn using difft network p...
Performance evaluation of diff routing protocols in wsn using difft network p...Performance evaluation of diff routing protocols in wsn using difft network p...
Performance evaluation of diff routing protocols in wsn using difft network p...
 
Lecture28 tsp
Lecture28 tspLecture28 tsp
Lecture28 tsp
 
Lecture27 linear programming
Lecture27 linear programmingLecture27 linear programming
Lecture27 linear programming
 
Lecture26
Lecture26Lecture26
Lecture26
 

Recently uploaded

How to Break the cycle of negative Thoughts
How to Break the cycle of negative ThoughtsHow to Break the cycle of negative Thoughts
How to Break the cycle of negative Thoughts
Col Mukteshwar Prasad
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Thiyagu K
 
How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17
Celine George
 
2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...
Sandy Millin
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
siemaillard
 
How to Split Bills in the Odoo 17 POS Module
How to Split Bills in the Odoo 17 POS ModuleHow to Split Bills in the Odoo 17 POS Module
How to Split Bills in the Odoo 17 POS Module
Celine George
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
Jisc
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
Special education needs
 
The geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideasThe geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideas
GeoBlogs
 
Ethnobotany and Ethnopharmacology ......
Ethnobotany and Ethnopharmacology ......Ethnobotany and Ethnopharmacology ......
Ethnobotany and Ethnopharmacology ......
Ashokrao Mane college of Pharmacy Peth-Vadgaon
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
Delapenabediema
 
Template Jadual Bertugas Kelas (Boleh Edit)
Template Jadual Bertugas Kelas (Boleh Edit)Template Jadual Bertugas Kelas (Boleh Edit)
Template Jadual Bertugas Kelas (Boleh Edit)
rosedainty
 
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptxStudents, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
EduSkills OECD
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
siemaillard
 
ESC Beyond Borders _From EU to You_ InfoPack general.pdf
ESC Beyond Borders _From EU to You_ InfoPack general.pdfESC Beyond Borders _From EU to You_ InfoPack general.pdf
ESC Beyond Borders _From EU to You_ InfoPack general.pdf
Fundacja Rozwoju Społeczeństwa Przedsiębiorczego
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
Thiyagu K
 
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCECLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
BhavyaRajput3
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
EverAndrsGuerraGuerr
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
Celine George
 

Recently uploaded (20)

How to Break the cycle of negative Thoughts
How to Break the cycle of negative ThoughtsHow to Break the cycle of negative Thoughts
How to Break the cycle of negative Thoughts
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
 
How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17
 
2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
How to Split Bills in the Odoo 17 POS Module
How to Split Bills in the Odoo 17 POS ModuleHow to Split Bills in the Odoo 17 POS Module
How to Split Bills in the Odoo 17 POS Module
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
 
The geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideasThe geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideas
 
Ethnobotany and Ethnopharmacology ......
Ethnobotany and Ethnopharmacology ......Ethnobotany and Ethnopharmacology ......
Ethnobotany and Ethnopharmacology ......
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
 
Template Jadual Bertugas Kelas (Boleh Edit)
Template Jadual Bertugas Kelas (Boleh Edit)Template Jadual Bertugas Kelas (Boleh Edit)
Template Jadual Bertugas Kelas (Boleh Edit)
 
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptxStudents, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
ESC Beyond Borders _From EU to You_ InfoPack general.pdf
ESC Beyond Borders _From EU to You_ InfoPack general.pdfESC Beyond Borders _From EU to You_ InfoPack general.pdf
ESC Beyond Borders _From EU to You_ InfoPack general.pdf
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
 
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCECLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
 

Recurrences

  • 1. Algorithms Sandeep Kumar Poonia Head Of Dept. CS/IT B.E., M.Tech., UGC-NET LM-IAENG, LM-IACSIT,LM-CSTA, LM-AIRCC, LM-SCIEI, AM-UACEE
  • 2. Algorithms Merge Sort Solving Recurrences The Master Theorem Introduction to heapsort Quicksort Sandeep Kumar Poonia
  • 3. Merge Sort MergeSort(A, left, right) { if (left < right) { mid = floor((left + right) / 2); MergeSort(A, left, mid); MergeSort(A, mid+1, right); Merge(A, left, mid, right); } } // Merge() takes two sorted subarrays of A and // merges them into a single sorted subarray of A // (how long should this take?) Sandeep Kumar Poonia
  • 4. Merge Sort: Example  Show MergeSort() running on the array A = {10, 5, 7, 6, 1, 4, 8, 3, 2, 9}; Sandeep Kumar Poonia
  • 5. Analysis of Merge Sort Statement Effort MergeSort(A, left, right) { if (left < right) { mid = floor((left + right) / 2); MergeSort(A, left, mid); MergeSort(A, mid+1, right); Merge(A, left, mid, right); } }  So T(n) = (1) when n = 1, and 2T(n/2) + (n) when n > 1  So what (more succinctly) is T(n)? Sandeep Kumar Poonia T(n) (1) (1) T(n/2) T(n/2) (n)
  • 6. Recurrences  The expression: c n 1    T ( n)   n 2T    cn n  1  2  is a recurrence.  Recurrence: an equation that describes a function in terms of its value on smaller functions Sandeep Kumar Poonia
  • 7. Recurrence Examples 0 n0  s ( n)   c  s(n  1) n  0 0 n0  s ( n)   n  s(n  1) n  0 c n 1    T ( n)   n 2T    c n  1  2    c n 1  T ( n)    n aT    cn n  1  b Sandeep Kumar Poonia
  • 8. Solving Recurrences Substitution method  Iteration method  Master method  Sandeep Kumar Poonia
  • 9. Solving Recurrences  The substitution method    A.k.a. the “making a good guess method” Guess the form of the answer, then use induction to find the constants and show that solution works Examples: = 2T(n/2) + (n)  T(n) = (n lg n)  T(n) = 2T(n/2) + n  ???  T(n) Sandeep Kumar Poonia
  • 10. Solving Recurrences  The substitution method    A.k.a. the “making a good guess method” Guess the form of the answer, then use induction to find the constants and show that solution works Examples: = 2T(n/2) + (n)  T(n) = (n lg n)  T(n) = 2T(n/2) + n  T(n) = (n lg n)  T(n) = 2T(n/2 )+ 17) + n  ???  T(n) Sandeep Kumar Poonia
  • 11. Solving Recurrences  The substitution method    A.k.a. the “making a good guess method” Guess the form of the answer, then use induction to find the constants and show that solution works Examples: = 2T(n/2) + (n)  T(n) = (n lg n)  T(n) = 2T(n/2) + n  T(n) = (n lg n)  T(n) = 2T(n/2+ 17) + n  (n lg n)  T(n) Sandeep Kumar Poonia
  • 12. Solving Recurrences  Another option is the “iteration method”     Expand the recurrence Work some algebra to express as a summation Evaluate the summation We will show several examples Sandeep Kumar Poonia
  • 13. 0 n0  s ( n)   c  s(n  1) n  0  s(n) = c + s(n-1) c + c + s(n-2) 2c + s(n-2) 2c + c + s(n-3) 3c + s(n-3) … kc + s(n-k) = ck + s(n-k) Sandeep Kumar Poonia
  • 14. 0 n0  s ( n)   c  s(n  1) n  0  So far for n >= k we have   s(n) = ck + s(n-k) What if k = n?  s(n) = cn + s(0) = cn Sandeep Kumar Poonia
  • 15. 0 n0  s ( n)   c  s(n  1) n  0  So far for n >= k we have   s(n) = ck + s(n-k) What if k = n?  s(n) = cn + s(0) = cn 0 n0  s ( n)   c  s(n  1) n  0  So  Thus in general  s(n) = cn Sandeep Kumar Poonia
  • 16. 0 n0  s ( n)   n  s(n  1) n  0  = = = = = = s(n) n + s(n-1) n + n-1 + s(n-2) n + n-1 + n-2 + s(n-3) n + n-1 + n-2 + n-3 + s(n-4) … n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k) Sandeep Kumar Poonia
  • 17. 0 n0  s ( n)   n  s(n  1) n  0  = = = = = = s(n) n + s(n-1) n + n-1 + s(n-2) n + n-1 + n-2 + s(n-3) n + n-1 + n-2 + n-3 + s(n-4) … n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k) n = i i  n  k 1 Sandeep Kumar Poonia  s(n  k )
  • 18. 0 n0  s ( n)   n  s(n  1) n  0  So far for n >= k we have n i i  n  k 1 Sandeep Kumar Poonia  s(n  k )
  • 19. 0 n0  s ( n)   n  s(n  1) n  0  So far for n >= k we have n i  s(n  k ) i  n  k 1  What if k = n? Sandeep Kumar Poonia
  • 20. 0 n0  s ( n)   n  s(n  1) n  0  So far for n >= k we have n i  s(n  k ) i  n  k 1  What if k = n? n 1  i  s(0)   i  0  n 2 i 1 i 1 n Sandeep Kumar Poonia n
  • 21. 0 n0  s ( n)   n  s(n  1) n  0  So far for n >= k we have n i  s(n  k ) i  n  k 1  What if k = n? n 1  i  s(0)   i  0  n 2 i 1 i 1 n  Thus in general n 1 s ( n)  n 2 Sandeep Kumar Poonia n
  • 22. c n 1   n T (n)  2T    c n 1  2   T(n) = 2T(n/2) + c 2(2T(n/2/2) + c) + c 22T(n/22) + 2c + c 22(2T(n/22/2) + c) + 3c 23T(n/23) + 4c + 3c 23T(n/23) + 7c 23(2T(n/23/2) + c) + 7c 24T(n/24) + 15c … 2kT(n/2k) + (2k - 1)c Sandeep Kumar Poonia
  • 23. c n 1   n T (n)  2T    c n 1  2   So far for n > 2k we have   T(n) = 2kT(n/2k) + (2k - 1)c What if k = lg n?  T(n) = 2lg n T(n/2lg n) + (2lg n - 1)c = n T(n/n) + (n - 1)c = n T(1) + (n-1)c = nc + (n-1)c = (2n - 1)c Sandeep Kumar Poonia
  • 24. The Master Theorem  Given: a divide and conquer algorithm    An algorithm that divides the problem of size n into a subproblems, each of size n/b Let the cost of each stage (i.e., the work to divide the problem + combine solved subproblems) be described by the function f(n) Then, the Master Theorem gives us a cookbook for the algorithm’s running time: Sandeep Kumar Poonia
  • 25. The Master Theorem  if T(n) = aT(n/b) + f(n) then    n logb a     logb a T (n)   n log n    f (n)       Sandeep Kumar Poonia    f (n)  O n logb a      0 logb a f ( n)   n   c 1   f (n)   n logb a  AND  af (n / b)  cf (n) for large n       
  • 26. Using The Master Method  T(n) = 9T(n/3) + n    a=9, b=3, f(n) = n nlog a = nlog 9 = (n2) Since f(n) = O(nlog 9 - ), where =1, case 1 applies: b 3 3    T (n)   nlogb a when f (n)  O nlogb a   Thus the solution is T(n) = (n2) Sandeep Kumar Poonia 
  • 27. Sorting Revisited  So far we’ve talked about two algorithms to sort an array of numbers    What is the advantage of merge sort? What is the advantage of insertion sort? Next on the agenda: Heapsort  Combines advantages of both previous algorithms Sandeep Kumar Poonia
  • 28. Heaps  A heap can be seen as a complete binary tree: 16 14 10 8 2   7 4 9 1 What makes a binary tree complete? Is the example above complete? Sandeep Kumar Poonia 3
  • 29. Heaps  A heap can be seen as a complete binary tree: 16 14 10 8 2  7 4 1 9 1 1 3 1 1 The book calls them “nearly complete” binary trees; can think of unfilled slots as null pointers Sandeep Kumar Poonia 1
  • 30. Heaps  In practice, heaps are usually implemented as arrays: 16 14 A = 16 14 10 8 7 9 3 2 4 8 1 = 2 Sandeep Kumar Poonia 10 7 4 1 9 3
  • 31. Heaps  To represent a complete binary tree as an array:      The root node is A[1] Node i is A[i] The parent of node i is A[i/2] (note: integer divide) The left child of node i is A[2i] The right child of node i is A[2i + 1] 16 14 A = 16 14 10 8 7 9 3 2 4 8 1 = 2 Sandeep Kumar Poonia 10 7 4 1 9 3
  • 32. Referencing Heap Elements  So… Parent(i) { return i/2; } Left(i) { return 2*i; } right(i) { return 2*i + 1; } An aside: How would you implement this most efficiently?  Another aside: Really?  Sandeep Kumar Poonia
  • 33. The Heap Property  Heaps also satisfy the heap property: A[Parent(i)]  A[i] for all nodes i > 1    In other words, the value of a node is at most the value of its parent Where is the largest element in a heap stored? Definitions:   The height of a node in the tree = the number of edges on the longest downward path to a leaf The height of a tree = the height of its root Sandeep Kumar Poonia
  • 34. Heap Height What is the height of an n-element heap? Why?  This is nice: basic heap operations take at most time proportional to the height of the heap  Sandeep Kumar Poonia
  • 35. Heap Operations: Heapify()  Heapify(): maintain the heap property     Given: a node i in the heap with children l and r Given: two subtrees rooted at l and r, assumed to be heaps Problem: The subtree rooted at i may violate the heap property (How?) Action: let the value of the parent node “float down” so subtree at i satisfies the heap property  What do you suppose will be the basic operation between i, l, and r? Sandeep Kumar Poonia
  • 36. Heap Operations: Heapify() Heapify(A, i) { l = Left(i); r = Right(i); if (l <= heap_size(A) && A[l] > A[i]) largest = l; else largest = i; if (r <= heap_size(A) && A[r] > A[largest]) largest = r; if (largest != i) Swap(A, i, largest); Heapify(A, largest); } Sandeep Kumar Poonia
  • 37. Heapify() Example 16 4 10 14 2 7 8 3 1 A = 16 4 10 14 7 Sandeep Kumar Poonia 9 9 3 2 8 1
  • 38. Heapify() Example 16 4 10 14 2 7 8 3 1 A = 16 4 10 14 7 Sandeep Kumar Poonia 9 9 3 2 8 1
  • 39. Heapify() Example 16 4 10 14 2 7 8 3 1 A = 16 4 10 14 7 Sandeep Kumar Poonia 9 9 3 2 8 1
  • 40. Heapify() Example 16 14 10 4 2 7 8 3 1 A = 16 14 10 4 Sandeep Kumar Poonia 9 7 9 3 2 8 1
  • 41. Heapify() Example 16 14 10 4 2 7 8 3 1 A = 16 14 10 4 Sandeep Kumar Poonia 9 7 9 3 2 8 1
  • 42. Heapify() Example 16 14 10 4 2 7 8 3 1 A = 16 14 10 4 Sandeep Kumar Poonia 9 7 9 3 2 8 1
  • 43. Heapify() Example 16 14 10 8 2 7 4 3 1 A = 16 14 10 8 Sandeep Kumar Poonia 9 7 9 3 2 4 1
  • 44. Heapify() Example 16 14 10 8 2 7 4 3 1 A = 16 14 10 8 Sandeep Kumar Poonia 9 7 9 3 2 4 1
  • 45. Heapify() Example 16 14 10 8 2 7 4 3 1 A = 16 14 10 8 Sandeep Kumar Poonia 9 7 9 3 2 4 1
  • 46. Analyzing Heapify(): Informal Aside from the recursive call, what is the running time of Heapify()?  How many times can Heapify() recursively call itself?  What is the worst-case running time of Heapify() on a heap of size n?  Sandeep Kumar Poonia
  • 47. Analyzing Heapify(): Formal Fixing up relationships between i, l, and r takes (1) time  If the heap at i has n elements, how many elements can the subtrees at l or r have?   Draw it Answer: 2n/3 (worst case: bottom row 1/2 full)  So time taken by Heapify() is given by  T(n)  T(2n/3) + (1) Sandeep Kumar Poonia
  • 48. Analyzing Heapify(): Formal So we have T(n)  T(2n/3) + (1)  By case 2 of the Master Theorem, T(n) = O(lg n)  Thus, Heapify() takes linear time  Sandeep Kumar Poonia
  • 49. Heap Operations: BuildHeap()  We can build a heap in a bottom-up manner by running Heapify() on successive subarrays   Fact: for array of length n, all elements in range A[n/2 + 1 .. n] are heaps (Why?) So:  Walk backwards through the array from n/2 to 1, calling Heapify() on each node.  Order of processing guarantees that the children of node i are heaps when i is processed Sandeep Kumar Poonia
  • 50. BuildHeap() // given an unsorted array A, make A a heap BuildHeap(A) { heap_size(A) = length(A); for (i = length[A]/2 downto 1) Heapify(A, i); } Sandeep Kumar Poonia
  • 51. BuildHeap() Example  Work through example A = {4, 1, 3, 2, 16, 9, 10, 14, 8, 7} 4 1 3 2 14 Sandeep Kumar Poonia 16 8 7 9 10
  • 52. Analyzing BuildHeap()  Each call to Heapify() takes O(lg n) time There are O(n) such calls (specifically, n/2)  Thus the running time is O(n lg n)     Is this a correct asymptotic upper bound? Is this an asymptotically tight bound? A tighter bound is O(n)  How can this be? Is there a flaw in the above reasoning? Sandeep Kumar Poonia
  • 53. Analyzing BuildHeap(): Tight  To Heapify() a subtree takes O(h) time where h is the height of the subtree   h = O(lg m), m = # nodes in subtree The height of most subtrees is small Fact: an n-element heap has at most n/2h+1 nodes of height h  CLR 7.3 uses this fact to prove that BuildHeap() takes O(n) time  Sandeep Kumar Poonia
  • 54. Heapsort  Given BuildHeap(), an in-place sorting algorithm is easily constructed:   Maximum element is at A[1] Discard by swapping with element at A[n]  Decrement heap_size[A]  A[n] now contains correct value  Restore heap property at A[1] by calling Heapify()  Repeat, always swapping A[1] for A[heap_size(A)] Sandeep Kumar Poonia
  • 55. Heapsort Heapsort(A) { BuildHeap(A); for (i = length(A) downto 2) { Swap(A[1], A[i]); heap_size(A) -= 1; Heapify(A, 1); } } Sandeep Kumar Poonia
  • 56. Analyzing Heapsort The call to BuildHeap() takes O(n) time  Each of the n - 1 calls to Heapify() takes O(lg n) time  Thus the total time taken by HeapSort() = O(n) + (n - 1) O(lg n) = O(n) + O(n lg n) = O(n lg n)  Sandeep Kumar Poonia
  • 57. Priority Queues Heapsort is a nice algorithm, but in practice Quicksort (coming up) usually wins  But the heap data structure is incredibly useful for implementing priority queues     A data structure for maintaining a set S of elements, each with an associated value or key Supports the operations Insert(), Maximum(), and ExtractMax() What might a priority queue be useful for? Sandeep Kumar Poonia
  • 58. Priority Queue Operations Insert(S, x) inserts the element x into set S  Maximum(S) returns the element of S with the maximum key  ExtractMax(S) removes and returns the element of S with the maximum key  How could we implement these operations using a heap?  Sandeep Kumar Poonia
  • 59. Tying It Into The Real World  And now, a real-world example… Sandeep Kumar Poonia
  • 60. Tying It Into The “Real World”  And now, a real-world example…combat billiards       Sort of like pool... Except you’re trying to kill the other players… And the table is the size of a polo field… And the balls are the size of Suburbans... And instead of a cue you drive a vehicle with a ram on it Figure 1: boring traditional pool Problem: how do you simulate the physics? Sandeep Kumar Poonia
  • 61. Combat Billiards: Simulating The Physics  Simplifying assumptions:  G-rated version: No players  Just  n balls bouncing around No spin, no friction  Easy to calculate the positions of the balls at time Tn from time Tn-1 if there are no collisions in between  Simple elastic collisions Sandeep Kumar Poonia
  • 62. Simulating The Physics  Assume we know how to compute when two moving spheres will intersect   Given the state of the system, we can calculate when the next collision will occur for each ball At each collision Ci:  Advance the system to the time Ti of the collision  Recompute the next collision for the ball(s) involved  Find the next overall collision Ci+1 and repeat  How should we keep track of all these collisions and when they occur? Sandeep Kumar Poonia
  • 63. Implementing Priority Queues HeapInsert(A, key) // what’s running time? { heap_size[A] ++; i = heap_size[A]; while (i > 1 AND A[Parent(i)] < key) { A[i] = A[Parent(i)]; i = Parent(i); } A[i] = key; } Sandeep Kumar Poonia
  • 64. Implementing Priority Queues HeapMaximum(A) { // This one is really tricky: return A[i]; } Sandeep Kumar Poonia
  • 65. Implementing Priority Queues HeapExtractMax(A) { if (heap_size[A] < 1) { error; } max = A[1]; A[1] = A[heap_size[A]] heap_size[A] --; Heapify(A, 1); return max; } Sandeep Kumar Poonia
  • 66. Back To Combat Billiards      Extract the next collision Ci from the queue Advance the system to the time Ti of the collision Recompute the next collision(s) for the ball(s) involved Insert collision(s) into the queue, using the time of occurrence as the key Find the next overall collision Ci+1 and repeat Sandeep Kumar Poonia
  • 67. Using A Priority Queue For Event Simulation More natural to use Minimum() and ExtractMin()  What if a player hits a ball?    Need to code up a Delete() operation How? What will the running time be? Sandeep Kumar Poonia
  • 68. Quicksort Sorts in place  Sorts O(n lg n) in the average case  Sorts O(n2) in the worst case  So why would people use it instead of merge sort?  Sandeep Kumar Poonia
  • 69. Quicksort  Another divide-and-conquer algorithm  The array A[p..r] is partitioned into two nonempty subarrays A[p..q] and A[q+1..r]  Invariant: All elements in A[p..q] are less than all elements in A[q+1..r]   The subarrays are recursively sorted by calls to quicksort Unlike merge sort, no combining step: two subarrays form an already-sorted array Sandeep Kumar Poonia
  • 70. Quicksort Code Quicksort(A, p, r) { if (p < r) { q = Partition(A, p, r); Quicksort(A, p, q); Quicksort(A, q+1, r); } } Sandeep Kumar Poonia
  • 71. Partition  Clearly, all the action takes place in the partition() function   Rearranges the subarray in place End result:  Two subarrays  All values in first subarray  all values in second   Returns the index of the “pivot” element separating the two subarrays How do you suppose we implement this function? Sandeep Kumar Poonia
  • 72. Partition In Words  Partition(A, p, r):   Select an element to act as the “pivot” (which?) Grow two regions, A[p..i] and A[j..r]  All elements in A[p..i] <= pivot  All elements in A[j..r] >= pivot      Increment i until A[i] >= pivot Decrement j until A[j] <= pivot Swap A[i] and A[j] Repeat until i >= j Return j Sandeep Kumar Poonia
  • 73. Partition Code Partition(A, p, r) x = A[p]; Illustrate on i = p - 1; A = {5, 3, 2, 6, 4, 1, 3, 7}; j = r + 1; while (TRUE) repeat j--; until A[j] <= x; What is the running time of repeat partition()? i++; until A[i] >= x; if (i < j) Swap(A, i, j); else return j; Sandeep Kumar Poonia
  • 74. Review: Analyzing Quicksort  What will be the worst case for the algorithm?   What will be the best case for the algorithm?   Partition is balanced Which is more likely?   Partition is always unbalanced The latter, by far, except... Will any particular input elicit the worst case?  Yes: Already-sorted input Sandeep Kumar Poonia
  • 75. Review: Analyzing Quicksort  In the worst case: T(1) = (1) T(n) = T(n - 1) + (n)  Works out to T(n) = (n2) Sandeep Kumar Poonia
  • 76. Review: Analyzing Quicksort  In the best case: T(n) = 2T(n/2) + (n)  What does this work out to? T(n) = (n lg n) Sandeep Kumar Poonia
  • 77. Review: Analyzing Quicksort (Average Case)  Intuitively, a real-life run of quicksort will produce a mix of “bad” and “good” splits    Randomly distributed among the recursion tree Pretend for intuition that they alternate between best-case (n/2 : n/2) and worst-case (n-1 : 1) What happens if we bad-split root node, then good-split the resulting size (n-1) node? Sandeep Kumar Poonia
  • 78. Review: Analyzing Quicksort (Average Case)  Intuitively, a real-life run of quicksort will produce a mix of “bad” and “good” splits    Randomly distributed among the recursion tree Pretend for intuition that they alternate between best-case (n/2 : n/2) and worst-case (n-1 : 1) What happens if we bad-split root node, then good-split the resulting size (n-1) node?  We end up with three subarrays, size 1, (n-1)/2, (n-1)/2  Combined cost of splits = n + n -1 = 2n -1 = O(n)  No worse than if we had good-split the root node! Sandeep Kumar Poonia
  • 79. Review: Analyzing Quicksort (Average Case) Intuitively, the O(n) cost of a bad split (or 2 or 3 bad splits) can be absorbed into the O(n) cost of each good split  Thus running time of alternating bad and good splits is still O(n lg n), with slightly higher constants  How can we be more rigorous?  Sandeep Kumar Poonia
  • 80. Analyzing Quicksort: Average Case  For simplicity, assume:   All inputs distinct (no repeats) Slightly different partition() procedure  partition around a random element, which is not included in subarrays  all splits (0:n-1, 1:n-2, 2:n-3, … , n-1:0) equally likely What is the probability of a particular split happening?  Answer: 1/n  Sandeep Kumar Poonia
  • 81. Analyzing Quicksort: Average Case So partition generates splits (0:n-1, 1:n-2, 2:n-3, … , n-2:1, n-1:0) each with probability 1/n  If T(n) is the expected running time,  1 n1 T n    T k   T n  1  k   n  n k 0 What is each term under the summation for?  What is the (n) term for?  Sandeep Kumar Poonia
  • 82. Analyzing Quicksort: Average Case  So… 1 n 1 T n    T k   T n  1  k   n  n k 0 2 n 1   T k   n  n k 0 Sandeep Kumar Poonia Write it on the board
  • 83. Analyzing Quicksort: Average Case  We can solve this recurrence using the dreaded substitution method     Guess the answer Assume that the inductive hypothesis holds Substitute it in for some value < n Prove that it follows for n Sandeep Kumar Poonia
  • 84. Analyzing Quicksort: Average Case  We can solve this recurrence using the dreaded substitution method  Guess the answer  What’s    the answer? Assume that the inductive hypothesis holds Substitute it in for some value < n Prove that it follows for n Sandeep Kumar Poonia
  • 85. Analyzing Quicksort: Average Case  We can solve this recurrence using the dreaded substitution method  Guess the answer  T(n)    = O(n lg n) Assume that the inductive hypothesis holds Substitute it in for some value < n Prove that it follows for n Sandeep Kumar Poonia
  • 86. Analyzing Quicksort: Average Case  We can solve this recurrence using the dreaded substitution method  Guess the answer  T(n)  = O(n lg n) Assume that the inductive hypothesis holds  What’s   the inductive hypothesis? Substitute it in for some value < n Prove that it follows for n Sandeep Kumar Poonia
  • 87. Analyzing Quicksort: Average Case  We can solve this recurrence using the dreaded substitution method  Guess the answer  T(n)  Assume that the inductive hypothesis holds  T(n)   = O(n lg n)  an lg n + b for some constants a and b Substitute it in for some value < n Prove that it follows for n Sandeep Kumar Poonia
  • 88. Analyzing Quicksort: Average Case  We can solve this recurrence using the dreaded substitution method  Guess the answer  T(n)  Assume that the inductive hypothesis holds  T(n)  = O(n lg n)  an lg n + b for some constants a and b Substitute it in for some value < n  What  value? Prove that it follows for n Sandeep Kumar Poonia
  • 89. Analyzing Quicksort: Average Case  We can solve this recurrence using the dreaded substitution method  Guess the answer  T(n)  Assume that the inductive hypothesis holds  T(n)   an lg n + b for some constants a and b Substitute it in for some value < n  The  = O(n lg n) value k in the recurrence Prove that it follows for n Sandeep Kumar Poonia
  • 90. Analyzing Quicksort: Average Case  We can solve this recurrence using the dreaded substitution method  Guess the answer  T(n)  Assume that the inductive hypothesis holds  T(n)   an lg n + b for some constants a and b Substitute it in for some value < n  The  = O(n lg n) value k in the recurrence Prove that it follows for n  Grind Sandeep Kumar Poonia through it…
  • 91. Analyzing Quicksort: Average Case 2 n 1 T n    T k   n  n k 0 2 n 1   ak lg k  b   n  n k 0 The recurrence to be solved Plug in inductive hypothesis What are we doing here? 2  n 1  What are we doing here?  b   ak lg k  b   n  Expand out the k=0 case n  k 1  2 n 1 2b   ak lg k  b    n  n k 1 n 2b/n is just a constant, What are we doing here? so fold it into (n) 2 n 1   ak lg k  b   n  n k 1 Note: leaving the same recurrence as the book Sandeep Kumar Poonia
  • 92. Analyzing Quicksort: Average Case 2 n 1 T n    ak lg k  b   n  n k 1 2 n 1 2 n 1   ak lg k   b  n  n k 1 n k 1 The recurrence to be solved Distribute the summation What are we doing here? 2a n 1 2b the summation:  k lg k  (n  1)  n  Evaluateare we doing here? What  b+b+…+b = b (n-1) n k 1 n 2a n 1   k lg k  2b  n  n k 1 This summation gets its own set of slides later Sandeep Kumar Poonia Since n-1<n,we doing here? What are 2b(n-1)/n < 2b
  • 93. Analyzing Quicksort: Average Case 2a n 1 T n    k lg k  2b  n  n k 1     The recurrence to be solved 2a  1 2 1 2 We’ll prove this  n lg n  n   2b  n  What the hell? later n 2 8  a an lg n  n  2b  n  Distribute the (2a/n) term What are we doing here? 4 a  Remember, our goal is to get  an lg n  b   n   b  n  What are we doing here? T(n)  an lg n + b 4   Pick a large enough that an lg n  b How did we do this? an/4 dominates (n)+b Sandeep Kumar Poonia
  • 94. Analyzing Quicksort: Average Case  So T(n)  an lg n + b for certain a and b     Thus the induction holds Thus T(n) = O(n lg n) Thus quicksort runs in O(n lg n) time on average (phew!) Oh yeah, the summation… Sandeep Kumar Poonia
  • 95. Tightly Bounding The Key Summation n 1 n 2 1 n 1 k 1 k 1 k  n 2  n 2 1 n 1 k 1 k  n 2   k lg k   k lg k   k lg k   k lg k   k lg n Sandeep Kumar Poonia n 1 k 1  n 2 1 k  n 2   k lg k  lg n  k Split the summation for a What are we doing here? tighter bound The lg k in the second term What are we doing here? is bounded by lg n Move the lg n outside the What are we doing here? summation
  • 96. Tightly Bounding The Key Summation n 1  k lg k  k 1 n 2 1  k lg k  lg n k 1 n 1 k The summation bound so far k  n 2   n 1 k 1  n 2 1 k  n 2   k lgn 2  lg n  k n 2 1  k lg n  1  lg n k 1 n 1 k n 1 k 1 Sandeep Kumar Poonia lg n/2 = lg n we doing here? What are - 1 k  n 2  n 2 1 k  n 2   lg n  1 The lg k in the first term is What are we doing here? bounded by lg n/2  k  lg n  k Move (lg n - 1) outside the What are we doing here? summation
  • 97. Tightly Bounding The Key Summation n 2 1 n 1  k lg k  lg n  1 k 1  lg n  k  lg n k 1 n 2 1 k  k 1 k  k  lg n k 1 n 1 k Distribute the (lg n - 1) What are we doing here? k  n 2  n 2 1 k 1 The summation bound so far k  n 2  n 2 1 n 1 k 1  lg n k  k  n  1(n)   lg n  2   Sandeep Kumar Poonia n 1 The summations overlap in What are we doing here? range; combine them n 2 1 k k 1 The Guassian series here? What are we doing
  • 98. Tightly Bounding The Key Summation  n  1(n)   k lg k   2  lg n   k   k 1 k 1 n 2 1 1  nn  1lg n   k 2 k 1 n 2 1 n 1 The summation bound so far Rearrange first term, place What are we doing here? upper bound on second 1 1  n  n   nn  1lg n     1 2 2  2  2  1 2 1 2 n  n lg n  n lg n  n  2 8 4  Sandeep Kumar Poonia  X Guassian series What are we doing? Multiply it What are we doing? all out
  • 99. Tightly Bounding The Key Summation  n 1  1 2 1 2 n  k lg k  2 n lg n  n lg n  8 n  4 k 1 1 2 1 2  n lg n  n when n  2 2 8 Done!!! Sandeep Kumar Poonia