CS 332: Algorithms: Proof by Induction Asymptotic Notation

Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

CS 332: Algorithms

Introduction
Proof By Induction
Asymptotic notation

David Luebke 1 2023-01-02


The Course

• Purpose: a rigorous introduction to the design


and analysis of algorithms
▪ Not a lab or programming course
▪ Not a math course, either
• Textbook: Introduction to Algorithms,
Cormen, Leiserson, Rivest, Stein
▪ The “Big White Book”
▪ Second edition: now “Smaller Green Book”
▪ An excellent reference you should own
David Luebke 2 2023-01-02
The Course

• Instructor: David Luebke


▪ luebke@cs.virginia.edu
▪ Office: Olsson 219
▪ Office hours: 2-3 Monday, 10-11 Thursday
• TA: Pavel Sorokin
▪ Office hours and location TBA

David Luebke 3 2023-01-02


The Course

• Grading policy:
▪ Homework: 30%
▪ Exam 1: 15%
▪ Exam 2: 15%
▪ Final: 35%
▪ Participation: 5%

David Luebke 4 2023-01-02


The Course

• Prerequisites:
▪ CS 202 w/ grade of C- or better
▪ CS 216 w/ grade of C- or better
▪ CS 302 recommended but not required
o Who has not taken CS 302?

David Luebke 5 2023-01-02


The Course

• Format
▪ Three lectures/week
▪ Homework most weeks
o Problem sets
o Maybe occasional programming assignments
▪ Two tests + final exam

David Luebke 6 2023-01-02


Review: Induction

• Suppose
▪ S(k) is true for fixed constant k
o Often k = 0
▪ S(n) =S(n+1) for all n >= k
• Then S(n) is true for all n >= k

David Luebke 7 2023-01-02


Proof By Induction

• Claim:S(n) is true for all n >= k


• Basis:
▪ Show formula is true when n = k
• Inductive hypothesis:
▪ Assume formula is true for an arbitrary n
• Step:
▪ Show that formula is then true for n+1

David Luebke 8 2023-01-02


Induction Example:
Gaussian Closed Form
• Prove 1 + 2 + 3 + … + n = n(n+1) / 2
▪ Basis:
o If n = 0, then 0 = 0(0+1) / 2
▪ Inductive hypothesis:
o Assume 1 + 2 + 3 + … + n = n(n+1) / 2
▪ Step (show true for n+1):
1 + 2 + … + n + n+1 = (1 + 2 + …+ n) + (n+1)
= n(n+1)/2 + n+1 = [n(n+1) + 2(n+1)]/2
= (n+1)(n+2)/2 = (n+1)(n+1 + 1) / 2

David Luebke 9 2023-01-02


Induction Example:
Geometric Closed Form
• Prove a0 + a1 + … + an = (an+1 - 1)/(a - 1) for
all a  1
▪ Basis: show that a0 = (a0+1 - 1)/(a - 1)
a0 = 1 = (a1 - 1)/(a - 1)
▪ Inductive hypothesis:
o Assume a0 + a1 + … + an = (an+1 - 1)/(a - 1)
▪ Step (show true for n+1):
a0 + a1 + … + an+1 = a0 + a1 + … + an + an+1
= (an+1 - 1)/(a - 1) + an+1 = (an+1+1 - 1)/(a - 1)

David Luebke 10 2023-01-02


Induction
• We’ve been using weak induction
• Strong induction also holds
▪ Basis: show S(0)
▪ Hypothesis: assume S(k) holds for arbitrary k <= n
▪ Step: Show S(n+1) follows
• Another variation:
▪ Basis: show S(0), S(1)
▪ Hypothesis: assume S(n) and S(n+1) are true
▪ Step: show S(n+2) follows

David Luebke 11 2023-01-02


Asymptotic Performance

• In this course, we care most about asymptotic


performance
▪ How does the algorithm behave as the problem
size gets very large?
o Running time
o Memory/storage requirements
o Bandwidth/power requirements/logic gates/etc.

David Luebke 12 2023-01-02


Asymptotic Notation

• By now you should have an intuitive feel for


asymptotic (big-O) notation:
▪ What does O(n) running time mean? O(n2)?
O(n lg n)?
▪ How does asymptotic running time relate to
asymptotic memory usage?
• Our first task is to define this notation more
formally and completely

David Luebke 13 2023-01-02


Analysis of Algorithms

• Analysis is performed with respect to a


computational model
• We will usually use a generic uniprocessor
random-access machine (RAM)
▪ All memory equally expensive to access
▪ No concurrent operations
▪ All reasonable instructions take unit time
o Except, of course, function calls
▪ Constant word size
o Unless we are explicitly manipulating bits
David Luebke 14 2023-01-02
Input Size

• Time and space complexity


▪ This is generally a function of the input size
o E.g., sorting, multiplication
▪ How we characterize input size depends:
o Sorting: number of input items
o Multiplication: total number of bits
o Graph algorithms: number of nodes & edges
o Etc

David Luebke 15 2023-01-02


Running Time

• Number of primitive steps that are executed


▪ Except for time of executing a function call most
statements roughly require the same amount of
time
oy=m*x+b
o c = 5 / 9 * (t - 32 )
o z = f(x) + g(y)
• We can be more exact if need be

David Luebke 16 2023-01-02


Analysis

• Worst case
▪ Provides an upper bound on running time
▪ An absolute guarantee
• Average case
▪ Provides the expected running time
▪ Very useful, but treat with care: what is “average”?
o Random (equally likely) inputs
o Real-life inputs

David Luebke 17 2023-01-02


The End

David Luebke 18 2023-01-02

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy