introduction to algorithm - sjtugao-xf/algorithm/document/slide02... · 2015-03-12 · introduction...

106
Basic Concepts in Algorithmic Analysis Search and Ordering Computational Complexity Complexity Analysis Introduction to Algorithm Xiaofeng Gao Department of Computer Science and Engineering Shanghai Jiao Tong University, P.R.China X033533-Algorithm: Analysis and Theory * Special thanks is given to Prof. Yuxi Fu for sharing his teaching materials. X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 1/73

Upload: others

Post on 28-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Introduction to Algorithm∗

Xiaofeng Gao

Department of Computer Science and EngineeringShanghai Jiao Tong University, P.R.China

X033533-Algorithm: Analysis and Theory

Special thanks is given to Prof. Yuxi Fu for sharing his teaching materials.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 1/73

Page 2: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Outline

1 Basic Concepts in Algorithmic AnalysisAlgorithmTheoretical Computer Science

2 Search and OrderingSearchSort

3 Computational ComplexityTime ComplexitySpace Complexity

4 Complexity AnalysisEstimating Time ComplexityAlgorithm Analysis

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 2/73

Page 3: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

Outline

1 Basic Concepts in Algorithmic AnalysisAlgorithmTheoretical Computer Science

2 Search and OrderingSearchSort

3 Computational ComplexityTime ComplexitySpace Complexity

4 Complexity AnalysisEstimating Time ComplexityAlgorithm Analysis

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 3/73

Page 4: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

Algorithm

An algorithm is a procedure that consists of a finite set ofinstructionswhich, given aninput from some set of possible inputs, enables us toobtain anoutput through a systematic execution of the instructionsthat terminates in a finite number of steps.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 4/73

Page 5: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

Algorithm

An algorithm is a procedure that consists of a finite set ofinstructionswhich, given aninput from some set of possible inputs, enables us toobtain anoutput through a systematic execution of the instructionsthat terminates in a finite number of steps.

Theorem proving is in general not algorithmic.

Theorem verification is often algorithmic.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 4/73

Page 6: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

Quotation from Donald E. Knuth

“Computer Science is the study ofalgorithms."

——Donald E. Knuth

What is Computer Science?

Computer Science is the study of problemsolving using computing machines. Thecomputing machines must be physicallyfeasible. Donald E. Knuth

(1938 – )Stanford University

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 5/73

Page 7: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

Remark on Algorithm

The word ‘algorithm’ is derived from the nameof Muhamma ibn M usa al-Khwarizmi(780?-850?), a Muslim mathematician whoseworks introduced Arabic numerals and algebraicconcepts to Western mathematics.

The word ‘algebra’ stems from the title of hisbookKitab al jahr wa’l-muqabala".

(American Heritage Dictionary)

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 6/73

Page 8: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

Algorithm vs. Program

A program is an implementation of an algorithm, or algorithms.

A program does not necessarily terminate.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 7/73

Page 9: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

Outline

1 Basic Concepts in Algorithmic AnalysisAlgorithmTheoretical Computer Science

2 Search and OrderingSearchSort

3 Computational ComplexityTime ComplexitySpace Complexity

4 Complexity AnalysisEstimating Time ComplexityAlgorithm Analysis

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 8/73

Page 10: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

What is Computer Science?

I. Theory of Computation is to understand the notion of computationin a formal framework.

Some well known models are: the general recursive functionmodel of Gödel and Church, Church’sλ-calculus, Post systemmodel, Turing machine model, RAM, etc.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 9/73

Page 11: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

What is Computer Science?

I. Theory of Computation is to understand the notion of computationin a formal framework.

Some well known models are: the general recursive functionmodel of Gödel and Church, Church’sλ-calculus, Post systemmodel, Turing machine model, RAM, etc.

II. Computability Theory studies what problems can be solved bycomputers.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 9/73

Page 12: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

What is Computer Science?

I. Theory of Computation is to understand the notion of computationin a formal framework.

Some well known models are: the general recursive functionmodel of Gödel and Church, Church’sλ-calculus, Post systemmodel, Turing machine model, RAM, etc.

II. Computability Theory studies what problems can be solved bycomputers.

III. Computational Complexity studies how much resource isnecessary in order to solve a problem.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 9/73

Page 13: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

AlgorithmTheoretical Computer Science

