1 / 28

CS333 Algorithms Course: Develop Efficient Algorithms, Analyze Complexity, and Compare Design Methods

This course teaches critical thinking skills for problem solving, developing correct and efficient algorithms, analysis of time and space complexity, key algorithms and design strategies, and the theory of NP-completeness.

stoneb
Download Presentation

CS333 Algorithms Course: Develop Efficient Algorithms, Analyze Complexity, and Compare Design Methods

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS333 Algorithms • http://www.cs.binghamton.edu/~kang/teaching/cs333/

  2. Course Objectives Critical thinking for problem solving Develop correct and efficient algorithms Analysis of time and space complexity Learn key algorithms and learn how to analyze and compare them Learn how to design algorithms using well known methods such as divide and conquer, greedy methods, and dynamic programming Theory of NP-completeness Enjoy the beauty of algorithms!

  3. Chapter 1 • Definition of algorithms • Sample problems and algorithms • Review of basic math needed for this course as necessary • Analysis • Time complexity • Notion of Order: big O, small o, Ω, Θ

  4. Basic Concepts • Algorithm: A step-by-step procedure for solving a problem. • Exemplar problems - Sort a list S of n numbers in non-decreasing order - Determine whether a number x is in the list S of n numbers - Matrix multiplication

  5. Importance of Algorithm Efficiency • Time • Storage • Example - Sequential search vs. binary search Basic operation: comparison Number of comparisons grows at different rates - nth Fibonacci sequence Recursive versus iterative solutions

  6. Example: search strategy • Sequential search vs. binary search Problem: determine whether x is in the sorted array S of n keys Inputs: key x, positive integer n, sorted (non-decreasing order) array of keys S indexed from 1 to n Output: location of x in S (0 if x is not in S)

  7. Example: search strategy • Sequential search: Basic operation: comparison Void Seqsearch(int n, const keytype S[], keytype x, index& location) { location=1; while(location<=n && S[location] != x) location++; if(location > n) location = 0; }

  8. Example: search strategy • Binary search: Basic operation: comparison Void Binsearch(int n, const keytype S[], keytype x, index& location) { index low, high, mid; low = 1; high =n; location=0; while(low<=high && location ==0) { mid = floor((low+high)/2); if(x==S[mid]) location = mid; else if (x< S[mid]) high = mid -1; else(low = mid +1); } }

  9. Example: number of comparisons • Sequential search: n 32 128 1024 1,048,576 • Binary search: lg(n) + 1 6 8 11 21 Eg: S[1],…, S[16],…, S[24], S[28], S[30], S[31], S[32] (1st) (2nd) (3rd) (4th) (5th) (6th)

  10. Analysis of Time Complexity • Input size • Basic operation • Time complexity for the size of input, n - T(n) : Every-case time complexity - W(n): Worst-case time complexity - A(n): Average-case time complexity - B(n): Best-case time complexity • T(n) example - Add array members; Matrix multiplication; Exchange sort T(n) = n-1; n*n*n n(n-1)/2

  11. Math preparation • Induction • Logarithm • Sets • Permutation and combination • Limits • Series • Asymptotic growth functions and recurrence • Probability theory

  12. Programming preparation • Data structure • C • C++

  13. Presenting Commonly used algorithms • Search (sequential, binary) • Sort (mergesort, heapsort, quicksort, etc.) • Traversal algorithms (breadth, depth, etc.) • Shortest path (Floyd, Dijkstra) • Spanning tree (Prim, Kruskal) • Knapsack • Traveling salesman • Bin packing

  14. Well known problem • Problem: Given a map of North America, find the best route from New York to Orlando? • Many efficient algorithms • Choose appropriate one (e.g., Floyd’s algorithm for shortest paths using dynamic programming)

  15. Another well known problem • Problem: You are supposed to deliver newspapers to n houses in your town. How can you find the shortest tour from your home to everybody on your list and return to your home? • One solution to traveling salesperson problem: dynamic programming

  16. Another well known problem (continued) • No efficient algorithm to general problem • Many heuristic and approximation algorithms (e.g., greedy heuristic) • Choose appropriate one

  17. Another well known problem (continued) • Computational Geometry • Find a convex hull • Delaunay triangulation • Voronoi Diagram

  18. Design Methods or Strategies • Divide and conquer • Greedy • Dynamic programming • Backtrack • Branch and bound

  19. Not addressed (Advanced algorithms) • Genetic algorithms • Neural net algorithms • Algebraic methods

  20. Theory of NP completeness • Many common problems are NP-complete • traveling salesperson, knapsack,... • NP: non-deterministic polynomial • Fast algorithms for solving NP-complete problems probably don’t exist • Approximation algorithms are used (e.g., minimum spanning tree derived by Prim’s algorithm using triangle inequality)

  21. Hardware Software Economics Biomedicine Computational geometry (graphics) Decision making Scheduling ….. Are algorithms useful? “Great algorithms are the poetry of computation”

  22. Hardware Design • VLSI design • Multiplication • Search • Sort networks 3 7 8 6 2 Selection sort for A[1], …, A[n-1] 2 3 6 7 8

  23. Software • Text processing • String matching, spell checking, and pretty print,… • Networks • Minimum spanning trees, routing algorithms, … • Databases • Compilers

  24. Text processing – pretty print I want ¶ this page ¶ to look good ¶ I want this page ¶ to look good ¶ Method: Dynamic programming

  25. Engineering • Optimization problem (e.g., finite element, energy minimization, dynamic simulation). • Best feature selection for object representation and biometrics recognition (e.g., Genetic Algorithm) • Mathematics: geometric simulation and approximation (e.g., algorithm approximation) • Graphics visualization (e.g., area filling and scan conversion, 3D key framing). • Signal analysis: FFT, Huffman coding…

  26. Economics • Transportation problems • Shortest paths, traveling salesman, knapsack, bin packing • Scheduling problems • Location problems (e.g., Voronoi Diagram) • Manufacturing decisions

  27. Social decisions • Matching problem • Assigning residents to hospitals • Matching residents to medical program

  28. Critical thinking for problem solving • Consider different approaches to solving a problem such as dynamic programming and greedy approaches • Analyze the merits of each • Consider different implementations for a chosen approach • Analyzing the merit of the different implementation

More Related