36
Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Algorithmic Complexity 2

Nelson Padua-Perez

Chau-Wen Tseng

Department of Computer Science

University of Maryland, College Park

Page 2: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Overview

Critical sections

Recurrence relations

Comparing complexity

Types of complexity analysis

Page 3: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Analyzing Algorithms

GoalFind asymptotic complexity of algorithm

ApproachIgnore less frequently executed parts of algorithm

Find critical section of algorithm

Determine how many times critical section is executed as function of problem size

Page 4: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section of Algorithm

Heart of algorithm

Dominates overall execution time

CharacteristicsOperation central to functioning of program

Contained inside deeply nested loops

Executed as often as any other part of algorithm

SourcesLoops

Recursion

Page 5: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 1

Code (for input size n)1. A

2. for (int i = 0; i < n; i++)

3. B

4. C

Code executionA B C

Time

Page 6: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 1

Code (for input size n)1. A

2. for (int i = 0; i < n; i++)

3. B

4. C

Code executionA once

B n times

C once

Time 1 + n + 1 = O(n)

critical section

Page 7: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 2

Code (for input size n)1. A

2. for (int i = 0; i < n; i++)

3. B

4. for (int j = 0; j < n; j++)

5. C

6. D

Code executionA B

Time

C D

Page 8: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 2

Code (for input size n)1. A

2. for (int i = 0; i < n; i++)

3. B

4. for (int j = 0; j < n; j++)

5. C

6. D

Code executionA once

B n times

Time 1 + n + n2 + 1 = O(n2)

critical section

C n2 times

D once

Page 9: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 3

Code (for input size n)1. A

2. for (int i = 0; i < n; i++)

3. for (int j = i+1; j < n; j++)

4. B

Code executionA B

Time

Page 10: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 3

Code (for input size n)1. A

2. for (int i = 0; i < n; i++)

3. for (int j = i+1; j < n; j++)

4. B

Code executionA once

B ½ n (n-1) times

Time 1 + ½ n2 = O(n2)

critical section

Page 11: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 4

Code (for input size n)1. A

2. for (int i = 0; i < n; i++)

3. for (int j = 0; j < 10000; j++)

4. B

Code executionA B

Time

Page 12: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 4

Code (for input size n)1. A

2. for (int i = 0; i < n; i++)

3. for (int j = 0; j < 10000; j++)

4. B

Code executionA once

B 10000 n times

Time 1 + 10000 n = O(n)

critical section

Page 13: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 5

Code (for input size n)1. for (int i = 0; i < n; i++)

2. for (int j = 0; j < n; j++)

3. A

4. for (int i = 0; i < n; i++)

5. for (int j = 0; j < n; j++)

6. B

Code executionA B

Time

Page 14: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 5

Code (for input size n)1. for (int i = 0; i < n; i++)

2. for (int j = 0; j < n; j++)

3. A

4. for (int i = 0; i < n; i++)

5. for (int j = 0; j < n; j++)

6. B

Code executionA n2 times

B n2 times

Time n2 + n2 = O(n2)

critical sections

Page 15: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 6

Code (for input size n)1. i = 1

2. while (i < n)

3. A

4. i = 2 i

5. B

Code executionA

B

Time

Page 16: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 6

Code (for input size n)1. i = 1

2. while (i < n)

3. A

4. i = 2 i

5. B

Code executionA log(n) times

B 1 times

Time log(n) + 1 = O( log(n) )

critical section

Page 17: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 7

Code (for input size n)1. DoWork (int n)

2. if (n == 1)

3. A

4. else

5. DoWork(n/2)

6. DoWork(n/2)

Code executionA DoWork(n/2)

Time(1) Time(n) =

Page 18: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Critical Section Example 7

Code (for input size n)1. DoWork (int n)

2. if (n == 1)

3. A

4. else

5. DoWork(n/2)

6. DoWork(n/2)

Code executionA 1 times

DoWork(n/2) 2 times

Time(1) 1 Time(n) = 2 Time(n/2) + 1

critical sections

Page 19: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Recursive Algorithms

DefinitionAn algorithm that calls itself

Components of a recursive algorithm1. Base cases

Computation with no recursion

2. Recursive cases

Recursive calls

Combining recursive results

Page 20: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Recursive Algorithm Example

Code (for input size n)1. DoWork (int n)

2. if (n == 1)

3. A

4. else

5. DoWork(n/2)

6. DoWork(n/2)recursive

cases

base case

Page 21: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Recurrence Relations

DefinitionValue of a function at a point is given in terms of its value at other points

ExamplesT(n) = T(n-1) + k

T(n) = T(n-1) + n

T(n) = T(n-1) + T(n-2)

T(n) = T(n/2) + k

T(n) = 2 T(n/2) + k

Page 22: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Recurrence Relations