What is Computer Science?

I. Theory of Computation is to understand the notion of computationin a formal framework.

Some well known models are: the general recursive functionmodel of Gödel and Church, Church’sλ-calculus, Post systemmodel, Turing machine model, RAM, etc.

II. Computability Theory studies what problems can be solved bycomputers.

III. Computational Complexity studies how much resource isnecessary in order to solve a problem.

IV. Theory of Algorithm studies how problems can be solved.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 9/73

Page 14: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Outline

1 Basic Concepts in Algorithmic AnalysisAlgorithmTheoretical Computer Science

2 Search and OrderingSearchSort

3 Computational ComplexityTime ComplexitySpace Complexity

4 Complexity AnalysisEstimating Time ComplexityAlgorithm Analysis

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 10/73

Page 15: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Linear Search, First Example of an Algorithm

The problem to start with: Search and Ordering.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 11/73

Page 16: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Linear Search, First Example of an Algorithm

The problem to start with: Search and Ordering.

Algorithm 1.1 LinearSearchInput: An arrayA[1..n] of n elements and an elementx.Output: j if x = A[j], 1≤ j ≤ n, and 0 otherwise.

1. j← 12. while j < n and x 6= A[j]3. j← j + 14. end while5. if x = A[j] then return j else return 0

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 11/73

Page 17: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Binary Search

Algorithm 1.2 BinarySearchInput: An arrayA[1..n] of n elements sorted in nondecreasing orderand an elementx.Output: j if x = A[j], 1≤ j ≤ n, and 0 otherwise.

1. low← 1; high← n; j← 02. while low ≤ high and j = 03. mid ← ⌊(low + high)/2⌋4. if x = A[mid] then j← mid break5. else ifx < A[mid] then high← mid − 16. elselow← mid + 17. end while8. return j

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 12/73

Page 18: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BinarySearch

Supposex ≥ 35. A run of BinarySearch onA[1..14] (see below) is

1 4 5 7 8 9 10 12 15 22 23 27 32 35

12 15 22 23 27 32 35

27 32 35

35

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 13/73

Page 19: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BinarySearch

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 14/73

Page 20: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BinarySearch

The complexity of the algorithm is the number of comparison.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 14/73

Page 21: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BinarySearch

The complexity of the algorithm is the number of comparison.

The number of comparison is maximum ifx ≥ A[n].

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 14/73

Page 22: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BinarySearch

The complexity of the algorithm is the number of comparison.

The number of comparison is maximum ifx ≥ A[n].The number of comparisons is the same as the number of iterations.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 14/73

Page 23: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BinarySearch

The complexity of the algorithm is the number of comparison.

The number of comparison is maximum ifx ≥ A[n].The number of comparisons is the same as the number of iterations.

In the second iteration, the number of elements inA[mid + 1..n] isexactly⌊n/2⌋.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 14/73

Page 24: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BinarySearch

The complexity of the algorithm is the number of comparison.

The number of comparison is maximum ifx ≥ A[n].The number of comparisons is the same as the number of iterations.

In the second iteration, the number of elements inA[mid + 1..n] isexactly⌊n/2⌋.In thej-th iteration, the number of elements inA[mid + 1..n] is exactly⌊n/2j−1⌋.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 14/73

Page 25: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BinarySearch

The complexity of the algorithm is the number of comparison.

The number of comparison is maximum ifx ≥ A[n].The number of comparisons is the same as the number of iterations.

In the second iteration, the number of elements inA[mid + 1..n] isexactly⌊n/2⌋.In thej-th iteration, the number of elements inA[mid + 1..n] is exactly⌊n/2j−1⌋.The maximum number of iteration is thej such that⌊n/2j−1⌋ = 1,which is equivalent toj− 1≤ logn < j.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 14/73

Page 26: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BinarySearch

The complexity of the algorithm is the number of comparison.

The number of comparison is maximum ifx ≥ A[n].The number of comparisons is the same as the number of iterations.

In the second iteration, the number of elements inA[mid + 1..n] isexactly⌊n/2⌋.In thej-th iteration, the number of elements inA[mid + 1..n] is exactly⌊n/2j−1⌋.The maximum number of iteration is thej such that⌊n/2j−1⌋ = 1,which is equivalent toj− 1≤ logn < j.

