0% found this document useful (0 votes)
50 views29 pages

22 Growth of Functions

This document discusses algorithms and their efficiency. It introduces ways to measure algorithm efficiency such as counting steps, time complexity using Big O notation, and analyzing how functions grow relative to input size (e.g. O(n), O(n^2), etc.). It provides examples of analyzing time complexity for sorting algorithms like bubble sort. It also briefly introduces the concepts of NP-completeness and the Satisfiability (SAT) problem.

Uploaded by

luckyvin
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views29 pages

22 Growth of Functions

This document discusses algorithms and their efficiency. It introduces ways to measure algorithm efficiency such as counting steps, time complexity using Big O notation, and analyzing how functions grow relative to input size (e.g. O(n), O(n^2), etc.). It provides examples of analyzing time complexity for sorting algorithms like bubble sort. It also briefly introduces the concepts of NP-completeness and the Satisfiability (SAT) problem.

Uploaded by

luckyvin
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 29

Growth of Functions

CS 202
Epp, section ???
Aaron Bloomfield

1
How does one measure algorithms
• We can time how long it takes a computer
– What if the computer is doing other things?
– And what happens if you get a faster computer?
• A 3 Ghz Windows machine chip will run an algorithm at a
different speed than a 3 Ghz Macintosh

• So that idea didn’t work out well…

2
How does one measure algorithms
• We can measure how many machine
instructions an algorithm takes
– Different CPUs will require different amount of
machine instructions for the same algorithm

• So that idea didn’t work out well…

3
How does one measure algorithms
• We can loosely define a “step” as a single
computer operation
– A comparison, an assignment, etc.
– Regardless of how many machine instructions it
translates into

• This allows us to put algorithms into broad


categories of efficient-ness
– An efficient algorithm on a slow computer will always
beat an inefficient algorithm on a fast computer
4
Bubble sort running time
• The bubble step take (n2-n)/2 “steps”

• Let’s say the bubble sort takes the following number of


steps on specific CPUs:
– Intel Pentium IV CPU: 58*(n2-n)/2
– Motorola CPU: 84.4*(n2-2n)/2
– Intel Pentium V CPU: 44*(n2-n)/2

• Notice that each has an n2 term


– As n increases, the other terms will drop out

5
Bubble sort running time
• This leaves us with:
– Intel Pentium IV CPU: 29n2
– Motorola CPU: 42.2n2
– Intel Pentium V CPU: 22n2

• As processors change, the constants will always


change
– The exponent on n will not
• Thus, we can’t care about the constants

6
An aside: inequalities
• If you have a inequality you need to show:
x<y
• You can replace the lesser side with something greater:
x+1 < y
• If you can still show this to be true, then the original
inequality is true

• Consider showing that 15 < 20


– You can replace 15 with 16, and then show that 16 < 20.
Because 15 < 16, and 16 < 20, then 15 < 20

7
An aside: inequalities
• If you have a inequality you need to show:
x<y
• You can replace the greater side with something lesser:
x < y-1
• If you can still show this to be true, then the original
inequality is true

• Consider showing that 15 < 20


– You can replace 20 with 19, and then show that 15 < 19.
Because 15 < 19, and 19 < 20, then 15 < 20

8
An aside: inequalities
• What if you do such a replacement and can’t
show anything?
– Then you can’t say anything about the original
inequality

• Consider showing that 15 < 20


– You can replace 20 with 10
– But you can’t show that 15 < 10
– So you can’t say anything one way or the other about
the original inequality

9
Review of last time
• Searches
– Linear: n steps
– Binary: log2 n steps
– Binary search is about as fast as you can get

• Sorts
– Bubble: n2 steps
– Insertion: n2 steps
– There are other, more efficient, sorting techniques
• In principle, the fastest are heap sort, quick sort, and merge sort
• These each take take n * log2 n steps
• In practice, quick sort is the fastest (although this is not
guaranteed!), followed by merge sort

10
Big-Oh notation
• Let b(x) be the bubble sort algorithm
• We say b(x) is O(n2)
– This is read as “b(x) is big-oh n2”
– This means that the input size increases, the running time of the
bubble sort will increase proportional to the square of the input
size
• In other words, by some constant times n2

• Let l(x) be the linear (or sequential) search algorithm


• We say l(x) is O(n)
– Meaning the running time of the linear search increases directly
proportional to the input size

11
Big-Oh notation
• Consider: b(x) is O(n2)
– That means that b(x)’s running time is less than (or
equal to) some constant times n2
• Consider: l(x) is O(n)
– That means that l(x)’s running time is less than (or
equal to) some constant times n

12
Big-Oh proofs
• Show that f(x) = x2 + 2x + 1 is O(x2)
– In other words, show that x2 + 2x + 1 ≤ c*x2
• Where c is some constant
• For input size greater than some x

• We know that 2x2 ≥ 2x whenever x ≥ 1


