Nattee Niparnan Dept. of Computer Engineering, Chulalongkorn University

Preview:

Citation preview

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

Recommended