Alexandra Silva - cs.ru.nl
Transcript of Alexandra Silva - cs.ru.nl
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Complexity
Alexandra Silva
http://www.cs.ru.nl/~alexandra
Institute for Computing and Information SciencesRadboud University Nijmegen
6th February 2013
Alexandra 6th February 2013 Lesson 1 1 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Introduction
• This is a course about algorithms and complexity
• We will analyze algorithms and assess efficiency
• It is an essential skill for advanced programmers
Alexandra 6th February 2013 Lesson 1 2 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Basic course information
Teachers
• Alexandra (lectures)
• Bas and Tim (tutorials)
There are 7 lectures plus 7 tutorials.No lecture on 20 March and no tutorial on 22 March (test).
Final grade
0.5exam + 0.5test
Mark of written exam must be at least 5.
Alexandra 6th February 2013 Lesson 1 3 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Basic course information
Lectures• Weekly, 2 hours, on Wednesdays 15:45
• Presence not compulsory . . .• but active attitude expected, when present
Website
http://www.ru.nl/foundations/education/courses/
complexity-2013/
Doubts, complains, suggestions, . . .
Email: [email protected]
My office: HG.02.514, check availability:http://alexandrasilva.org/calendar/
Alexandra 6th February 2013 Lesson 1 4 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Basic course information
Lectures• Weekly, 2 hours, on Wednesdays 15:45
• Presence not compulsory . . .• but active attitude expected, when present
Website
http://www.ru.nl/foundations/education/courses/
complexity-2013/
Doubts, complains, suggestions, . . .
Email: [email protected]
My office: HG.02.514, check availability:http://alexandrasilva.org/calendar/
Alexandra 6th February 2013 Lesson 1 4 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Basic course information
How to pass this course . . .
• Practice, practice, practice . . .
• You don’t learn it it by just staring at the slides - not aspectator sport!
• Exam questions will be in line with exercises
Alexandra 6th February 2013 Lesson 1 5 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Basic course information
Last but not least
• You can fail for this course!(Statistics tells that some of you will)
• 3ec means 3× 28 = 84 hours in total• Let’s say 20 hours for exam• 64 hours for 8 weeks means: 8 hours per week!• on average 4 hours for studying & making exercises
Alexandra 6th February 2013 Lesson 1 6 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Basic course information
Last but not least• You can fail for this course!
(Statistics tells that some of you will)
• 3ec means 3× 28 = 84 hours in total• Let’s say 20 hours for exam• 64 hours for 8 weeks means: 8 hours per week!• on average 4 hours for studying & making exercises
Alexandra 6th February 2013 Lesson 1 6 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Basic course information
Last but not least• You can fail for this course!
(Statistics tells that some of you will)
• 3ec means 3× 28 = 84 hours in total• Let’s say 20 hours for exam• 64 hours for 8 weeks means: 8 hours per week!• on average 4 hours for studying & making exercises
Alexandra 6th February 2013 Lesson 1 6 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Analysis of algorithms
Study of different features that allow classifying and comparingalgorithms
One important feature: the correction of an algorithm. Does thealgorithm actually do what we meant it to do? (we will not bedealing with that in this course.)
Alexandra 6th February 2013 Lesson 1 7 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Analysis of algorithms
Study of different features that allow classifying and comparingalgorithms
One important feature: the correction of an algorithm. Does thealgorithm actually do what we meant it to do? (we will not bedealing with that in this course.)
Alexandra 6th February 2013 Lesson 1 7 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Analysis of algorithms
Then, it is important to take into account the resources needed toexecute an algorithm:
• memory
• bandwidth
• hardware
• . . .
• and of particular interest in this course:execution/computation time
The latter is what we will be using as comparison measure betweenalgorithms.
The strategy used in an algorithm to perform a certain task is veryimportant!
Alexandra 6th February 2013 Lesson 1 8 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Analysis of algorithms
Then, it is important to take into account the resources needed toexecute an algorithm:
• memory
• bandwidth
• hardware
• . . .
• and of particular interest in this course:execution/computation time
The latter is what we will be using as comparison measure betweenalgorithms.The strategy used in an algorithm to perform a certain task is veryimportant!
Alexandra 6th February 2013 Lesson 1 8 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
In a nutshell. . .
What we will be doing for the next couple of lectures.
• Analysis of execution times:• Computational models• Analyze the best, worst and average case of an algorithm• Analysis of recursive algorithms (recurrence relations)• (Analysis of average case; randomized algorithms)
• Analysis of strategies: linear, incremental divide and conquer,(greedy algorithms, dynamic programming)
• Sorting (and searching) algorithmsCase studies: linear search, binary search, insertion sort,mergesort, quicksort, radix sort, heap sort.
Alexandra 6th February 2013 Lesson 1 9 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
For the sake of clarity: what is an algorithm
An algorithm is a well-defined procedure which takes an inputvalue and returns an output value
Alternative definitions• a sequence of computational steps transforming an input
value into an output value
• a tool to solve a well defined computational problem, whichdefined the relation between input and output
• . . .
Alexandra 6th February 2013 Lesson 1 10 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Why are algorithms important?
Typical areas of application:
• Internet: routing, searching, etc
• Security and cryptography
• Operations research (have you wondered how TNT programstheir deliveries?)
• Maps (TomTom and such)
Examples of hard problems
• how to find the shortest/fastest path from N (Nijmegen) to A(Amsterdam) in a given map?
• how to visit all the cities in the Netherlands in the shortestway possible?
• given a set of matrices (possibly not square), how to computetheir multiplication?
Alexandra 6th February 2013 Lesson 1 11 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Why are algorithms important?
Typical areas of application:
• Internet: routing, searching, etc
• Security and cryptography
• Operations research (have you wondered how TNT programstheir deliveries?)
• Maps (TomTom and such)
Examples of hard problems
• how to find the shortest/fastest path from N (Nijmegen) to A(Amsterdam) in a given map?
• how to visit all the cities in the Netherlands in the shortestway possible?
• given a set of matrices (possibly not square), how to computetheir multiplication?
Alexandra 6th February 2013 Lesson 1 11 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Why are efficient algorithms important?
For a given problem, the ultimate quest is to find the most efficientalgorithm.
For harder problems, no efficient solution is known. Thesealgorithms are NP (we will cover this formally in a few lectures). Asubclass of NP which is interesting is the class of NP-completeproblems, because:
• The description of the problem is simple;
• they arise usually in common and important application areas;
• it is not know whether there is an efficient algorithm to solve them;
• if someone finds an efficient solution for one of these problems, thenall of them are solvable efficiently!
• when (trying to) solves an NP-complete problem, solutions thatcome close to the ideal solution are enough, a long as computed inreasonable time.
Alexandra 6th February 2013 Lesson 1 12 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Why are efficient algorithms important?
For a given problem, the ultimate quest is to find the most efficientalgorithm.For harder problems, no efficient solution is known. Thesealgorithms are NP (we will cover this formally in a few lectures).
Asubclass of NP which is interesting is the class of NP-completeproblems, because:
• The description of the problem is simple;
• they arise usually in common and important application areas;
• it is not know whether there is an efficient algorithm to solve them;
• if someone finds an efficient solution for one of these problems, thenall of them are solvable efficiently!
• when (trying to) solves an NP-complete problem, solutions thatcome close to the ideal solution are enough, a long as computed inreasonable time.
Alexandra 6th February 2013 Lesson 1 12 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Why are efficient algorithms important?
For a given problem, the ultimate quest is to find the most efficientalgorithm.For harder problems, no efficient solution is known. Thesealgorithms are NP (we will cover this formally in a few lectures). Asubclass of NP which is interesting is the class of NP-completeproblems, because:
• The description of the problem is simple;
• they arise usually in common and important application areas;
• it is not know whether there is an efficient algorithm to solve them;
• if someone finds an efficient solution for one of these problems, thenall of them are solvable efficiently!
• when (trying to) solves an NP-complete problem, solutions thatcome close to the ideal solution are enough, a long as computed inreasonable time.
Alexandra 6th February 2013 Lesson 1 12 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Why is analysis of algorithms important?
Why should we care to learn how to design and analyzealgorithms?
• Even though many problems have been solved efficiently, therapid change in the world (think of the amount of info)requires for constant improvement in the existing algorithmsand design of new, more efficient algorithms;
• If we would have infinite resources (memory, processing speed,. . . ) then any solution would be fine; but in reality we have tooptimize consumption and minimize the resource consumption(we have to be zuinig)!
Alexandra 6th February 2013 Lesson 1 13 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Why is analysis of algorithms important?
Why should we care to learn how to design and analyzealgorithms? (c’d)
• Algorithms for the same problem can have (crazily) differentbehaviors: good algorithm design can have more impact thanthe choice of hardware.
• In a nutshell: algorithms are important because the choicesmade at that level of devising a system can strongly affect itsvalidity and scope of application.
Alexandra 6th February 2013 Lesson 1 14 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Execution time analysis computational model
To do this type of analysis we need to take to fix our setting:
• Which model should we use?
• What is the cost of the resources in that model
This is what we will use:
• Model: Random Access Machine (RAM).
• A generic computer, single processor, no concurrency(instructions executed sequentially)
• The algorithms are implemented as programs in such asimplified computer
Alexandra 6th February 2013 Lesson 1 15 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Execution time analysis computational model
To do this type of analysis we need to take to fix our setting:
• Which model should we use?
• What is the cost of the resources in that model
This is what we will use:
• Model: Random Access Machine (RAM).
• A generic computer, single processor, no concurrency(instructions executed sequentially)
• The algorithms are implemented as programs in such asimplified computer
Alexandra 6th February 2013 Lesson 1 15 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Execution time analysis computational model
We will not specify the model completely; we will be reasonablewhen it comes to using it. . .
A computer does not have complicated functions as search or sortbut more primitive/atomic ones such as:
• arithmetic operations: sum, multiplication, . . .
• basic data manipulation: store, access, copy, . . .
• basic control structures: if-then-else, loops, . . .
For the purpose of this course, all these primitive operationsexecute in constant time.
Alexandra 6th February 2013 Lesson 1 16 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Execution time analysis computational model
Talking about being reasonable:
Do you think exponentiation is executed in constant time?
The RAM computational model does not take into account thememory hierarchy computers have (cache, virtual memory),however the analysis using this model is (almost) always a goodrepresentative.
Alexandra 6th February 2013 Lesson 1 17 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Execution time analysis computational model
Dimension of the input depends on the sort of problem beinganalyzed:
• sorting a list/vector: number of elements
• multiplying two integers: total number of bits used in thenumber representation
• shortest path in a graph: the input has two items – (V,E) –vertices and edges
Execution time: number of primitive/atomic operations executed
Operations are defined independently of a specific machine
Do you think call of a sub-routine is an atomic operation?
Alexandra 6th February 2013 Lesson 1 18 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
In a nutshell
blackboard...
blue: 0.5n2 + n black: 0.5n2 red: 2n green: lg(n)
Alexandra 6th February 2013 Lesson 1 19 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
In a nutshell
blackboard...
blue: 0.5n2 + n black: 0.5n2 red: 2n green: lg(n)
Alexandra 6th February 2013 Lesson 1 19 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Impact of complexity
Alexandra 6th February 2013 Lesson 1 20 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Example: Looking up a word in a dictionary
Alexandra 6th February 2013 Lesson 1 21 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Example: Looking up a word in a dictionary
Alexandra 6th February 2013 Lesson 1 22 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
How to compare execution functions
We define classes of functions.
Intuitively: f ∈ O(g): f does not grow faster than g . e.gT (n) = 4n2 − 2n + 2is in O(n2).More formally: ∀∗ means that there exists a point x0 wherefunction f is below cg .
Alexandra 6th February 2013 Lesson 1 23 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
How to compare execution functions
We define classes of functions.
Intuitively: f ∈ O(g): f does not grow faster than g . e.gT (n) = 4n2 − 2n + 2
is in O(n2).More formally: ∀∗ means that there exists a point x0 wherefunction f is below cg .
Alexandra 6th February 2013 Lesson 1 23 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
How to compare execution functions
We define classes of functions.
Intuitively: f ∈ O(g): f does not grow faster than g . e.gT (n) = 4n2 − 2n + 2is in O(n2).
More formally: ∀∗ means that there exists a point x0 wherefunction f is below cg .
Alexandra 6th February 2013 Lesson 1 23 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
How to compare execution functions
We define classes of functions.
Intuitively: f ∈ O(g): f does not grow faster than g . e.gT (n) = 4n2 − 2n + 2is in O(n2).More formally: ∀∗ means that there exists a point x0 wherefunction f is below cg .
Alexandra 6th February 2013 Lesson 1 23 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
How to compare execution functions
Figure: Example: f ∈ O(g). Important: need to provide x0 and c!(exercises)
Alexandra 6th February 2013 Lesson 1 24 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
How to compare execution functions
Figure: Example: f ∈ O(g).
Important: need to provide x0 and c!(exercises)
Alexandra 6th February 2013 Lesson 1 24 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
How to compare execution functions
Figure: Example: f ∈ O(g). Important: need to provide x0 and c!(exercises)Alexandra 6th February 2013 Lesson 1 24 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Algorithms: Searching
Alexandra 6th February 2013 Lesson 1 25 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Example I : Linear search in a vector
int linsearch(int *v, int a, int b, int k)
int i;
i=a;
while ((i<=b) && (v[i]!=k))
i++;
if (i>b)
return -1;
else return i;
Cost
c1c2c3c4c5c5
repetitions
1m+1m111
m is the number of time i++ executes.Obs1: These value depends on the while loop condition being true– the position i is in-between a and b, that is: 0 ≤ m ≤ b − a + 1.
Alexandra 6th February 2013 Lesson 1 26 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Example I : Linear search in a vector
int linsearch(int *v, int a, int b, int k)
int i;
i=a;
while ((i<=b) && (v[i]!=k))
i++;
if (i>b)
return -1;
else return i;
Cost
c1c2c3c4c5c5
repetitions
1m+1m111
m is the number of time i++ executes.Obs1: These value depends on the while loop condition being true– the position i is in-between a and b, that is: 0 ≤ m ≤ b − a + 1.
Alexandra 6th February 2013 Lesson 1 26 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Example I : Linear search in a vector
int linsearch(int *v, int a, int b, int k)
int i;
i=a;
while ((i<=b) && (v[i]!=k))
i++;
if (i>b)
return -1;
else return i;
Cost
c1c2c3c4c5c5
repetitions
1m+1m111
m is the number of time i++ executes.
Obs1: These value depends on the while loop condition being true– the position i is in-between a and b, that is: 0 ≤ m ≤ b − a + 1.
Alexandra 6th February 2013 Lesson 1 26 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Example I : Linear search in a vector
int linsearch(int *v, int a, int b, int k)
int i;
i=a;
while ((i<=b) && (v[i]!=k))
i++;
if (i>b)
return -1;
else return i;
Cost
c1c2c3c4c5c5
repetitions
1m+1m111
m is the number of time i++ executes.Obs1: These value depends on the while loop condition being true– the position i is in-between a and b, that is: 0 ≤ m ≤ b − a + 1.
Alexandra 6th February 2013 Lesson 1 26 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total Execution Time
T (n) = c1 + c2(m + 1) + c3m + c4 + c5
For a given n (the size of the input to search, n = b − a + 1), thevalue T (n) can vary: why? Depends on when the element is found.
Best case scenario: The value k is in the first position (k =
v[a]). Then:T (n) = (c1 + c2 + c4 + c5)
T(n) is constant
Worst case scenario: the value in not found.
T (n) = c1+c2(n+1)+c3(n)+c4+c5 = (c2+c3)n+(c1+c2+c4+c5)
T(n) is linear
Alexandra 6th February 2013 Lesson 1 27 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total Execution Time
T (n) = c1 + c2(m + 1) + c3m + c4 + c5
For a given n (the size of the input to search, n = b − a + 1), thevalue T (n) can vary: why?
Depends on when the element is found.
Best case scenario: The value k is in the first position (k =
v[a]). Then:T (n) = (c1 + c2 + c4 + c5)
T(n) is constant
Worst case scenario: the value in not found.
T (n) = c1+c2(n+1)+c3(n)+c4+c5 = (c2+c3)n+(c1+c2+c4+c5)
T(n) is linear
Alexandra 6th February 2013 Lesson 1 27 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total Execution Time
T (n) = c1 + c2(m + 1) + c3m + c4 + c5
For a given n (the size of the input to search, n = b − a + 1), thevalue T (n) can vary: why? Depends on when the element is found.
Best case scenario: The value k is in the first position (k =
v[a]). Then:T (n) = (c1 + c2 + c4 + c5)
T(n) is constant
Worst case scenario: the value in not found.
T (n) = c1+c2(n+1)+c3(n)+c4+c5 = (c2+c3)n+(c1+c2+c4+c5)
T(n) is linear
Alexandra 6th February 2013 Lesson 1 27 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total Execution Time
T (n) = c1 + c2(m + 1) + c3m + c4 + c5
For a given n (the size of the input to search, n = b − a + 1), thevalue T (n) can vary: why? Depends on when the element is found.
Best case scenario: The value k is in the first position (k =
v[a]). Then:T (n) = (c1 + c2 + c4 + c5)
T(n) is constant
Worst case scenario: the value in not found.
T (n) = c1+c2(n+1)+c3(n)+c4+c5 = (c2+c3)n+(c1+c2+c4+c5)
T(n) is linear
Alexandra 6th February 2013 Lesson 1 27 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Example II : search for duplicates
void dup(int *v,int a,int b)
int i,j;
for (i=a;i<b;i++)
for (j=i+1;j<=b;j++)
if (v[i]==v[j])
printf("%d equals to %d\n",i,j);
Cost
c1c2c3c4
repetitions
NS1
S2
S2
N = b− a + 1 (input size); S1 =∑b−1
i=a (ni + 1); S2 =∑b−1
i=a ni andni = b − i number of times the inner for executes, for each i .
Alexandra 6th February 2013 Lesson 1 28 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Example II : search for duplicates
void dup(int *v,int a,int b)
int i,j;
for (i=a;i<b;i++)
for (j=i+1;j<=b;j++)
if (v[i]==v[j])
printf("%d equals to %d\n",i,j);
Cost
c1c2c3c4
repetitions
NS1
S2
S2
N = b− a + 1 (input size); S1 =∑b−1
i=a (ni + 1); S2 =∑b−1
i=a ni andni = b − i number of times the inner for executes, for each i .
Alexandra 6th February 2013 Lesson 1 28 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Example II : search for duplicates
void dup(int *v,int a,int b)
int i,j;
for (i=a;i<b;i++)
for (j=i+1;j<=b;j++)
if (v[i]==v[j])
printf("%d equals to %d\n",i,j);
Cost
c1c2c3c4
repetitions
NS1
S2
S2
N = b− a + 1 (input size); S1 =∑b−1
i=a (ni + 1); S2 =∑b−1
i=a ni andni = b − i number of times the inner for executes, for each i .
Alexandra 6th February 2013 Lesson 1 28 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total time of execution
T (N) = c1N + c2S1 + c3S2 + c4S2
In this algorithm the best and worst case coincide: no matter whatthe size of the input, the for cycles are executed the same numberof times.Let us take a = 1 and b = N. Then:
S2 =N−1∑i=1
N − i = (N − 1)N − (N−1)N2 = 1
2N2 − 12N
S1 =N−1∑i=1
(N − i + 1) = (N − 1)(N + 1)− (N−1)N2 = 1
2N2 − 12N − 1
T (N) is a quadratic function: T (N) = k2N2 + k1N + k0.
Alexandra 6th February 2013 Lesson 1 29 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total time of execution
T (N) = c1N + c2S1 + c3S2 + c4S2
In this algorithm the best and worst case coincide: no matter whatthe size of the input, the for cycles are executed the same numberof times.
Let us take a = 1 and b = N. Then:
S2 =N−1∑i=1
N − i = (N − 1)N − (N−1)N2 = 1
2N2 − 12N
S1 =N−1∑i=1
(N − i + 1) = (N − 1)(N + 1)− (N−1)N2 = 1
2N2 − 12N − 1
T (N) is a quadratic function: T (N) = k2N2 + k1N + k0.
Alexandra 6th February 2013 Lesson 1 29 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total time of execution
T (N) = c1N + c2S1 + c3S2 + c4S2
In this algorithm the best and worst case coincide: no matter whatthe size of the input, the for cycles are executed the same numberof times.Let us take a = 1 and b = N. Then:
S2 =N−1∑i=1
N − i = (N − 1)N − (N−1)N2 = 1
2N2 − 12N
S1 =N−1∑i=1
(N − i + 1) = (N − 1)(N + 1)− (N−1)N2 = 1
2N2 − 12N − 1
T (N) is a quadratic function: T (N) = k2N2 + k1N + k0.
Alexandra 6th February 2013 Lesson 1 29 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total time of execution
T (N) = c1N + c2S1 + c3S2 + c4S2
In this algorithm the best and worst case coincide: no matter whatthe size of the input, the for cycles are executed the same numberof times.Let us take a = 1 and b = N. Then:
S2 =N−1∑i=1
N − i = (N − 1)N − (N−1)N2 = 1
2N2 − 12N
S1 =N−1∑i=1
(N − i + 1) = (N − 1)(N + 1)− (N−1)N2 = 1
2N2 − 12N − 1
T (N) is a quadratic function: T (N) = k2N2 + k1N + k0.
Alexandra 6th February 2013 Lesson 1 29 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total time of execution
T (N) = c1N + c2S1 + c3S2 + c4S2
In this algorithm the best and worst case coincide: no matter whatthe size of the input, the for cycles are executed the same numberof times.Let us take a = 1 and b = N. Then:
S2 =N−1∑i=1
N − i = (N − 1)N − (N−1)N2 = 1
2N2 − 12N
S1 =N−1∑i=1
(N − i + 1) = (N − 1)(N + 1)− (N−1)N2 = 1
2N2 − 12N − 1
T (N) is a quadratic function: T (N) = k2N2 + k1N + k0.
Alexandra 6th February 2013 Lesson 1 29 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Some remarks
We simplified the analysis:
• we used abstract costs ci instead of concrete times
We simplify even further: for a large enough N the term with N2 isso much larger than the other terms that we can say that theexecution time of dup is approximated by
T (N) = kN2
And in fact k is typically also not relevant. So, we can say that theexecution time is
Θ(N2)
Alexandra 6th February 2013 Lesson 1 30 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Some further remarks
Analisys of worst case is useful:
• it’s a guarantee: upper limit for any input
• it occurs often (more than one would wish; e.g. search ofinexistent information)
• often the average case is very close to the worst case
Analysis of the average case involves (advanced) probabilistic studyof the dimension and type of input (e.g. what is the probability avector is almost sorted?; what is the average size? )
Simplifying further: we will in general assume that, for a givendimension, all inputs occur with the same probability.
Alexandra 6th February 2013 Lesson 1 31 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Some further remarks
Analisys of worst case is useful:
• it’s a guarantee: upper limit for any input
• it occurs often (more than one would wish; e.g. search ofinexistent information)
• often the average case is very close to the worst case
Analysis of the average case involves (advanced) probabilistic studyof the dimension and type of input (e.g. what is the probability avector is almost sorted?; what is the average size? )
Simplifying further: we will in general assume that, for a givendimension, all inputs occur with the same probability.
Alexandra 6th February 2013 Lesson 1 31 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Intermezzo
We can classify algorithms in terms of the strategy they use tosolve a problem:
• Incremental – (e.g insertion sort, which we will see next).
• Divide and conquer – (e.g mergesort and quicksort).
• Greedy – (e.g Minimum Spanning Tree).
• Dinamyc programming – (e.g All-Pairs-Shortest- Path).
• Randomized algorithms – (e.g randomized quicksort).
Alexandra 6th February 2013 Lesson 1 32 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Case study I: Insertion sort
Problem: You’re given a list of numbers (integers) and you wantto order them. We want to do this on a list given in an array whichis to be re-ordered ( 6= construct a new list).
• look at the cards
• pick the lower one of a club;put it to the left; search forthe next card of that cluband continue until you haveall the cards inside each clubordered.
Alexandra 6th February 2013 Lesson 1 33 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Case study I: Insertion sort
Problem: You’re given a list of numbers (integers) and you wantto order them. We want to do this on a list given in an array whichis to be re-ordered ( 6= construct a new list).
• look at the cards
• pick the lower one of a club;put it to the left; search forthe next card of that cluband continue until you haveall the cards inside each clubordered.
Alexandra 6th February 2013 Lesson 1 33 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Case study I: Insertion sort –example
Alexandra 6th February 2013 Lesson 1 34 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Case study I: Insertion sort – algorithm
void insertion_sort(int A[])
for (j=2 ; j<=N ; j++)
key = A[j]; // store the current elm in a tmp record
i = j-1;
while (i>0 && A[i] > key)
/* search for the position where A[j] belongs */
A[i+1] = A[i]; /* shift the rest of the greater
elements down */
i--;
A[i+1] = key; // place the element
Alexandra 6th February 2013 Lesson 1 35 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Case study I: Insertion sort – analysis
Execution time will depend on several things.
• dimension of the list
• how ordered it is already
But let’s again take it a step at a time . . .
Alexandra 6th February 2013 Lesson 1 36 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Case study I: Insertion sort – analysis
void insertion_sort(int A[])
for (j=2 ; j<=N ; j++)
key = A[j];
i = j-1;
while (i>0 && A[i] > key)
A[i+1] = A[i];
i--;
A[i+1] = key;
Cost
c1c2c3c4c5c6
c7
repetitions
NN − 1N − 1S1
S2
S2
N − 1
where S1 =∑N
j=2 nj ; S2 =∑N
j=2(nj − 1), where nj is the numberof times the while is executed, for each value of j
Alexandra 6th February 2013 Lesson 1 37 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total execution time
T (N) = c1N +c2(N−1)+c3(N−1)+c4S1+c5S2+c6S2+c7(N−1)
Depending on the input the time can vary.
Best case:
The vector is already sorted
nj = 1 for j = 2, . . . ,N; Hence S1 = N?1 and S2 = 0;
Thus:
T (N) = (c1 + c2 + c3 + c4 + c7)N − (c2 + c3 + c4 + c7)
T (N) linear: in the best case we have an execution time in Θ(N).
Alexandra 6th February 2013 Lesson 1 38 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total execution time
T (N) = c1N +c2(N−1)+c3(N−1)+c4S1+c5S2+c6S2+c7(N−1)
Depending on the input the time can vary.
Best case: The vector is already sorted
nj = 1 for j = 2, . . . ,N; Hence S1 = N?1 and S2 = 0;
Thus:
T (N) = (c1 + c2 + c3 + c4 + c7)N − (c2 + c3 + c4 + c7)
T (N) linear: in the best case we have an execution time in Θ(N).
Alexandra 6th February 2013 Lesson 1 38 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total execution time
T (N) = c1N +c2(N−1)+c3(N−1)+c4S1+c5S2+c6S2+c7(N−1)
Depending on the input the time can vary.
Best case: The vector is already sorted
nj = 1 for j = 2, . . . ,N; Hence S1 = N?1 and S2 = 0;
Thus:
T (N) = (c1 + c2 + c3 + c4 + c7)N − (c2 + c3 + c4 + c7)
T (N) linear: in the best case we have an execution time in Θ(N).
Alexandra 6th February 2013 Lesson 1 38 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total execution time
Worst case:
The vector is ordered backwards (from the greatestto the smallest element.)
nj = j for j = 2, . . . ,N; Hence
S1 =N∑j=2
j =N(N + 1)
2− 1 and S2 =
N∑j=2
(j − 1) =N(N − 1)
2;
Thus:
T (N) = 12(c4 + c5 + c6)N2 + (c1 + c2 + c3 + .5c4 − .5c5 − .5c6 + c7)N−(c2 + c3 + c4 + c7)
T (N) quadratic: worst case has an execution time in Θ(N2).We can say the time of execution is in Ω(N) and O(N2).
Alexandra 6th February 2013 Lesson 1 39 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total execution time
Worst case: The vector is ordered backwards (from the greatestto the smallest element.)
nj = j for j = 2, . . . ,N; Hence
S1 =N∑j=2
j =N(N + 1)
2− 1 and S2 =
N∑j=2
(j − 1) =N(N − 1)
2;
Thus:
T (N) = 12(c4 + c5 + c6)N2 + (c1 + c2 + c3 + .5c4 − .5c5 − .5c6 + c7)N−(c2 + c3 + c4 + c7)
T (N) quadratic: worst case has an execution time in Θ(N2).We can say the time of execution is in Ω(N) and O(N2).
Alexandra 6th February 2013 Lesson 1 39 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total execution time
Worst case: The vector is ordered backwards (from the greatestto the smallest element.)
nj = j for j = 2, . . . ,N; Hence
S1 =N∑j=2
j =N(N + 1)
2− 1 and S2 =
N∑j=2
(j − 1) =N(N − 1)
2;
Thus:
T (N) = 12(c4 + c5 + c6)N2 + (c1 + c2 + c3 + .5c4 − .5c5 − .5c6 + c7)N−(c2 + c3 + c4 + c7)
T (N) quadratic: worst case has an execution time in Θ(N2).
We can say the time of execution is in Ω(N) and O(N2).
Alexandra 6th February 2013 Lesson 1 39 / 39
IntroductionBasic information
Searching algorithmsSorting algorithms
Radboud University Nijmegen
Total execution time
Worst case: The vector is ordered backwards (from the greatestto the smallest element.)
nj = j for j = 2, . . . ,N; Hence
S1 =N∑j=2
j =N(N + 1)
2− 1 and S2 =
N∑j=2
(j − 1) =N(N − 1)
2;
Thus:
T (N) = 12(c4 + c5 + c6)N2 + (c1 + c2 + c3 + .5c4 − .5c5 − .5c6 + c7)N−(c2 + c3 + c4 + c7)
T (N) quadratic: worst case has an execution time in Θ(N2).We can say the time of execution is in Ω(N) and O(N2).
Alexandra 6th February 2013 Lesson 1 39 / 39