• And we know that x2 ≥ 1 whenever x ≥ 1
• So we replace 2x+1 with 3x2
– We then end up with x2 + 3x2 = 4x2
– This yields 4x2 ≤ c*x2
• This, for input sizes 1 or greater, when the constant is 4 or greater,
f(x) is O(x2)
• We could have chosen values for c and x that were different

13
Big-Oh proofs

14
Sample Big-Oh problems
• Show that f(x) = x2 + 1000 is O(x2)
– In other words, show that x2 + 1000 ≤ c*x2

• We know that x2 > 1000 whenever x > 31


– Thus, we replace 1000 with x2
– This yields 2x2 ≤ c*x2

• Thus, f(x) is O(x2) for all x > 31 when c ≥ 2

15
Sample Big-Oh problems
• Show that f(x) = 3x+7 is O(x)
– In other words, show that 3x+7 ≤ c*x

• We know that x > 7 whenever x > 7


– Duh!
– So we replace 7 with x
– This yields 4x ≤ c*x

• Thus, f(x) is O(x) for all x > 7 when c ≥ 4

16
A variant of the last question
• Show that f(x) = 3x+7 is O(x2)
– In other words, show that 3x+7 ≤ c*x2

• We know that x > 7 whenever x > 7


– Duh!
– So we replace 7 with x
– This yields 4x < c*x2
– This will also be true for x > 7 when c ≥ 1

• Thus, f(x) is O(x2) for all x > 7 when c ≥ 1

17
What that means
• If a function is O(x)
– Then it is also O(x2)
– And it is also O(x3)

• Meaning a O(x) function will grow at a slower or


equal to the rate x, x2, x3, etc.

18
Function growth rates
• For input size n = 1000

• O(1) 1
• O(log n) ≈10
• O(n) 103
• O(n log n) ≈104
• O(n2) 106
• O(n3) 109
• O(n4) 1012
• O(nc) 103*c c is a consant
• 2n ≈10301
• n! ≈102568 Many interesting problems
• nn 103000 fall into these categories

19
Function growth rates

Logarithmic
scale!

20
Integer factorization
• Factoring a composite number into it’s
component primes is O(2n)
– Where n is the number of bits in the number

• This, if we choose 2048 bit numbers (as in RSA


keys), it takes 22048 steps
– That’s about 10617 steps!

21
Formal Big-Oh definition
• Let f and g be functions. We say that f(x) is
O(g(x)) if there are constants c and k such that
|f(x)| ≤ C |g(x)|
whenever x > k

22
Formal Big-Oh definition

23
A note on Big-Oh notation
• Assume that a function f(x) is O(g(x))

• It is sometimes written as f(x) = O(g(x))


– However, this is not a proper equality!
– It’s really saying that |f(x)| ≤ C |g(x)|

• In this class, we will write it as f(x) is O(g(x))

24
NP Completeness
• A full discussion of NP completeness takes 3 hours for
somebody who already has a CS degree
– We are going to do the 15 minute version of it today
– More will (probably) follow on Friday

• Any term of the form nc, where c is a constant, is a


polynomial
– Thus, any function that is O(nc) is a polynomial-time function
– 2n, n!, nn are not polynomial functions

25
Satisfiability
• Consider a Boolean expression of the form:
• (x1  x2  x3)  (x2  x3  x4)  (x1  x4  x5)
– This is a conjunction of disjunctions
• Is such an equation satisfiable?
– In other words, can you assign truth values to all the
xi’s such that the equation is true?
– The above problem is easy (only 3 clauses of 3
variables) – set x1, x2, and x4 to true
• There are other possibilities: set x1, x2, and x5 to true, etc.
– But consider an expression with 1000 variables and
thousands of clauses

26
Satisfiability
• If given a solution, it is easy to check if such a solution
works
– Plug in the values – this can be done quickly, even by hand
• However, there is no known efficient way to find such a
solution
– The only definitive way to do so is to try all possible values for the
n Boolean variables
– That means this is O(2n)!
– Thus it is not a polynomial time function
• NP stands for “Not Polynomial”
• Cook’s theorem (1971) states that SAT is NP-complete
– There still may be an efficient way to solve it, though!
27
NP Completeness
• There are hundreds of NP complete problems
– It has been shown that if you can solve one of them
efficiently, then you can solve them all
– Example: the traveling salesman problem
• Given a number of cities and the costs of traveling from any
city to any other city, what is the cheapest round-trip route
that visits each city once and then returns to the starting city?
• Not all algorithms that are O(2n) are NP
complete
– In particular, integer factorization (also O(2n)) is not
thought to be NP complete
28
NP Completeness
• It is “widely believed” that there is no efficient solution to
NP complete problems
– In other words, everybody has that belief
• If you could solve an NP complete problem in polynomial
time, you would be showing that P = NP
– And you’d get a million dollar prize (and lots of fame!)
• If this were possible, it would be like proving that
Newton’s or Einstein’s laws of physics were wrong

• In summary:
– NP complete problems are very difficult to solve, but easy to
check the solutions of
– It is believed that there is no efficient way to solve them
29

You might also like