Hencej = ⌊logn⌋+ 1.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 14/73

Page 27: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Merging Two Sorted Lists

Algorithm 1.3 MergeInput: An arrayA[1..m] of elements and three indicesp, q andr. with1≤ p ≤ q < r ≤ m, such that both the subarrayA[p..q] andA[q + 1..r] are sorted individually in nondecreasing order.Output: A[p..r] contains the result of merging the two subarraysA[p..q] andA[q + 1..r].Comment: B[p..r] is an auxiliary array

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 15/73

Page 28: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Merging Two Sorted Lists

1. s← p; t← q + 1; k ← p2. while s ≤ q and t ≤ r3. if A[s] ≤ A[t] then4. B[k]← A[s]5. s← s + 16. else7. B[k]← A[t]8. t← t + 19. end if

10. k← k + 111. end while12. if s = q + 1 then B[k..r]← A[t..r]13. elseB[k..r]← A[s..q]13. end if13. A[p..r]← B[p..r]

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 16/73

Page 29: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of Merge

SupposeA[p..q] hasm elements andA[q + 1..r] hasn elements. Thenumber of comparisons done by Algorithm Merge is

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 17/73

Page 30: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of Merge

SupposeA[p..q] hasm elements andA[q + 1..r] hasn elements. Thenumber of comparisons done by Algorithm Merge is

at least minm, n;E.g. 2 3 6 and 7 11 13 45 57

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 17/73

Page 31: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of Merge

SupposeA[p..q] hasm elements andA[q + 1..r] hasn elements. Thenumber of comparisons done by Algorithm Merge is

at least minm, n;E.g. 2 3 6 and 7 11 13 45 57

at mostm + n− 1.

E.g. 2 3 66 and 7 11 13 45 57

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 17/73

Page 32: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of Merge

SupposeA[p..q] hasm elements andA[q + 1..r] hasn elements. Thenumber of comparisons done by Algorithm Merge is

at least minm, n;E.g. 2 3 6 and 7 11 13 45 57

at mostm + n− 1.

E.g. 2 3 66 and 7 11 13 45 57

If the two array sizes are⌊n/2⌋ and⌈n/2⌉, the number ofcomparisons is between⌊n/2⌋ andn− 1.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 17/73

Page 33: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Outline

1 Basic Concepts in Algorithmic AnalysisAlgorithmTheoretical Computer Science

2 Search and OrderingSearchSort

3 Computational ComplexityTime ComplexitySpace Complexity

4 Complexity AnalysisEstimating Time ComplexityAlgorithm Analysis

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 18/73

Page 34: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Selection Sort

Algorithm 1.4 SelectionSortInput: An arrayA[1..n] of n elements.Output: A[1..n] sorted in nondecreasing order.

1. for i← 1 to n− 12. k← i3. for j← i + 1 to n4. if A[j] < A[k] then k← j5. end for6. if k 6= i then interchangeA[i] andA[k]7. end for

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 19/73

Page 35: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of SelectionSort

The number of comparisons carried out by Algorithm SelectionSort isprecisely

n−1∑

i=1

(n− i) =n(n − 1)

2

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 20/73

Page 36: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Insertion Sort

Algorithm 1.5 InsertionSortInput: An arrayA[1..n] of n elements.Output: A[1..n] sorted in nondecreasing order.

1. for i← 2 to n2. x← A[i]3. j← i− 14. while j > 0 and A[j] > x5. A[j + 1]← A[j]6. j← j− 17. end while8. A[j + 1]← x9. end for

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 21/73

Page 37: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of InsertionSort

The number of comparisons carried out by Algorithm InsertionSort isat least

n− 1

and at mostn

i=2

(i− 1) =n(n − 1)

2

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 22/73

Page 38: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Bottom-Up Merge Sort

Algorithm 1.6 BottomUpSortInput: An arrayA[1..n] of n elements.Output: A[1..n] sorted in nondecreasing order.

1. t← 12. while t < n3. s← t; t← 2s; i← 04. while i + t ≤ n5. Merge(A, i + 1, i + s, i + t)6. i← i + t7. end while8. if i + s < n then Merge(A, i + 1, i + s, n)9. end while

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 23/73

Page 39: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

An Example

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 24/73

Page 40: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

SearchSort

Analysis of BottomUpSort

