Algorithm DesignNattee Niparnan
Dept. of Computer Engineering,Chulalongkorn University
The CourseMidterm 40%Final 40%Something else 20%
Quiz 10%Lab 10%
Yes, we have labsThis year, we introduce lab
You will be required to participate in “online” activities
Writing code (in C language)
Teacher and TA will help you
TopicsAnalysis
Asymptotic notationBig O analysisNP-Complete
DesignDivide and ConquerDynamic ProgrammingGraph AlgorithmGreedy AlgorithmSearch
There will be labs for each
of these topics
Books : Required Algorithms, S. Dasgupta, C. Papadimitriou
and U. Vazirani, McGraw-Hill, 2008
Books : Supplementalการวิ�เคราะห์และออกแบบอ�ลกอร�ทึ�ม, สมชาย ประส�ทึธิ์��จู�ตระก�ล, NECTEC, 2544
Data Structure & Algorithm Analysis, Mark Allen Weiss.
Introduction to Algorithms 2nd edition, T. Cormen, C. Leiserson, R. Rivest, C. Stein, MIT Press & McGraw-Hill, 2001.
Introduction to Algorithms: A Creative Approach, Udi Manber.
WebWebboard
http://www.cp.eng.chula.ac.th/webboard/viewforum.php?f=18
Lab http://www.nattee.net/teaching/You can also find my slides there
IntroductionChapter 0
What is an algorithm?A precise instruction based on elementary
operationWhich takes something as an input and process
it to some output
Usually to solve some problems
What is Problem?A task with precise description of admissible
input and the “property” of the desired output
E.g., GCDGiven two positive integers (input)Determine GCD of the given integers
(express the property of the desired output) GCD is well defined
Problem InstanceDetermining GCD is a problem
How many actual problems? GCD of 1,2 ? GCD of 234,42? ???
Problem instance A problem with a specific inputE.g., find a GCD of 42 and 14
Purpose of this class“how to design an algorithm for given
problems”AnalysisSynthesis emphasized….
CorrectnessFor any instances, it must produce appropriate
outputEfficient!!
Calculating Fibonacci SequenceFibonacci sequence
1,1,2,3,5,7,8,13,21,34,55,89,144,233,377,610,987,1597,2584
;1:
;1:
;0:
1
0
21
n
n
n
FF
F
nn
n
The ProblemInput:
a positive number NOutput:
Fn (the nth Fibonacci Number)
Example instancesEx. 1: N = 10Ex. 2: N = 15Ex. 3: N = 0
N = -4 is not an instances of this problem!!!
Approach 1Array based
DP (linear)
1 1 2 3 5 8 13 21 34 55
Approach 2
Recursive (exponential)
F(9)
F(8)
F(7)
F(7)
F(6)
F(6)
F(5)
… … … …
Approach 3
Divide and Conquer (logarithmic)
1
0
2
1
11
10
F
F
F
F
1
2
1
1
11
10
n
n
n
n
n
F
F
F
F
Approach 3Find exponential
Divide and Conquer (logarithmic)
odd isn ;
even isn ;2/2/
2/2/
xxx
xxx
nn
nnn
Approach 4
Closed form solution (constant)
5
51
22
51nn
nF
Golden Ratio
ConclusionDifference Design Difference PerformanceThis class emphasizes on designing “efficient
algorithm”
Algorithm AgainIt is the essence of the computation
Side Note on AlgorithmNamed after a
Persian mathematician “Muhammad ibn Musa Khwarizmi”
Wrote book on linear equation
Introduce number 0
Topics OverviewAnalysis part
Asymptotic NotationMeasurement of “efficiency” of algorithms
How to compare two algorithmsHow to predict behavior of the algorithm
Big O analysisHow to determine Big O of some codeRecurrent Relation
NP-CompleteWhat computer could solve
EfficientlyInefficiently
The difference between “Efficiency” and “Inefficiency”
Topics OverviewSynthesis part
Divide and ConquerSolve a problem instance by dividing into
smaller instanceBased on induction
Dynamic ProgrammingReduce redundancy computationFor the case when there are several
overlapping subproblem
Greedy AlgorithmSolve the problem by doing the best for the
current step
Proof of correctness
Graph AlgorithmAlgorithm related to graph structure
Shortest PathMinimal Spanning Tree
SearchSolve the problem by enumeration
Systematical enumerationPerformance improvement