01 Analysis of Algorithms: Introduction

Preview:

Citation preview

Analysis of AlgorithmsIntroduction

Andres Mendez-Vazquez

September 27, 2015

1 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

2 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

3 / 36

Introduction

Informal definitionInformally, an algorithm is any well defined computational procedure that

It takes some value, or set of values, as input.Then, it produces some value, or set of values, as output.

Examples

4 / 36

Introduction

Informal definitionInformally, an algorithm is any well defined computational procedure that

It takes some value, or set of values, as input.Then, it produces some value, or set of values, as output.

Examples

4 / 36

Introduction

Informal definitionInformally, an algorithm is any well defined computational procedure that

It takes some value, or set of values, as input.Then, it produces some value, or set of values, as output.

Examples

4 / 36

Introduction

Informal definitionInformally, an algorithm is any well defined computational procedure that

It takes some value, or set of values, as input.Then, it produces some value, or set of values, as output.

ExamplesALGORITHMINPUT

Cluster 1 (7)

OUTPUT

4 / 36

Example

Sorting ProblemInput: A sequence of N numbers a1, a2, ..., aN

Output: A reordering of the input sequence a(1), a(2), ..., a(N)

ActuallyWe are dealing with instances of a problem.

5 / 36

Example

Sorting ProblemInput: A sequence of N numbers a1, a2, ..., aN

Output: A reordering of the input sequence a(1), a(2), ..., a(N)

ActuallyWe are dealing with instances of a problem.

5 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

6 / 36

Instance of a Problem

Instance of the problemFor example, we have

I 9, 8, 5, 6, 7, 4, 3, 2, 1

Then, we finish withI 1, 2, 3, 4, 5, 6, 7, 8, 9

7 / 36

Although Instances are Important

NeverthelessThe way we use those instances is way more important

For exampleLook at Recursive Fibonacci!!!

8 / 36

Although Instances are Important

NeverthelessThe way we use those instances is way more important

For exampleLook at Recursive Fibonacci!!!

8 / 36

Example: Fibonacci

Fibonacci rule

Fn =

Fn−1 + Fn−2 if n > 11 if n = 10 if n = 0

Time Complexity1 Naive version using directly the recursion - exponential time.2 A more elegant version - linear time.

9 / 36

Example: Fibonacci

Fibonacci rule

Fn =

Fn−1 + Fn−2 if n > 11 if n = 10 if n = 0

Time Complexity1 Naive version using directly the recursion - exponential time.2 A more elegant version - linear time.

9 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

10 / 36

Kolmogorov’s DefinitionA bound for each sub-step

An algorithmic process splits into steps whose complexity is bounded in advanceI i.e., the bound is independent of the input and the current state of the

computation.

Transformations done at each stepEach step consists of a direct and immediate transformation of the current state.This transformation applies only to the active part of the state and does not alterthe remainder of the state.

Size of the stepsThe size of the active part is bounded in advance.

Ending the ProcessThe process runs until either the next step is impossible or a signal says thesolution has been reached.

11 / 36

Kolmogorov’s DefinitionA bound for each sub-step

An algorithmic process splits into steps whose complexity is bounded in advanceI i.e., the bound is independent of the input and the current state of the

computation.

Transformations done at each stepEach step consists of a direct and immediate transformation of the current state.This transformation applies only to the active part of the state and does not alterthe remainder of the state.

Size of the stepsThe size of the active part is bounded in advance.

Ending the ProcessThe process runs until either the next step is impossible or a signal says thesolution has been reached.

11 / 36

Kolmogorov’s DefinitionA bound for each sub-step

An algorithmic process splits into steps whose complexity is bounded in advanceI i.e., the bound is independent of the input and the current state of the

computation.

Transformations done at each stepEach step consists of a direct and immediate transformation of the current state.This transformation applies only to the active part of the state and does not alterthe remainder of the state.

Size of the stepsThe size of the active part is bounded in advance.

Ending the ProcessThe process runs until either the next step is impossible or a signal says thesolution has been reached.

11 / 36

Kolmogorov’s DefinitionA bound for each sub-step

An algorithmic process splits into steps whose complexity is bounded in advanceI i.e., the bound is independent of the input and the current state of the

computation.

