Big O and Algorithms (Part 1)

1 / 20

# Big O and Algorithms (Part 1) - PowerPoint PPT Presentation

Big O and Algorithms (Part 1). b y Google today. Discrete Structures (CS 173) Madhusudan Parthasarathy, University of Illinois. Announcements. Midterm 2: how did it go? All the usual homeworks due this week. This week. How do we characterize the computational cost of an algorithm?

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Big O and Algorithms (Part 1)' - garrison-neal

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Big O and Algorithms (Part 1)

Discrete Structures (CS 173)

Announcements
• Midterm 2: how did it go?
• All the usual homeworks due this week
This week
• How do we characterize the computational cost of an algorithm?
• How do we compare the speed of two algorithms?
• How do we compute cost based on code or pseudocode?
Today
• How do we characterize the computational cost of an algorithm?
• How do we compare the speed of two algorithms?
• How do we compute cost based on code or pseudocode?
• Time taken?
• Number of instructions called?
• Expected time as a function of the inputs?
• How quickly the cost grows as a function of the inputs
Example: Finding smallest m values

output = findmin(input, m) % returns m smallest inputs

for each ith output (there are m of these)

for each jth input (there are n of these)

if j is not used and input(j) < output(i)

output(i) = input(j);

j_out = j;

end

end

mark that j_out has been used as an output

end

return output

See findmin.m

Example: Finding smallest m values

minvals = findmin(vals, m)

Constants that depend on implementation details, architecture, etc.

Dominant factor

Key ideas in runtime analysis
• Model how algorithm speed depends on the size of the input/parameters
• Ignore factors that depend on architecture or details of compiled code
• We care mainly about asymptotic performance
• If the input size is small, we’re not usually worried about speed anyway
• We care mainly about dominant terms
• An algorithm that takes time takes almost as long (as a ratio) as one that takes time if is large
Asymptotic relationships

If , then for non-zero

Example: comparing findmin algorithms

output = findmin(input, m) % can be implemented different ways

for each ith output (there are m of these)

for each jth input (there are n of these)

if j is not used and input(j) < output(i)

output(i) = input(j);

j_out = j;

end

end

mark that j_out has been used as an output

end

return output

output = findmin_sort(input, m)

sorted_input = sort(input, ascending);

output = sorted_input(1…m);

Big-O

is iff there are such that for every

O(

Proving Big-O with induction

Claim: is

Definition: is iff there are such that

for every .

Choose and : ,

Proof: Suppose is an integer. I need to show for . I will use induction on .

Base case:

Induction: Suppose for . We need to show .

Things to remember
• Model algorithm complexity in terms of how much the cost increases as the input/parameter size increases
• In characterizing algorithm computational complexity, we care about
• Large inputs
• Dominant terms
• if the dominant terms in are equivalent or dominated by the dominant terms in
• if the dominant terms in are equivalent to those in
Next class
• Analyzing pseudocode