Suppose thatn is a power of 2, sayn = 2k.The outerwhile loop is executedk = logn times.Step 8 is never invoked.In the j-th iteration of the outerwhile loop, there are 2k−j = n/2j

pairs of arrays of size 2j−1.The number of comparisons needed in the merge of two sortedarrays in thej-th iteration is at least 2j−1 and at most 2j − 1.The number of comparisons in BottomUpSort is at least

k∑

j=1

(n2j )2

j−1 =k

j=1

n2=

n logn2

The number of comparisons in BottomUpSort is at mostk

j=1

(n2j )(2

j − 1) =k

j=1

(n− n2j ) = n logn− n + 1

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 25/73

Page 41: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Outline

1 Basic Concepts in Algorithmic AnalysisAlgorithmTheoretical Computer Science

2 Search and OrderingSearchSort

3 Computational ComplexityTime ComplexitySpace Complexity

4 Complexity AnalysisEstimating Time ComplexityAlgorithm Analysis

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 26/73

Page 42: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Time Complexity

Computational Complexity evolved from 1960’s, flourished in 1970’sand 1980’s.

Time is the most precious resource.

Important to human.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 27/73

Page 43: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Running Time

Running time of a program is determined by:

input size

quality of the code

quality of the computer system

time complexity of the algorithm

We are mostly concerned with the behavior of the algorithm underinvestigation on large input instances.

So we may talk about the rate of growth or the order of growth oftherunning time

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 28/73

Page 44: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Running Time vs Input Size

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 29/73

Page 45: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Growth of Typical Functions

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 30/73

Page 46: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Elementary Operation

Definition: We denote by an “elementary operation" anycomputational step whose cost is always upperbounded by a constantamount of time regardless of the input data or the algorithm used.

Example:

Arithmetic operations: addition, subtraction, multiplication anddivision

Comparisons and logical operations

Assignments, including assignments of pointers when, say,traversing a list or a tree

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 31/73

Page 47: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Order of Growth

Our main concern is about the order of growth.

Our estimates of time are relative rather than absolute.

Our estimates of time are machine independent.

Our estimates of time are about the behavior of the algorithmunder investigation on large input instances.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 32/73

Page 48: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Order of Growth

Our main concern is about the order of growth.

Our estimates of time are relative rather than absolute.

Our estimates of time are machine independent.

Our estimates of time are about the behavior of the algorithmunder investigation on large input instances.

So we are measuring theasymptotic running time of the algorithms.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 32/73

Page 49: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

TheO-Notation

TheO-notation provides anupper bound of the running time; it maynot be indicative of the actual running time of an algorithm.

Definition (O-Notation)

Let f (n) andg(n) be functions from the set of natural numbers to theset of nonnegative real numbers.f (n) is said to beO(g(n)), writtenf (n) = O(g(n)), if

∃c.∃n0.∀n ≥ n0.f (n) ≤ cg(n)

Intuitively, f grows no faster than some constant timesg.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 33/73

Page 50: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

TheΩ-Notation

TheΩ-notation provides alower bound of the running time; it maynot be indicative of the actual running time of an algorithm.

Definition (Ω-Notation)

Let f (n) andg(n) be functions from the set of natural numbers to theset of nonnegative real numbers.f (n) is said to beΩ(g(n)), writtenf (n) = Ω(g(n)), if

∃c.∃n0.∀n ≥ n0.f (n) ≥ cg(n)

Clearly f (n) = O(g(n)) if and only if g(n) = Ω(f (n)).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 34/73

Page 51: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

TheΘ-Notation

TheΘ-notation provides an exact picture of the growth rate of therunning time of an algorithm.

Definition (Θ-Notation)

Let f (n) andg(n) be functions from the set of natural numbers to theset of nonnegative real numbers.f (n) is said to beΘ(g(n)), writtenf (n) = Θ(g(n)), if both f (n) = O(g(n)) andf (n) = Ω(g(n)).

Clearly f (n) = Θ(g(n)) if and only if g(n) = Θ(f (n)).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 35/73

Page 52: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Example

Example: f (n) = 10n2 + 20n.

Since∀n ≥ 1, f (n) ≤ 30n2, f (n) = O(n2);

Since∀n ≥ 1, f (n) ≥ n2, f (n) = Ω(n2);