Transformations done at each stepEach step consists of a direct and immediate transformation of the current state.This transformation applies only to the active part of the state and does not alterthe remainder of the state.

Size of the stepsThe size of the active part is bounded in advance.

Ending the ProcessThe process runs until either the next step is impossible or a signal says thesolution has been reached.

11 / 36

Kolmogorov’s DefinitionA bound for each sub-step

An algorithmic process splits into steps whose complexity is bounded in advanceI i.e., the bound is independent of the input and the current state of the

computation.

Transformations done at each stepEach step consists of a direct and immediate transformation of the current state.This transformation applies only to the active part of the state and does not alterthe remainder of the state.

Size of the stepsThe size of the active part is bounded in advance.

Ending the ProcessThe process runs until either the next step is impossible or a signal says thesolution has been reached.

11 / 36

Kolmogorov’s DefinitionA bound for each sub-step

An algorithmic process splits into steps whose complexity is bounded in advanceI i.e., the bound is independent of the input and the current state of the

computation.

Transformations done at each stepEach step consists of a direct and immediate transformation of the current state.This transformation applies only to the active part of the state and does not alterthe remainder of the state.

Size of the stepsThe size of the active part is bounded in advance.

Ending the ProcessThe process runs until either the next step is impossible or a signal says thesolution has been reached.

11 / 36

BTW

How do they look this machines, this algorithms?After all we like to see them!!!

12 / 36

An Example of an Algorithm

Insertion Sort AlgorithmData: Unsorted Sequence AResult: Sort Sequence AInsertion Sort(A)for j ← 2 to lenght(A) do

key ← A[j];// Insert A[j] into the sorted sequence A[1, ..., j − 1]i ← j − 1;while i > 0 and A[i] > key do

A[i + 1]← A[i];i ← i − 1;

endA[i + 1]← key

end

13 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

14 / 36

Problems Solved By Algorithms

Single-SourceShortest Path.Solving systemsof linearequations.Huffman codesMatrixMultiplicationConvex hull

Short Paths in MapsThese algorithms allows to solve theproblem of finding the shortest pathin a map between two addresses.

@Copyright 2010-2011 Daniel Kastl,Frédéric Junod. Mis à jour le Apr 02, 2012.

15 / 36

Problems Solved By Algorithms

Single-SourceShortest Path.Solving systemsof linearequations.Huffman codesMatrixMultiplicationConvex hull

Inverting MatricesNormally, given the system Ax = y,we do not use the inverse A−1, butthe LUP decomposition

L D U R

@Copyright From Wikimedia Commons, thefree media repository

15 / 36

Problems Solved By Algorithms

Single-SourceShortest Path.Solving systemsof linearequations.Huffman codesMatrixMultiplicationConvex hull

Compression TreesThis method is part of the greedymethods. They are used forcompression, they can achieve 20%to 90% compression.

8

17

41

24

109

5

3 2 2 2 2

6

2 3 4

7

14

3

22

1 1

2

4

7

2

1111

4 4

' '

'U' 'A' 'L' 'M'

'E'

'D' 'F' 'N'

'S'

'B' 'H'

'O'

'J' 'P' 'R' 'T'

@Copyright From Wikimedia Commons, thefree media repository

15 / 36

Problems Solved By Algorithms

Single-SourceShortest Path.Solving systemsof linearequations.Huffman codesMatrixMultiplicationConvex hull

Fast Multiplication of MatricesIn many algorithms, we want tomultiply different n × n matrices

A11 A12 A21 A22

B11

B12

B21

B22

C11

11

C12 11

C21

11

C22 11

1

11

1

1 1

11

1 1

-1-1

1-1

1-1

1-1

1-1

1 1

-1-1

1

1

-1

-1

1

1

-1

-1

M1 M2 M3 M4 M5 M6 M7

STRASSEN'S ALGORITHM@Copyright From Wikimedia Commons, thefree media repository

15 / 36

Problems Solved By Algorithms

Single-SourceShortest Path.Solving systemsof linearequations.Huffman codesMatrixMultiplicationConvex hull

Computational GeometryGiven the points in a plane, we wantto find the minimum convex hull thatencloses them.

p0

p1

p2

p3

@Copyright From Wikimedia Commons, thefree media repository

15 / 36

Problems Solved By Algorithms