Base caseValue of function at some specified points

Also called boundary values / boundary conditions

Base case exampleT(1) = 0

T(1) = 1

T(2) = 1

T(2) = k

Page 23: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Solving Recurrence Equations

Back substitution (iteration method)Iteratively substitute recurrence into formula

ExampleT(1) = 5

T(n) = T(n-1) + 1 = ( T(n-2) + 1 ) + 1

= ( ( T(n-3) + 1 ) + 1 ) + 1

= ( ( ( T(n-4) + 1 ) + 1 ) + 1 ) + 1

= …

= (…( T(1) + 1 ) + … ) + 1

= (…( 5 + 1 ) + … ) + 1

= n + 4

Page 24: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Example Recurrence Solutions

ExamplesT(n) = T(n-1) + k O(n)

T(n) = T(n-1) + n O(n2)

T(n) = T(n-1) + T(n-2) O(n!)

T(n) = T(n/2) + k O(log(n))

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

T(n) = 2 T(n-1) + k O(2n)

Many additional issues, solution methodsTake CMSC 351 – Introduction to Algorithms

Page 25: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Asymptotic Complexity Categories

Complexity Name ExampleO(1) Constant Array access

O(log(n)) Logarithmic Binary search

O(n) Linear Largest element

O(n log(n)) N log N Optimal sort

O(n2) Quadratic 2D Matrix addition

O(n3) Cubic 2D Matrix multiply

O(nk) Polynomial Linear programming

O(kn) Exponential Integer programming

From smallest to largest

For size n, constant k > 1

Page 26: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Comparing Complexity

Compare two algorithmsf(n), g(n)

Determine which increases at faster rateAs problem size n increases

Can compare ratio

If , f() is larger

If 0, g() is larger

If constant, then same complexity

lim n

f(n)

g(n)

Page 27: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Complexity Comparison Examples

log(n) vs. n½

1.001n vs. n1000

lim n

f(n)

g(n)lim

n

log(n)

0

lim n

f(n)

g(n)lim

n1.001n

n1000

??

Not clear, use L’Hopital’s Rule

Page 28: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

L’Hopital’s Rule

If ratio is indeterminate

0 / 0 or /

Ratio of derivatives computes same value

Can simplify ratio by repeatedly taking derivatives of numerator & denominator

lim n

f(n)

g(n)lim

n

f'(n)

g'(n)=

Page 29: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Using L’Hopital’s Rule

1.001n vs. n1000

lim n

f(n)

g(n)lim

n1.001n

n1000

lim n

n 1.001n-1

1000 n999

lim n

n (n-1) 1.001n-2

1000999 n998

Page 30: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Additional Complexity Measures

Upper bound Big-O (…)

Represents upper bound on # steps

Lower bound Big-Omega (…)

Represents lower bound on # steps

Combined boundBig-Theta (…)

Represents combined upper/lower bound on # steps

Best possible asymptotic solution

Page 31: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

2D Matrix Multiplication Example

Problem C = A * B

Lower bound(n2) Required to examine 2D matrix

Upper boundsO(n3) Basic algorithm

O(n2.807) Strassen’s algorithm (1969)

O(n2.376) Coppersmith & Winograd (1987)

Improvements still possible (open problem)Since upper & lower bounds do not match

=

Page 32: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Additional Complexity Categories

Name DescriptionNP Nondeterministic polynomial time (NP)

PSPACE Polynomial space

EXPSPACE Exponential space

Decidable Can be solved by finite algorithm

UndecidableNot solvable by finite algorithm

Mostly of academic interest onlyQuadratic algorithms usually too slow for large data

Use fast heuristics to provide non-optimal solutions

Page 33: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

NP Time Algorithm

Polynomial solution possibleIf make correct guesses on how to proceed

Required for many fundamental problemsBoolean satisfiability

Traveling salesman problem (TLP)

Bin packing

Key to solving many optimization problemsMost efficient trip routes

Most efficient schedule for employees

Most efficient usage of resources

Page 34: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

NP Time Algorithm

Properties of NPCan be solved with exponential time

Not proven to require exponential time

Currently solve using heuristics

NP-complete problemsRepresentative of all NP problems

Solution can be used to solve any NP problem

Examples

Boolean satisfiability

Traveling salesman

Page 35: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

P = NP?

Are NP problems solvable in polynomial time?Prove P=NP

Show polynomial time solution exists for any NP-complete problem

Prove PNP

Show no polynomial-time solution possible

The expected answer

Important open problem in computer science$1 million prize offered by Clay Math Institute

Page 36: Algorithmic Complexity 2 Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

Algorithmic Complexity Summary

Asymptotic complexityFundamental measure of efficiency

Independent of implementation & computer platform

Learned how toExamine program

Find critical sections

Calculate complexity of algorithm

Compare complexity