Since∀n ≥ 1, n2 ≤ f (n) ≤ 30n2, f (n) = Θ(n2);

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 36/73

Page 53: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Examples

aknk + ak−1nk−1 + · · · + a1n + a0 = O(nk).

logn2 = O(n).

lognk = Ω(logn).

n! = O((n + 1)!).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 37/73

Page 54: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Examples

Consider the series∑n

j=1 log j. Clearly,

n∑

j=1

log j ≤n

j=1

logn = n logn. Thusn

j=1

log j = O(n logn)

On the other hand,

n∑

j=1

log j ≥⌊n/2⌋∑

j=1

log(n2) = ⌊n/2⌋ log(

n2) = ⌊n/2⌋ log n− ⌊n/2⌋

That isn

j=1

log j = Ω(n logn)

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 38/73

Page 55: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Examples

logn! =n∑

j=1log j = Θ(n logn).

2n = O(n!). (log 2n = n)

n! = O(2n2). (log 2n2

= n2)

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 39/73

Page 56: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Theo-Notation

Definition (o-Notation)

Let f (n) andg(n) be functions from the set of natural numbers to theset of nonnegative real numbers.f (n) is said to beo(g(n)), writtenf (n) = o(g(n)), if

∀c.∃n0.∀n ≥ n0.f (n) < cg(n)

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 40/73

Page 57: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Theω-Notation

Definition (ω-Notation)

Let f (n) andg(n) be functions from the set of natural numbers to theset of nonnegative real numbers.f (n) is said to beω(g(n)), writtenf (n) = ω(g(n)), if

∀c.∃n0.∀n ≥ n0.f (n) > cg(n)

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 41/73

Page 58: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Definition in Terms of Limits

Suppose limn→∞

f (n)/g(n) exists.

limn→∞

f (n)g(n)

6=∞ implies f (n) = O(g(n)).

limn→∞

f (n)g(n)

6= 0 impliesf (n) = Ω(g(n)).

limn→∞

f (n)g(n)

= c implies f (n) = Θ(g(n)).

limn→∞

f (n)g(n)

= 0 impliesf (n) = o(g(n)).

limn→∞

f (n)g(n)

=∞ implies f (n) = ω(g(n)).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 42/73

Page 59: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

A Helpful Analogy

f (n) = O(g(n)) is similar tof (n) ≤ g(n).

f (n) = o(g(n)) is similar tof (n) < g(n).

f (n) = Θ(g(n)) is similar tof (n) = g(n).

f (n) = Ω(g(n)) is similar tof (n) ≥ g(n).

f (n) = ω(g(n)) is similar tof (n) > g(n).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 43/73

Page 60: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Complexity Classes

An equivalence relationR on the set of complexity functions isdefined as follows:fRg if and only if f (n) = Θ(g(n)).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 44/73

Page 61: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Complexity Classes

An equivalence relationR on the set of complexity functions isdefined as follows:fRg if and only if f (n) = Θ(g(n)).

A complexity class is an equivalence class ofR.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 44/73

Page 62: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Complexity Classes

An equivalence relationR on the set of complexity functions isdefined as follows:fRg if and only if f (n) = Θ(g(n)).

A complexity class is an equivalence class ofR.

The equivalence classes can be ordered by≺ defined as follows:f ≺ g iff f (n) = o(g(n)).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 44/73

Page 63: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Complexity Classes

An equivalence relationR on the set of complexity functions isdefined as follows:fRg if and only if f (n) = Θ(g(n)).

A complexity class is an equivalence class ofR.

The equivalence classes can be ordered by≺ defined as follows:f ≺ g iff f (n) = o(g(n)).

1≺ log logn≺ logn≺√n≺n34 ≺n≺n logn≺n2≺2n≺n!≺2n2

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 44/73

Page 64: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Outline

1 Basic Concepts in Algorithmic AnalysisAlgorithmTheoretical Computer Science

2 Search and OrderingSearchSort

3 Computational ComplexityTime ComplexitySpace Complexity

4 Complexity AnalysisEstimating Time ComplexityAlgorithm Analysis

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 45/73

Page 65: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Space Complexity

The space complexity is defined to be the number of cells (workspace)) needed to carry out an algorithm,excluding the spaceallocated to hold the input.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 46/73

Page 66: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Space Complexity

