1 / 78

Book: Introduction to Algorithms , by: Thomas H. Cormen Charles E. Leiserson

Reference. Book: Introduction to Algorithms , by: Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein. Electronic: http :// ocw.mit.edu /courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/.

violet
Download Presentation

Book: Introduction to Algorithms , by: Thomas H. Cormen Charles E. Leiserson

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. Computer Sciences Department

  2. Reference Book: Introduction to Algorithms, by: Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein Electronic: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/ Computer Sciences Department

  3. The Role of Algorithms in Computing Computer Sciences Department

  4. Lecture Contents (objectives) Computer Sciences Department • The Role of Algorithms in Computing • The problem of sorting • What kinds of problems are solved by algorithms? • Hard problems • Algorithms as a technology • Insertion sort • Analysis of insertion sort • Example of insertion sort • (Best, Worst and Average) case analysis • Merge sort • The divide-and-conquer approach • Analyzing merge sort • Example of merge sort • Recursion tree

  5. The Role of Algorithms in Computing Computer Sciences Department What are algorithms? Why is the study of algorithms worthwhile? What is the role of algorithms relative to other technologies used in computers?

  6. Algorithms Computer Sciences Department Informally, an algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. An algorithm is thus a sequence of computational steps that transform the input into the output.

  7. Design and Analysis of Algorithms • Analysis: predict the cost of an algorithm in terms of resources and performance • Design: design algorithms which minimize the cost Computer Sciences Department

  8. Algorithms In general, an instance of a problem consists of the input (satisfying whatever constraints are imposed in the problem statement) needed to compute a solution to the problem. Computer Sciences Department Computational problem.

  9. The problem of sorting Input: sequence <a1, a2, …, an > of numbers. Output: permutation <a'1, a'2, …, a'n> such that a'1£a'2£ …£a'n. Example: Input:8 1 4 9 3 7 Output:1 3 4 7 8 9 Computer Sciences Department

  10. Computer Sciences Department An algorithm is said to be correct if, for every input instance, it halts with the correct output

  11. What kinds of problems are solved by algorithms? Computer Sciences Department The Human Genome Project -has the goals of identifying all the 100,000 genes in human DNA, determining the sequences of the 3 billion chemical base pairs that make up human DNA - storing this information in databases, and developing tools for data analysis. The Internet enables people all around the world to quickly access and retrieve large amounts of information. (to manage and manipulate this large volume of data)

  12. What kinds of problems are solved by algorithms? (cont’d) Example: an equation ax ≡ b (mod n), where a, b, and n are integers, and we wish to find all the integers x, modulo n, that satisfy the equation. There may be zero, one, or more than one such solution. We can simply try x = 0, 1, . . . , n − 1 in order, but Chapter 31 shows a more efficient method. Computer Sciences Department Electronic commerce. In manufacturing and other commercial settings.

  13. Data structure Technique Computer Sciences Department A data structure is a way to store and organize data in order to facilitate access and modifications.

  14. Hard problems Computer Sciences Department Efficient algorithms. NP-complete problems. (decision problem) – First, although no efficient algorithm for an NP-complete problem has ever been found, nobody has ever proven that an efficient algorithm for one cannot exist. It is unknown whether or not efficient algorithms exist for NP-complete problems.

  15. Computer Sciences Department

  16. Algorithms as a technology Computer Sciences Department Would you have any reason to study algorithms? YES. If computers were infinitely fast, any correct method for solving a problem would do. Computers may be fast, but: - memory may be cheap, but it is not free. Computing time is therefore a bounded resource, and so is space in memory. These resources should be used wisely, and algorithms that are efficient in terms of time or spacewill help you do so.

  17. Very important Computer Sciences Department Which computer/ algorithm is faster?

  18. Computer Sciences Department

  19. Computer Sciences Department

  20. Getting Started Computer Sciences Department

  21. Running time • The running time depends on the input: an already sorted sequence is easier to sort. • Major Simplifying Convention: Parameterize the running time by the size of the input, since short sequences are easier to sort than long ones. • TA(n) = time of A on length n inputs • Generally, seek upper bounds on the running time, to have a guarantee of performance. Computer Sciences Department

  22. Kinds of analyses • Worst-case:(usually) • T(n) = maximum time of algorithm on any input of size n. (upper bound on the running time) • Average-case: (sometimes) • T(n) = expected time of algorithm over all inputs of size n. • Best-case: • T(n) =minimum time of algorithm ((fastesttime to complete,with optimal inputs chosen) (lower bound on the running time)) Computer Sciences Department

  23. Worst-case and average-case analysis How long does it take to determine where in sub-array A[1 . . j − 1] to insert element A[ j ]? Computer Sciences Department The best case, in which the input array was already sorted, and the worst case, in which the input array was reverse sorted. The worst-case running time of an algorithm is an upper bound on the running time for any input.

  24. Average case Computer Sciences Department Suppose that we randomly choose n numbers and apply insertion sort. How long does it take to determine where in sub-array A[1 . . j − 1] to insert element A[ j ]? On average, half the elements in A[1 . . j − 1] are less than A[ j ], and half the elements are greater. On average, therefore, we check half of the sub-array A[1 . . j − 1], so t j = j/2.

  25. Insertion sort Start One move / comparing / insert it into the correct position 6 5 3 1 8 7 2 4 The numbers that we wish to sort are also known as the keys Insertion sort, is an efficient algorithm for sorting a small number of elements. Computer Sciences Department

  26. Insertion sort (cont’d) Computer Sciences Department

  27. Insertion sort (cont’d) “Pseudo-code conventions” 1 i j n A: key Length[A]=n Computer Sciences Department sorted

  28. Analyzing algorithms Computer Sciences Department predicting the resources that the algorithm requires. random-access machine (RAM)- Instructions are (executed one after another, with no concurrent operations) The data types in the RAM model are integer and floating point and limit on the size of each word of data. Is exponentiation a constant time instruction? “shift left” instruction.

  29. Analysis of insertion sort Computer Sciences Department The time taken by the INSERTION-SORT procedure depends on the input. INSERTION SORT can take different amounts of time: - to sort two input sequences of the same size depending on how nearly sorted they already are. - to sort thousand numbers or three numbers. The running time of an algorithm on a particular input is the number of primitive operations or “steps” executed.

  30. Analysis of insertion sort (cont’d) Best case Worst case Computer Sciences Department

  31. Analysis of insertion sort (cont’d) Computer Sciences Department

  32. Explanation Computer Sciences Department

  33. Example of insertion sort 8 1 4 9 3 7 Computer Sciences Department

  34. 8 1 4 9 3 7 Example of insertion sort Computer Sciences Department

  35. 8 1 4 9 3 7 Example of insertion sort 1 8 4 9 3 7 Computer Sciences Department

  36. 8 1 4 9 3 7 1 8 4 9 3 7 Example of insertion sort Computer Sciences Department

  37. 8 1 4 9 3 7 1 8 4 9 3 7 Example of insertion sort 1 4 8 9 3 7 Computer Sciences Department

  38. 8 1 4 9 3 7 1 8 4 9 3 7 1 4 8 9 3 7 Example of insertion sort Computer Sciences Department

  39. 8 1 4 9 3 7 1 8 4 9 3 7 1 4 8 9 3 7 Example of insertion sort 1 4 8 9 3 7 Computer Sciences Department

  40. 8 1 4 9 3 7 1 8 4 9 3 7 1 4 8 9 3 7 Example of insertion sort 1 4 8 9 3 7 Computer Sciences Department

  41. 8 1 4 9 3 7 1 8 4 9 3 7 1 4 8 9 3 7 Example of insertion sort 1 4 8 9 3 7 1 3 4 8 9 7 Computer Sciences Department

  42. 8 1 4 9 3 7 1 8 4 9 3 7 1 4 8 9 3 7 Example of insertion sort 1 4 8 9 3 7 1 3 4 8 9 7 Computer Sciences Department

  43. 8 1 4 9 3 7 1 8 4 9 3 7 1 4 8 9 3 7 Example of insertion sort 1 4 8 9 3 7 1 3 4 8 9 7 1 3 4 7 8 9 Computer Sciences Department

  44. The divide-and-conquer approach Computer Sciences Department Divide the n-element sequence to be sorted into two subsequences of n/2 elements each. The merge sort algorithm closely follows the divide-and-conquer paradigm.

  45. Computer Sciences Department

  46. MERGE-SORTA[1 . . n] • If n = 1, done. • Recursively sort A[ 1 . . n/2 ] and A[ n/2+1 . . n ] . • “Merge” the 2 sorted lists. MERGE-SORT Computer Sciences Department

  47. T(n) = Q(1) ifn = 1; 2T(n/2) + Q(n) ifn > 1. Analyzing merge sort T(n) Q(1) 2T(n/2) Q(n) MERGE-SORTA[1 . . n] • If n = 1, done. • Recursively sort A[ 1 . . n/2 ] and A[ n/2+1 . . n ] . • “Merge” the 2 sorted lists Recurrence for merge sort Computer Sciences Department

  48. Computer Sciences Department

  49. Merge sort Computer Sciences Department MERGE(A, p, q, r), where A is an array and p, q, and r are indices numbering elements of the array such that p ≤ q < r.

More Related