Synthetic BiologyPattern RecognitionDatabasesFace Recognition

Computational Molecular EngineeringIn this field the engineers and biologist try to use thebasis of life to create complex molecular machines.All these machines will requiere complex algorithms

@Copyright 2002-2013 SYNTHETICCOMPONENTS NETWORK University of Bristol

16 / 36

Problems Solved By Algorithms

Synthetic BiologyPattern RecognitionDatabasesFace Recognition

Machine LearningIn pattern recognition, we try to find specificpatterns in data.

@2013Copyright Bülent Üstün, Department ofAnalytical Chemistry, University of Nijmegen

16 / 36

Problems Solved By Algorithms

Synthetic BiologyPattern RecognitionDatabasesFace Recognition

Partition of the Database SpaceA grid file or bucket grid is a point access method:

Query A1 = 'x' and A2 = 6

a f k p z

A2

A1

Grid Array

Pointers to buckets

0 2 7 10 15Intervals DefineSearch Areas

A1

Bucket Accessed

@Copyright Michael Unwalla: A mixed transactioncost model for coarse grained multi-columnpartitioning in a shared-nothing database machine

16 / 36

Problems Solved By Algorithms

Synthetic BiologyPattern RecognitionDatabasesFace Recognition

Person IdentificationFacial Recognition measure face landmarksto indentify different features in the face.

@Copyright 2013 Wouter Alberda, Olaf Kampinga

16 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

17 / 36

What will you learn in this class?1 Growth Functions2 Solving

Recursions3 Probabilistic

Analysis4 Sorting5 Median and

Order Statistics6 Review of Basic

Data Structures7 Advanced Data

Structures8 Advanced

Techniques

Basic ComplexitiesAsymptotic Notation - Ω, O andΘStandard notation and commonfunctions.

18 / 36

What will you learn in this class?1 Growth Functions2 Solving

Recursions3 Probabilistic

Analysis4 Sorting5 Median and

Order Statistics6 Review of Basic

Data Structures7 Advanced Data

Structures8 Advanced

Techniques

For finding ComplexitiesThe substitution method.The recursive three method.The master method.

18 / 36

What will you learn in this class?1 Growth Functions2 Solving

Recursions3 Probabilistic

Analysis4 Sorting5 Median and

Order Statistics6 Review of Basic

Data Structures7 Advanced Data

Structures8 Advanced

Techniques

Using Probability for findingComplexities

Indicator Random Variables.Randomization Algorithms.

18 / 36

What will you learn in this class?1 Growth Functions2 Solving

Recursions3 Probabilistic

Analysis4 Sorting5 Median and

Order Statistics6 Review of Basic

Data Structures7 Advanced Data

Structures8 Advanced

Techniques

Sorting ThecniquesHeapsort.Quicksort.Sorting in linear time.

18 / 36

What will you learn in this class?1 Growth Functions2 Solving

Recursions3 Probabilistic

Analysis4 Sorting5 Median and

Order Statistics6 Review of Basic

Data Structures7 Advanced Data

Structures8 Advanced

Techniques

Finding OrderMinimum and Maximum.Selection.Worst Case Selection.

18 / 36

What will you learn in this class?1 Growth Functions2 Solving

Recursions3 Probabilistic

Analysis4 Sorting5 Median and

Order Statistics6 Review of Basic

Data Structures7 Advanced Data

Structures8 Advanced

Techniques

Basic Data StructuresElementary data structures.Hash tables.Applications of Hash Tables

I Linear CountingBinary search trees.

18 / 36

What will you learn in this class?1 Growth Functions2 Solving

Recursions3 Probabilistic

Analysis4 Sorting5 Median and

Order Statistics6 Review of Basic

Data Structures7 Advanced Data

Structures8 Advanced

Techniques

Advanced Data StructuresB-Trees.Fibonacci Heaps.Data Structures for DisjointSets.

18 / 36

What will you learn in this class?1 Growth Functions2 Solving

Recursions3 Probabilistic

Analysis4 Sorting5 Median and

Order Statistics6 Review of Basic

Data Structures7 Advanced Data

Structures8 Advanced

Techniques

Advanced TechniquesDynamic Programming.Greedy Algorithms.Amortized Analysis.Introduction to AnalyticCombinatronic

18 / 36

What will you learn in this class?

1 Graph Algorithms2 Selected Topics3 NP-Completeness4 Approximation

Algorithm

Graph AlgorithmsElementary Graph Algorithms.Minimum Spanning Trees.Strongly Connectedcomponents.Single-Source Shortest Paths.All-Pairs Shortest Paths.

19 / 36

What will you learn in this class?

1 Graph Algorithms2 Selected Topics3 NP-Completeness4 Approximation

Algorithm

ApplicationsMultithreaded Algorithms.String Matching.Computational Geometry

19 / 36

What will you learn in this class?

1 Graph Algorithms2 Selected Topics3 NP-Completeness4 Approximation

Algorithm

The Hard ProblemEncodings.Polynomial Time Verification.Polynomial Reduction.NP-Hard.NP-Complete proofs.A family of NP-Problems

19 / 36

What will you learn in this class?

1 Graph Algorithms2 Selected Topics3 NP-Completeness4 Approximation

Algorithm

Dealing with NPIf almost everything is NP, What todo?

BacktrackingBranch and BoundApproximation Algorithms

19 / 36

Now, what we are going to look at!!!

FirstSome stuff about notation!!!

SecondWhat abstraction of a Computer to use?

ThirdA first approach to analyzing algorithms!!!

20 / 36

Now, what we are going to look at!!!

FirstSome stuff about notation!!!

SecondWhat abstraction of a Computer to use?

ThirdA first approach to analyzing algorithms!!!

20 / 36

Now, what we are going to look at!!!

FirstSome stuff about notation!!!

SecondWhat abstraction of a Computer to use?

ThirdA first approach to analyzing algorithms!!!

20 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

21 / 36

Please follow these simple rules

Insertion Sort(A)1 for j ← 2 to length(A)2 do3 key ← A[j]4 IInsert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

RuleAlways put the name of the algorithm at the top.Together with the input.

22 / 36

Please follow these simple rulesInsertion Sort(A)

1 for j ← 2 to length(A)2 do3 key ← A[j]4 IInsert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

RuleAlways initialize all the variables.The a ← b means that the value b is passed to a. You also can use"=."

22 / 36

Please follow these simple rules

Insertion Sort(A)1 for j ← 2 to length(A)2 do3 key ← A[j]4 IInsert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

RuleUse identation to preserve the block structure avoiding clutter

22 / 36

Please follow these simple rules

Insertion Sort(A)1 for j ← 2 to length(A)2 do3 key ← A[j]4 IInsert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

RuleIt corresponds to comments. You can also use "//"

22 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

23 / 36

The Random-Access MachineDefinitionA Random Access Machine (RAM) is an abstract computational-machinemodel identical to a multiple-register counter machine with the addition ofindirect addressing.

InstructionsInstructions are executed one after another.

It contains arithmetic instructions found in low level languages.It has control instructions: Conditional and unconditional branches,return and call functions.It is able to do data movement: load, store, copy.It posses data types: integer and floating point.

Memory ModelA single block of memory is assumed.

24 / 36

The Random-Access MachineDefinitionA Random Access Machine (RAM) is an abstract computational-machinemodel identical to a multiple-register counter machine with the addition ofindirect addressing.

InstructionsInstructions are executed one after another.

It contains arithmetic instructions found in low level languages.It has control instructions: Conditional and unconditional branches,return and call functions.It is able to do data movement: load, store, copy.It posses data types: integer and floating point.

Memory ModelA single block of memory is assumed.

24 / 36

The Random-Access MachineDefinitionA Random Access Machine (RAM) is an abstract computational-machinemodel identical to a multiple-register counter machine with the addition ofindirect addressing.

InstructionsInstructions are executed one after another.

It contains arithmetic instructions found in low level languages.It has control instructions: Conditional and unconditional branches,return and call functions.It is able to do data movement: load, store, copy.It posses data types: integer and floating point.

Memory ModelA single block of memory is assumed.

24 / 36

The Random-Access MachineDefinitionA Random Access Machine (RAM) is an abstract computational-machinemodel identical to a multiple-register counter machine with the addition ofindirect addressing.

InstructionsInstructions are executed one after another.

It contains arithmetic instructions found in low level languages.It has control instructions: Conditional and unconditional branches,return and call functions.It is able to do data movement: load, store, copy.It posses data types: integer and floating point.

Memory ModelA single block of memory is assumed.

24 / 36

The Random-Access MachineDefinitionA Random Access Machine (RAM) is an abstract computational-machinemodel identical to a multiple-register counter machine with the addition ofindirect addressing.

InstructionsInstructions are executed one after another.

It contains arithmetic instructions found in low level languages.It has control instructions: Conditional and unconditional branches,return and call functions.It is able to do data movement: load, store, copy.It posses data types: integer and floating point.

Memory ModelA single block of memory is assumed.

24 / 36

The Random-Access MachineDefinitionA Random Access Machine (RAM) is an abstract computational-machinemodel identical to a multiple-register counter machine with the addition ofindirect addressing.

InstructionsInstructions are executed one after another.

It contains arithmetic instructions found in low level languages.It has control instructions: Conditional and unconditional branches,return and call functions.It is able to do data movement: load, store, copy.It posses data types: integer and floating point.

Memory ModelA single block of memory is assumed.

24 / 36

The Random-Access MachineDefinitionA Random Access Machine (RAM) is an abstract computational-machinemodel identical to a multiple-register counter machine with the addition ofindirect addressing.

InstructionsInstructions are executed one after another.

It contains arithmetic instructions found in low level languages.It has control instructions: Conditional and unconditional branches,return and call functions.It is able to do data movement: load, store, copy.It posses data types: integer and floating point.

Memory ModelA single block of memory is assumed.

24 / 36

RAM ModelWe have that

Control System

Memory With Random Access

Infinite

Register 1

Register 2

Register N

Inst

Inst

Inst

Inst

Inst

Inst

Inst

Inst

25 / 36

Although there are other equivalent models

Von Neumann architecture scheme

ArithmeticLogicUnit

ControlUnit

Memory

Input Output

Accumulator

26 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

27 / 36

Input Size and Running Time

DefinitionThe Input Size depends on the type of problem. We will indicate whichinput size is used per problem.

DefinitionThe Running Time of an algorithm is the number of of primitivesoperations or steps executed. For now, we will assume that each line in analgorithm takes ci a constant time.

28 / 36

Input Size and Running Time

DefinitionThe Input Size depends on the type of problem. We will indicate whichinput size is used per problem.

DefinitionThe Running Time of an algorithm is the number of of primitivesoperations or steps executed. For now, we will assume that each line in analgorithm takes ci a constant time.

28 / 36

Even Babbage cared about how many turns of the crankwere necessary!!!

Look at the crank!!!

29 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

30 / 36

Counting the Operations

Insertion Sort(A) I length(A):=N1 for j← 2 to length(A)2 do3 key ← A[j]4 I Insert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

Count Valuec1N

31 / 36

Counting the Operations

Insertion Sort(A) I length(A):=N1 for j← 2 to length(A)2 do3 key ← A[j]4 I Insert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

Count Valuec2(N − 1)

31 / 36

Counting the Operations

Insertion Sort(A) I length(A):=N1 for j← 2 to length(A)2 do3 key ← A[j]4 I Insert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

Count Valuec3(N − 1)

31 / 36

Counting the Operations

Insertion Sort(A) I length(A):=N1 for j← 2 to length(A)2 do3 key ← A[j]4 I Insert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

Count Valuec4∑N

j=2 j

31 / 36

Counting the Operations

Insertion Sort(A) I length(A):=N1 for j← 2 to length(A)2 do3 key ← A[j]4 I Insert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

Count Valuec5∑N

j=2(j − 1)

31 / 36

Counting the Operations

Insertion Sort(A) I length(A):=N1 for j← 2 to length(A)2 do3 key ← A[j]4 I Insert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

Count Valuec6∑N

j=2(j − 1)

31 / 36

Counting the Operations

Insertion Sort(A) I length(A):=N1 for j← 2 to length(A)2 do3 key ← A[j]4 I Insert A[j] into the sorted sequence A[1, ..., j − 1]5 i ← j − 16 while i > 0 and A[i] > key7 do8 A[i + 1]← A[i]9 i ← i − 110 A[i + 1]← key

Count Valuec7(N − 1)

31 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