The space complexity is defined to be the number of cells (workspace)) needed to carry out an algorithm,excluding the spaceallocated to hold the input.

The exclusion of the input space is to make sense the sublinear spacecomplexity.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 46/73

Page 67: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Space Complexity

It is clear that the work space of an algorithm can not exceed therunning time of the algorithm. That isS(n) = O(T(n)).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 47/73

Page 68: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Space Complexity

It is clear that the work space of an algorithm can not exceed therunning time of the algorithm. That isS(n) = O(T(n)).

Trade-off between time complexity and space complexity.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 47/73

Page 69: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Summary

Algorithm Time Complexity Space ComplexityLINEARSEARCH

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 48/73

Page 70: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Summary

Algorithm Time Complexity Space ComplexityLINEARSEARCH O(n) Θ(1)BINARYSEARCH

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 48/73

Page 71: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Summary

Algorithm Time Complexity Space ComplexityLINEARSEARCH O(n) Θ(1)BINARYSEARCH O(logn), Ω(1) Θ(1)

MERGE

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 48/73

Page 72: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Summary

Algorithm Time Complexity Space ComplexityLINEARSEARCH O(n) Θ(1)BINARYSEARCH O(logn), Ω(1) Θ(1)

MERGE O(n), Ω(n1) Θ(n)SELECTIONSORT

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 48/73

Page 73: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Summary

Algorithm Time Complexity Space ComplexityLINEARSEARCH O(n) Θ(1)BINARYSEARCH O(logn), Ω(1) Θ(1)

MERGE O(n), Ω(n1) Θ(n)SELECTIONSORT Θ(n2) Θ(1)INSERTIONSORT

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 48/73

Page 74: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Summary

Algorithm Time Complexity Space ComplexityLINEARSEARCH O(n) Θ(1)BINARYSEARCH O(logn), Ω(1) Θ(1)

MERGE O(n), Ω(n1) Θ(n)SELECTIONSORT Θ(n2) Θ(1)INSERTIONSORT O(n2), Ω(n) Θ(1)BOTTOMUPSORT

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 48/73

Page 75: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Summary

Algorithm Time Complexity Space ComplexityLINEARSEARCH O(n) Θ(1)BINARYSEARCH O(logn), Ω(1) Θ(1)

MERGE O(n), Ω(n1) Θ(n)SELECTIONSORT Θ(n2) Θ(1)INSERTIONSORT O(n2), Ω(n) Θ(1)BOTTOMUPSORT Θ(n logn) Θ(n)

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 48/73

Page 76: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Time ComplexitySpace Complexity

Optimal Algorithm

In general, if we can prove that any algorithm to solve problem Πmust beΩ(f (n)), then we call any algorithm to solve problemΠ intime O(f (n)) anoptimal algorithm for problemΠ.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 49/73

Page 77: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Outline

1 Basic Concepts in Algorithmic AnalysisAlgorithmTheoretical Computer Science

2 Search and OrderingSearchSort

3 Computational ComplexityTime ComplexitySpace Complexity

4 Complexity AnalysisEstimating Time ComplexityAlgorithm Analysis

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 50/73

Page 78: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

HOW do we estimate time complexity?

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 51/73

Page 79: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Counting the Iterations

Algorithm 1.7 Count1Input: n = 2k, for some positive integerk.Output: count = number of times Step 4 is executed.

1. count ← 0;2. while n ≥ 13. for j← 1 to n4. count ← count + 15. end for6. n← n/27. end while8. return count

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 52/73

Page 80: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Counting the Iterations

Algorithm 1.7 Count1Input: n = 2k, for some positive integerk.Output: count = number of times Step 4 is executed.

1. count ← 0;2. while n ≥ 13. for j← 1 to n4. count ← count + 15. end for6. n← n/27. end while8. return count

while is executedk + 1 times;for is executedn, n/2, . . . ,1 timesk

j=0

n2j = n

k∑

j=0

12j = n(2− 1

2k ) = 2n− 1 = Θ(n)

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 52/73

Page 81: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Counting the Iterations

Algorithm 1.8 Count2Input: A positive integern.Output: count = number of times Step 5 is executed.

1. count ← 0;2. for i← 1 to n3. m← ⌊n/i⌋4. for j← 1 to m5. count ← count + 16. end for7. end for8. return count

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 53/73

