Analysis & Design of Algorithms (CSCI 321)

Download Report

Transcript Analysis & Design of Algorithms (CSCI 321)

Analysis & Design of
Algorithms
(CSCE 321)
Prof. Amr Goneid
Department of Computer Science, AUC
Part 0. Course Outline
Prof. Amr Goneid, AUC
1
Analysis & Design of Algorithms
Prof. Amr Goneid, AUC
2
Course Resources







Instructor: Prof. Amr Goneid
E-mail: [email protected]
Office: Rm 2152 SSE
Text Books:
 “Introduction to the Design and Analysis of Algorithms “,
by Anany V. Levitin
Pearson Higher Education, International Edition, 2/E, 2007
 “Computer Algorithms/C++”, by Horowitz, Sahni and Rajasekaran,
Computer Science Press, 1997
Other References:

“The Algorithm Design Manual”, by S. Skiena,
Springer-Verlag, 1998

“Algorithms in C++”, by R. Sedgewick, Addison-Wesley, 1992
Language: C++
Web Site: www.cse.aucegypt.edu/~csci321/
Prof. Amr Goneid, AUC
3
Analysis & Design of Algorithms
 Algorithm analysis
Analysis of resource usage of given
algorithms (time , space)
 Efficient algorithms
Algorithms that make an efficient usage of
resources
 Algorithm design
Methods for designing efficient algorithms
Prof. Amr Goneid, AUC
4
Analysis & Design of Algorithms
Why study this subject?
 Efficient algorithms lead to efficient
programs.
 Efficient programs sell better.
 Efficient programs make better use of
hardware.
 Programmers who write efficient
programs are preferred.
Prof. Amr Goneid, AUC
5
Objectives
 To gain experience in fundamental
techniques used for algorithm analysis.
 To gain experience in the main
methodologies used for the design of
efficient algorithms.
 To study the most important computer
algorithms of current practical use.
Prof. Amr Goneid, AUC
6
Contents

Material for Revision and Reference (Mainly from
CSCE 210)
R1. Elementary Data Structures
R2. Binary Search Trees
R3. Priority Queues
R4. Disjoint Sets
R5. Graphs
 Basics
1. Complexity Bounds
2. Types of Complexities
3. Time Complexity Calculations
Prof. Amr Goneid, AUC
7
Contents
 Analysis of Iterative and Recursive Algorithms
Brute Force Algorithms
5. Recursive Algorithms
 Major Algorithm Design Methodologies
6. Transform & Conquer Algorithms
7. Divide & Conquer Algorithms
8. Greedy Algorithms
9. Intermezzo
10. Dynamic Programming
11. Backtracking Algorithms
12. Graph Algorithms
13. Branch & Bound
14. Other Strategies (Heuristics, String & Numerical Algorithms)
4.
Prof. Amr Goneid, AUC
8
Grading
 25 %
Assignments
5 %
Quizzes, class participation and
attendance
 20 %
1st Midterm Exam
 20 %
2nd Midterm Exam
 30 %
Final Exam
 All exams are closed book
Prof. Amr Goneid, AUC
9
Course Outcomes
After completing the CSCE 321, students should be able to:
1.
2.
3.
4.
Use big O, omega, and theta notation to give asymptotic upper, lower,
and tight bounds on time and space complexity of algorithms.
Determine the time and space complexity of simple algorithms.
Recognize the difference between mathematical modeling and
empirical analysis of algorithms, and the difference between
deterministic and randomized algorithms.
Deduce recurrence relations that describe the time complexity of
recursively defined algorithms and work out their particular and
general solutions.
Prof. Amr Goneid, AUC
10
Course Outcomes
5.
Practice the main algorithm design strategies of Brute Force, Exclude
& Conquer, Transform & Conquer, Divide & Conquer, Greedy
methods, Dynamic Programming, Backtracking and Branch & Bound
and implement examples of each.
6.
Identify examples of everyday human behavior that exemplifies the
basic concepts of the main design strategies.
7.
Implement the most common quadratic and O(N log N) sorting
algorithms and perform their complexity analysis.
8. Solve problems using the fundamental graph algorithms including
depth-first and breadth-first search, single-source and all-pairs shortest
paths, transitive closure, topological sort, and the minimum spanning
tree algorithms.
9. Evaluate, select and implement algorithms in programming context.
Prof. Amr Goneid, AUC
11