Alexandra Silva - cs.ru.nl

73
Introduction Basic information Searching algorithms Sorting algorithms Radboud University Nijmegen Complexity Alexandra Silva [email protected] http://www.cs.ru.nl/ ~ alexandra Institute for Computing and Information Sciences Radboud University Nijmegen 6th February 2013 Alexandra 6th February 2013 Lesson 1 1 / 39

Transcript of Alexandra Silva - cs.ru.nl

Page 1: Alexandra Silva - cs.ru.nl

IntroductionBasic information

Searching algorithmsSorting algorithms

Radboud University Nijmegen

Complexity

Alexandra Silva

[email protected]

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

Page 2: Alexandra Silva - cs.ru.nl

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

Page 3: Alexandra Silva - cs.ru.nl

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

Page 4: Alexandra Silva - cs.ru.nl

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

Page 5: Alexandra Silva - cs.ru.nl

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

Page 6: Alexandra Silva - cs.ru.nl

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

Page 7: Alexandra Silva - cs.ru.nl

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

Page 8: Alexandra Silva - cs.ru.nl

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

Page 9: Alexandra Silva - cs.ru.nl

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

Page 10: Alexandra Silva - cs.ru.nl

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

Page 11: Alexandra Silva - cs.ru.nl

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

Page 12: Alexandra Silva - cs.ru.nl

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

Page 13: Alexandra Silva - cs.ru.nl

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

Page 14: Alexandra Silva - cs.ru.nl

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

Page 15: Alexandra Silva - cs.ru.nl

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

Page 16: Alexandra Silva - cs.ru.nl

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

Page 17: Alexandra Silva - cs.ru.nl

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

Page 18: Alexandra Silva - cs.ru.nl

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

Page 19: Alexandra Silva - cs.ru.nl

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

Page 20: Alexandra Silva - cs.ru.nl

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

Page 21: Alexandra Silva - cs.ru.nl

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

Page 22: Alexandra Silva - cs.ru.nl

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

Page 23: Alexandra Silva - cs.ru.nl

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

Page 24: Alexandra Silva - cs.ru.nl

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

Page 25: Alexandra Silva - cs.ru.nl

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

Page 26: Alexandra Silva - cs.ru.nl

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

Page 27: Alexandra Silva - cs.ru.nl

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

Page 28: Alexandra Silva - cs.ru.nl

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

Page 29: Alexandra Silva - cs.ru.nl

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

Page 30: Alexandra Silva - cs.ru.nl

IntroductionBasic information

Searching algorithmsSorting algorithms

Radboud University Nijmegen

Impact of complexity

Alexandra 6th February 2013 Lesson 1 20 / 39

Page 31: Alexandra Silva - cs.ru.nl

IntroductionBasic information

Searching algorithmsSorting algorithms

Radboud University Nijmegen

Example: Looking up a word in a dictionary

Alexandra 6th February 2013 Lesson 1 21 / 39

Page 32: Alexandra Silva - cs.ru.nl

IntroductionBasic information

Searching algorithmsSorting algorithms

Radboud University Nijmegen

Example: Looking up a word in a dictionary

Alexandra 6th February 2013 Lesson 1 22 / 39

Page 33: Alexandra Silva - cs.ru.nl

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

Page 34: Alexandra Silva - cs.ru.nl

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

Page 35: Alexandra Silva - cs.ru.nl

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

Page 36: Alexandra Silva - cs.ru.nl

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

Page 37: Alexandra Silva - cs.ru.nl

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

Page 38: Alexandra Silva - cs.ru.nl

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

Page 39: Alexandra Silva - cs.ru.nl

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

Page 40: Alexandra Silva - cs.ru.nl

IntroductionBasic information

Searching algorithmsSorting algorithms

Radboud University Nijmegen

Algorithms: Searching

Alexandra 6th February 2013 Lesson 1 25 / 39

Page 41: Alexandra Silva - cs.ru.nl

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

Page 42: Alexandra Silva - cs.ru.nl

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

Page 43: Alexandra Silva - cs.ru.nl

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

Page 44: Alexandra Silva - cs.ru.nl

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

Page 45: Alexandra Silva - cs.ru.nl

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

Page 46: Alexandra Silva - cs.ru.nl

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

Page 47: Alexandra Silva - cs.ru.nl

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

Page 48: Alexandra Silva - cs.ru.nl

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

Page 49: Alexandra Silva - cs.ru.nl

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

Page 50: Alexandra Silva - cs.ru.nl

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

Page 51: Alexandra Silva - cs.ru.nl

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

Page 52: Alexandra Silva - cs.ru.nl

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

Page 53: Alexandra Silva - cs.ru.nl

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

Page 54: Alexandra Silva - cs.ru.nl

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

Page 55: Alexandra Silva - cs.ru.nl

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

Page 56: Alexandra Silva - cs.ru.nl

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

Page 57: Alexandra Silva - cs.ru.nl

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

Page 58: Alexandra Silva - cs.ru.nl

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

Page 59: Alexandra Silva - cs.ru.nl

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

Page 60: Alexandra Silva - cs.ru.nl

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

Page 61: Alexandra Silva - cs.ru.nl

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

Page 62: Alexandra Silva - cs.ru.nl

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

Page 63: Alexandra Silva - cs.ru.nl

IntroductionBasic information

Searching algorithmsSorting algorithms

Radboud University Nijmegen

Case study I: Insertion sort –example

Alexandra 6th February 2013 Lesson 1 34 / 39

Page 64: Alexandra Silva - cs.ru.nl

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

Page 65: Alexandra Silva - cs.ru.nl

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

Page 66: Alexandra Silva - cs.ru.nl

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

Page 67: Alexandra Silva - cs.ru.nl

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

Page 68: Alexandra Silva - cs.ru.nl

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

Page 69: Alexandra Silva - cs.ru.nl

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

Page 70: Alexandra Silva - cs.ru.nl

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

Page 71: Alexandra Silva - cs.ru.nl

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

Page 72: Alexandra Silva - cs.ru.nl

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

Page 73: Alexandra Silva - cs.ru.nl

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