Page 82: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Counting the Iterations

Algorithm 1.8 Count2Input: A positive integern.Output: count = number of times Step 5 is executed.

1. count ← 0;2. for i← 1 to n3. m← ⌊n/i⌋4. for j← 1 to m5. count ← count + 16. end for7. end for8. return count

The innerfor is executedn, ⌊n/2⌋, ⌊n/3⌋, . . . , ⌊n/n⌋ times

Θ(n logn) =n

i=1

(ni− 1) ≤

n∑

i=1

⌊ni⌋ ≤

n∑

i=1

ni= Θ(n logn)

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 53/73

Page 83: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Counting the Iterations

Algorithm 1.9 Count3Input: n = 22k

, k is a positive integer.Output: count = number of times Step 6 is executed.

1. count ← 0;2. for i← 1 to n3. j← 2;4. while j ≤ n5. j← j2;6. count ← count + 17. end while8. end for9. return count

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 54/73

Page 84: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Counting the Iterations

For each value ofi, thewhile loop will be executed whenj = 2,22,24, · · · ,22k

.

That is, it will be executed whenj = 220,221

,222, · · · ,22k

.

Thus, the number of iterations forwhile loop isk + 1 = log logn + 1for each iteration offor loop.

The total output isn(log logn + 1) = Θ(n log logn).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 55/73

Page 85: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Counting the Iterations

Algorithm 1.10 PSUMInput: n = k2, k is a positive integer.

Output:j∑

i=1i for each perfect squarej between 1 andn.

1. k← √n;2. for j← 1 to k3. sum[j]← 0;4. for i← 1 to j2

5. sum[j]← sum[j] + i;6. end for7. end for8. return sum[1 · · · k]

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 56/73

Page 86: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Counting the Iterations

Assume that√

n can be computed inO(1) time.

The outer and innerfor loop are executedk =√

n andj2 timesrespectively.

Thus, the number of iterations for innerfor loop is

k∑

j=1

j2∑

i=1

1 =

k∑

j=1

j2 =k(k + 1)(2k + 1)

6= Θ(k3) = Θ(n1.5).

The total output isΘ(n1.5).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 57/73

Page 87: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Counting the Frequency of Basic Operations

Definition

An elementary operation in an algorithm is called abasic operation ifit is of highest frequency to within a constant factor among all otherelementary operations.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 58/73

Page 88: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Method of Choice

When analyzing searching and sorting algorithms, we maychoose the element comparison operation if it is an elementaryoperation.

In matrix multiplication algorithms, we select the operation ofscalar multiplication.

In traversing a linked list, we may select the “operation" ofsetting or updating a pointer.

In graph traversals, we may choose the “action" of visiting anode, and count the number of nodes visited.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 59/73

Page 89: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Master theorem

IfT(n) = aT(⌈n/b⌉) + O(nd)

for some constantsa > 0, b > 1, andd ≥ 0,

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 60/73

Page 90: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Master theorem

IfT(n) = aT(⌈n/b⌉) + O(nd)

for some constantsa > 0, b > 1, andd ≥ 0, then

T(n) =

O(nd) if d > logb a

O(nd logn) if d = logb a

O(nlogb a) if d < logb a.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 60/73

Page 91: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Analysis for MERGESORT

The recurrence relation:

T(n) = 2T(n/2) + O(n);

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 61/73

Page 92: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Analysis for MERGESORT

The recurrence relation:

T(n) = 2T(n/2) + O(n);

By Master TheoremT(n) = O(n logn).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 61/73

Page 93: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Outline

1 Basic Concepts in Algorithmic AnalysisAlgorithmTheoretical Computer Science

2 Search and OrderingSearchSort

3 Computational ComplexityTime ComplexitySpace Complexity

4 Complexity AnalysisEstimating Time ComplexityAlgorithm Analysis

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 62/73

Page 94: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Performance of INSERTIONSORT

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 63/73

Page 95: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Worst Case Analysis

Consider the following algorithm:

1. if n is oddthen k ← BinarySearch(A, x)2. elsek ← LinearSearch(A, x)

In the worst case, the running time isΩ(log(n)) andO(n).

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 64/73

Page 96: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Average Case Analysis

Take Algorithm InsertionSort for instance. Two assumptions:

A[1..n] contains the numbers 1 throughn.

All n! permutations are equally likely.

The number of comparisons for inserting elementA[i] in its properposition, sayj, is on average the following

i− 1i

+

i∑

j=2

i− j + 1i

=i− 1

i+

i−1∑

j=1

ji=

i2− 1

i+

12

Theaverage number of comparisons performed by AlgorithmInsertionSort is

n∑

i=2

(i2− 1

i+

12) =

n2

4+

3n4−

n∑

i=1

1i

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 65/73

Page 97: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Amortized Analysis

In amortized analysis, we average out the time taken by the operationthroughout the execution of the algorithm, and refer to thisaverage astheamortized running time of that operation.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 66/73

Page 98: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Amortized Analysis

In amortized analysis, we average out the time taken by the operationthroughout the execution of the algorithm, and refer to thisaverage astheamortized running time of that operation.

Amortized analysis guarantees the average cost of the operation, andthus the algorithm,in the worst case.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 66/73

Page 99: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Amortized Analysis

In amortized analysis, we average out the time taken by the operationthroughout the execution of the algorithm, and refer to thisaverage astheamortized running time of that operation.

Amortized analysis guarantees the average cost of the operation, andthus the algorithm,in the worst case.

This is to be contrasted with the average time analysis in which theaverage is taken over all instances of the same size. Moreover, unlikethe average case analysis, no assumptions about the probabilitydistribution of the input are needed.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 66/73

Page 100: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Amortized Analysis

Consider the following algorithm:

1. for j← 1 to n2. x← A[j]3. Appendx to the list4. if x is eventhen5. while pred(x) is odddo deletepred(x)6. end if7. end for

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 67/73

Page 101: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

An Example

5 7 3 4 9 8 7 3

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 68/73

Page 102: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Analysis

Worst Case Analysis: If no input numbers are even, or if all evennumbers are at the beginning, then no elements are deleted, and henceeach iteration of thefor loop takes constant time. However, if theinput hasn− 1 odd integers followed by one even integer, then thenumber of deletions isn− 1, and the number ofwhile loops isn− 1.The overall running time isO(n2).

Amortized Analysis: The total number of elementary operations ofinsertions and deletions is betweenn and 2n− 1. So the timecomplexity isΘ(n). It follows that the time used to delete eachelement isO(1) amortized time.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 69/73

Page 103: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Input Size and Problem Instance

Suppose that the following integer

21024− 1

is a legitimate input of an algorithm. What is thesize of the input?

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 70/73

Page 104: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Input Size and Problem Instance

Algorithm 1.9 FIRSTInput: A positive integern and an arrayA[1..n] with A[j] = j for1≤ j ≤ n.Output:

∑nj=1 A[j].

1. sum← 0;2. for j← 1 to n3. sum← sum + A[j]4. end for5. return sum

The input size isn. The time complexity isO(n). It is linear time.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 71/73

Page 105: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Input Size and Problem Instance

Algorithm 1.10 SECONDInput: A positive integern.Output:

∑nj=1 j.

1. sum← 0;2. for j← 1 to n3. sum← sum + j4. end for5. return sum

The input size isk = ⌊logn⌋+ 1. The time complexity isO(2k). It isexponential time.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 72/73

Page 106: Introduction to Algorithm - SJTUgao-xf/algorithm/Document/Slide02... · 2015-03-12 · Introduction to Algorithm∗ Xiaofeng Gao Department of Computer Science and Engineering Shanghai

Basic Concepts in Algorithmic AnalysisSearch and Ordering

Computational ComplexityComplexity Analysis

Estimating Time ComplexityAlgorithm Analysis

Commonly Used Measures

In sorting and searching problems, we use the number of entriesin the array or list as the input size.

In graph algorithms, the input size usually refers to the numberof vertices or edges in the graph, or both.

In computational geometry, the size of input is usually expressedin terms of the number of points, vertices, edges, line segments,polygons, etc.

In matrix operations, the input size is commonly taken to be thedimensions of the input matrices.

In number theory algorithms and cryptography, the number ofbits in the input is usually chosen to denote its length. Thenumber of words used to represent a single number may also bechosen as well, as each word consists of a fixed number of bits.

X033533-Algorithm@SJTU Xiaofeng Gao Introduction to Algorithm 73/73