32 / 36

Building a function for Analyzing Complexities

What can we do with all these quantities?Sum them all to get a step count that can be related to computationalcomplexities!!!

Counting EquationT (N ) = c1N + c2(N − 1) + c3(N − 1) + c4

(N(N+1)

2 − 1)

+ ...

c5(

N(N−1)2

)+ c6

(N(N−1)

2

)+ c7 (N − 1)

This can be reduced to something like...T (N ) = aN 2 + bN + c

33 / 36

Building a function for Analyzing Complexities

What can we do with all these quantities?Sum them all to get a step count that can be related to computationalcomplexities!!!

Counting EquationT (N ) = c1N + c2(N − 1) + c3(N − 1) + c4

(N(N+1)

2 − 1)

+ ...

c5(

N(N−1)2

)+ c6

(N(N−1)

2

)+ c7 (N − 1)

This can be reduced to something like...T (N ) = aN 2 + bN + c

33 / 36

Building a function for Analyzing Complexities

What can we do with all these quantities?Sum them all to get a step count that can be related to computationalcomplexities!!!

Counting EquationT (N ) = c1N + c2(N − 1) + c3(N − 1) + c4

(N(N+1)

2 − 1)

+ ...

c5(

N(N−1)2

)+ c6

(N(N−1)

2

)+ c7 (N − 1)

This can be reduced to something like...T (N ) = aN 2 + bN + c

33 / 36

Building a function for Analyzing Complexities

What can we do with all these quantities?Sum them all to get a step count that can be related to computationalcomplexities!!!

Counting EquationT (N ) = c1N + c2(N − 1) + c3(N − 1) + c4

(N(N+1)

2 − 1)

+ ...

c5(

N(N−1)2

)+ c6

(N(N−1)

2

)+ c7 (N − 1)

This can be reduced to something like...T (N ) = aN 2 + bN + c

33 / 36

Outline1 Motivation

What is an Algorithm?Instance of a ProblemKolmogorov’s Definition

2 Problems Solved By AlgorithmsWhat Problems Are Solved By Algorithms?

3 SyllabusSubjects for the Class

4 Some Notes in NotationBefore Anything, The Notation for Pseudo-Code

5 What abstraction of a Computer to use?The Random-Access Machine (RAM) Machine

6 Analyzing AlgorithmsHow Input Size affects Running TimeThe First Method: Counting Number of OperationsCounting Equation For Insertion SortThe Analysis of the Best and Worst Case Inputs

34 / 36

The Worst and The Average

1 The Worst Case2 The Average

Case

Worst SequenceUpper bound on the runningtime of an algorithm.In case of insertion sort, it willbe the permutation:N , N − 1, N − 2, ..., 3, 2, 1

35 / 36

The Worst and The Average

1 The Worst Case2 The Average

Case

Average SequenceIn the case of insertion sort,when half of the elements ofA[1, 2, ..., j − 1] are less thanA[j] and half are greater.Then, there is only the need tocheck half of the elements i.e.j2 .

35 / 36

WHY TO LOOK FOR EFFICIENT ALGORITHMS?

Example1 Insertion Sort2 Merge Sort3 Constraints

for theexample

4 Final Result

ExampleT (N ) = c1N 2

36 / 36

WHY TO LOOK FOR EFFICIENT ALGORITHMS?

Example1 Insertion Sort2 Merge Sort3 Constraints

for theexample

4 Final Result

ExampleT (N ) = c2N log2 N

36 / 36

WHY TO LOOK FOR EFFICIENT ALGORITHMS?

Example1 Insertion Sort2 Merge Sort3 Constraints

for theexample

4 Final Result

ExampleAssume, we have 106 numbers tosort, c1 = 2 for a supercomputerand c2 = 50 for a PC.The supercomputer can do 1010

instructions per second.The PC can do 107 instructions persecond.

36 / 36

WHY TO LOOK FOR EFFICIENT ALGORITHMS?

Example1 Insertion Sort2 Merge Sort3 Constraints

for theexample

4 Final Result

ExampleInsertion Sort in the Supercomputer

2(106)2 ins1010 ins/sec = 200sec

Merge Sort in the Humble PC

2(106) log(106) ins107 ins/sec = 3.9sec

36 / 36

Recommended