Algorithms
Course web site:
http://www.cs.uakron.edu/~zduan/class/435
Office: 238 CAS
Phone: 330330-972972-6773
E-mail: duan@uakron.edu
Office Hours: MWF12:00MWF12:00-1:00, MW6:25MW6:25-6:40, or appointment
Office hour: TBA (CAS 254),F5:00254),F5:00-7:00pm(CAS 241)
Teaching assistant: Vasudha Lankireddy
Tutors:
Aaron Battershell and Michael Wilder
Course Goals:
Textbook:
Algorithms by Dasgupta
Dasgupta,, et al.
Instructor: Dr. ZhongZhong-Hui Duan
Books
An excellent reference:
Introduction to Algorithms, 3rd Edition,
by T.H. Cormen
Cormen,, C.E. Leiserson
Leiserson,, R.L.
Rivest,, and C. Stein, MIT, 2009.
Rivest
To learn well
well--known algorithms as well as the design and
analysis of these algorithms.
Program Submissions
Grading:
Weekly homework problems (15%).
neat, clear, precise, formal.
Two exams (15%, 30%).
Programs (30%).
Quizzes & class participation (10%).
Grading Scale (+/(+/- grades may be assigned at
instructor's discretion):
A 9090-100 B 80
80--89 C 70
70--79 D 60
60--69 F 00-59
Dates and Final Exam Time
Last Day: Drop
Drop:: Sept 8; Withdraw
Withdraw:: Oct 13
Final Exam:
Exam: Given according to the University
Final Exam schedule.
MWF class : Thursday, Dec 11, 12:1512:15-2:15pm;
MW class : Wednesday, December 10, 4:45 - 6:45pm.
All programs will be submitted using Springboard
Springboard.. A drop box
will be created for each program. You will also need to submit a
printed copy of your source code and a readme file. DO NOT
submit programs that are not reasonably correct!
correct! To be considered
reasonably correct,
correct, a program must be completely documented and
work correctly for sample data provided with the assignment.
Programs failing to meet these minimum standards will be
returned ungraded and a 30% penalty assessed. Late points will be
added on top of this penalty.
Ethics: All programming assignments must be your own work.
work.
Duplicate or similar programs/reports, plagiarism, cheating, undue
collaboration, or other forms of academic dishonesty will be
reported to the Student Disciplinary Office as a violation of the
Student Honor Code.
Algorithm
A procedure for solving a computational problem
(ex: sorting a set of integers) in a finite number
of steps.
More specifically: a stepstep-byby-step procedure for
solving a problem or accomplishing something
(especially using a computer).
1
Solving a Computational Problem
Problem definition & specification
RSA.
Quicksort..
Quicksort
FFT.
Huffman codes.
Network flow.
Linear programming.
specify input, output and constraints
Algorithm analysis & design
Examples
devise a correct & efficient algorithm
Implementation planning
Coding, testing and verification
Input
Algorithm
Output
Cryptography.
Databases.
Signal processing.
Data compression.
Routing Internet packets.
Planning, decisiondecision-making.
What is CS435/535?
Learn wellwell-known
algorithms and the
design and analysis of
algorithms..
algorithms
Big--O notation
Big
Examine interesting
problems.
Devise algorithms for
solving them.
Data structures and core
algorithms.
Analyze running time of
programs.
Critical thinking.
thinking.
Asymptotic Complexity
Running time of an algorithm as a function of input
size n for large n.
Asymptotic Notation
Expressed using only the highest
highest--order term in the
expression for the exact running time.
Instead of exact running time, say Θ(n2).
Describes behavior of function in the limit.
Written using Asymptotic Notation.
Θ, O, Ω, o, ω
Defined for functions over the natural numbers.
numbers.
Ex: f(n) = Θ(n2).
Describes how f(n) grows in comparison to n2.
Define a set of functions; in practice used to compare
two function sizes.
The notations (Θ, O, Ω, o, ω) describe different rate
rate--ofofgrowth relations between the defining function and the
defined set of functions.
2
O-notation
Examples
O(g(n)) = {f(n) : ∃ positive constants c and n0,
such that ∀n ≥ n0, we have 0 ≤ f(n) ≤ cg(n) }
For function g(n), we define O(g(n)),
big-O of n, as the set:
O(g(n)) = {f(n) :
∃ positive constants c and n0,
such that ∀n ≥ n0,
n2 +1
n2 +n
1000
1000nn2 +1000n
n1.999
n2/log n
n2/log log logn
we have 0 ≤ f(n) ≤ cg(n) }
Intuitively: Set of all functions whose
rate of growth is the same as or lower
than that of g(n).
O(n2)
Technically, f(n) ∈ O(g(n)).
Older usage, f(n) = O(g(n)).
g(n) is an asymptotic upper bound for f(n).
Ω -notation
For function g(n), we define Ω(g(n)),
big-Omega of n, as the set:
Ω(g(n)) = {f(n) :
∃ positive constants c and n0,
such that ∀n ≥ n0,
we have 0 ≤ cg(n) ≤ f(n)}
Intuitively: Set of all functions whose rate of growth is the
same as or higher than that of g(n).
g(n) is an asymptotic lower bound for f(n).
Example
Ω(g(n)) = {f(n) : ∃ positive constants c and n0, such
that ∀n ≥ n0, we have 0 ≤ cg(n) ≤ f(n)}
√n = Ω(lg n). Choose c and n0.
1000n2 + 1000n
1000n2 − 1000n
n3
n2.00001
n2 log log log n
22 n
Example
Θ-notation
For function g(n), we define Θ(g(n)),
big-Theta of n, as the set:
Θ(g(n)) = {f(n) :
∃ positive constants c1, c2, and n0,
such that ∀n ≥ n0,
we have 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n)
}
Intuitively: Set of all functions that have the same rate of
growth as g(n).
Θ(g(n)) = {f(n) : ∃ positive constants c1, c2, and n0,
such that ∀n ≥ n0, 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n)}
10nn2 - 3n = Θ(n2)
10
To compare orders of growth, look at the
leading term.
Exercise: Prove that n2/2
/2--3n= Θ(n2)
g(n) is an asymptotically tight bound for f(n).
3
Relations Between O, Ω, Θ
Exercise
n-106 = Ω(n)
Relations Between Θ, Ω, O
Example
3n3 =
3n
Θ(n4)
Is
How about 22n= Θ(2n)?
How about log2n = Θ(log10n)?
Theorem : For any two functions g(n) and f(n),
f(n) = Θ(g(n)) iff
f(n) = O(g(n)) and f(n) = Ω(g(n)).
?
i.e., Θ(g(n)) = O(g(n)) ∩ Ω(g(n))
f(n) = Θ(g(n)) ⇒ f(n) = O(g(n)).
Θ(g(n)) ⊂ O(g(n)).
In practice, asymptotically tight bounds are obtained
from asymptotic upper and lower bounds.
Properties
Comparison of Functions
f↔g ~ a↔b
f(n) = Θ(g(n)) ⇒ f(n) = Ω(g(n)).
Θ(g(n)) ⊂ Ω(g(n)).
Transitivity
f(n) = Θ(g(n)) and g(n) = Θ(h(n)) ⇒ f(n) = Θ(h(n))
f(n) = O(g(n)) and g(n) = O(h(n)) ⇒ f(n) = O(h(n))
f(n) = Ω(g(n)) and g(n) = Ω(h(n)) ⇒ f(n) = Ω(h(n))
f(n) = o (g(n)) and g(n) = o (h(n)) ⇒ f(n) = o (h(n))
f(n) = ω(g(n)) and g(n) = ω(h(n)) ⇒ f(n) = ω(h(n))
f (n) = O(
O(g(n)) ~ a ≤ b
f (n) = Ω(g(n)) ~ a ≥ b
f (n) = Θ(g(n)) ~ a = b
Reflexivity
f(n) = Θ(f(n))
f(n) = O(f(n))
f(n) = Ω(f(n))
4
Properties
Limits
Symmetry
f(n) = Θ(g(n)) iff g(n) = Θ(f(n))
lim [f(n) / g(n)] < ∞ ⇔ f(n) ∈ Ο(g(n))
n→∞
0 < lim [f(n) / g(n)] < ∞ ⇔ f(n) ∈ Θ(g(n))
n→∞
Complementarity
f(n) = O(g(n)) iff g(n) = Ω(f(n))
((ff(n))
f(n) = o(g(n)) iff g(n) = ω((
n→∞
constant
logarithmic
linear
nlogn
quadratic
cubic
exponential
exponential
etc.
lim [f(n) / g(n)] undefined ⇒ can’t say
n→∞
Fibonacci Numbers
complexity classes
adjective
0 < lim [f(n) / g(n)] ⇔ f(n) ∈ Ω(
Ω(g(n))
Θ-notation
Θ(1)
Θ(logn
logn))
Θ(n)
Θ(nlogn
nlogn))
Θ(n2)
Θ(n3)
Θ(2n)
Θ(10n)
HW due next Friday
Fibonacci Numbers
Ch0 1.a,c,e,g,i,o; 4.a,b
5
© Copyright 2025