CS 270 Algorithms
Total Page:16
File Type:pdf, Size:1020Kb
CS 270 Algorithms Oliver Week 11 Kullmann Introduction Algorithms and their Revision analysis Graphs Data 1 Introduction structures Conclusion 2 Algorithms and their analysis 3 Graphs 4 Data structures 5 Conclusion CS 270 General remarks Algorithms Oliver Kullmann You need to be able to perform the following: Introduction Algorithms and their Reproducing all definitions. analysis Performing all computations on (arbitrary) examples. Graphs Data Explaining all algorithms in (written) words (possibly using structures some mathematical formalism). Conclusion Stating the time complexity in term of Θ. Check all this by writing it all down! Actually understanding the definitions and algorithms helps a lot (but sometimes “understanding” can become a trap). CS 270 How to prepare Algorithms Oliver Kullmann All information is on the course homepage Introduction Algorithms and their analysis Graphs http://cs.swan.ac.uk/~csoliver/Algorithms201314/index.html Data structures Conclusion Go through all lectures (perhaps you download the slides again — certain additions have been made). Go through the courseworks and their solutions. Go through the lab sessions (run it!). Use the learning goals! CS 270 On the exam Algorithms Oliver Kullmann Introduction Algorithms and their analysis We use the “two-out-of-three” format. Graphs Data Give us a chance to give you marks — write down structures something! Conclusion Actually, better write down a lot — in the second or third round, after answering all questions. Examples are typically helpful. CS 270 The general structure of the module Algorithms Oliver Kullmann Introduction Algorithms and their analysis Graphs Data 1 Weeks 1-3: Algorithms and their analysis structures 2 Weeks 4-5: Graphs — BFS and DFS. Conclusion 3 Weeks 6-10: Data structures. CS 270 Sorting algorithms Algorithms Oliver Kullmann Introduction Algorithms and their We considered four sorting algorithms in detail: analysis Graphs Insertion-Sort, Merge Sort, Heap-Sort and Quick-Sort. Data structures Conclusion These algorithms you should know in detail. Know their run-times. Know how to derive these run-times. Explain them, and know their differences and similarities. CS 270 Order of growth Algorithms Oliver Kullmann Get a working understanding of Introduction Algorithms O, Ω, Θ and their (that is, know how to use them, and how to work with them). analysis Graphs Data This includes developing an intuitive grasp on the main types of structures Conclusion growth rates: n log n, √n, n, n log n, n2, n3, 2 , n! You need also to know the definitions. And you need to know the various techniques for working with terms/expressions/formulas (“rewrite rules”). CS 270 Solving recurrences Algorithms Oliver Kullmann Introduction Algorithms and their analysis Know the (simplified) master theorem! Graphs Data structures Conclusion Especially know the three cases. And know various examples. It’s mostly practice. CS 270 Concepts Algorithms Oliver Kullmann Introduction For graphs, various definitions and their relations are of central Algorithms importance: and their analysis Graphs 1 Know the definitions of “graphs” and “digraphs”. Data 2 Know the definition of a “dag”. structures Conclusion 3 Know the definition of “connected (di)graphs”. 4 Know the definition of a “tree”. 5 Know what a “rooted tree” is: 1 Many important notions are connected to it (“root, children, parent, leaf”). 2 Know what “ordered rooted trees” are. 3 Know what “binary trees” are. CS 270 Basic graph algorithms Algorithms Oliver Kullmann You need to know BFS, DFS well. Introduction Algorithms and their analysis This means: Graphs Data 1 Be able to explain them (including pseudo-code). structures Conclusion 2 Be able to run them (on paper). 3 How are the trees resp. forests represented? 4 Know what d[u] for BFS is. 5 Know what d[u], f [u] for DFS is. A basic application of BFS or DFS is the detection of cycles (understand this, for graphs and digraphs). Another application of DFS is topological sorting. CS 270 Stacks and queues Algorithms Oliver Kullmann Introduction Algorithms and their analysis Most important here is Graphs Data the abstract data type (ADT), structures Conclusion i.e., what are the operations and what is their meaning? Also essential (and easy) is to know the complexity of these operations in the standard implementation. CS 270 Linked lists Algorithms Oliver Kullmann Introduction Algorithms and their Here most important are analysis Graphs Data how are (doubly) linked lists implemented? structures how is insertion performed? Conclusion how is deletion performed? As usual, you need to know the complexity of the basic operations (which includes searching in lists). CS 270 Binary search trees Algorithms Oliver Kullmann Don’t mix up these trees with the spanning trees we Introduction encountered with graphs. Algorithms and their analysis Know the basics of the abstract data types considered. Graphs Data Know and understand the notion of a “binary search tree”. structures Understand searching in such trees. Conclusion Understand insertion and deletion (be able to perform it, and to explain the algorithms in general). Important is to understand the dependency of the complexity of the operations on the height of the trees. CS 270 Hash tables Algorithms Oliver Kullmann Introduction Algorithms and their analysis Essential are the ideas: Graphs Data It’s all about hash functions. structures Conclusion Direct addressing is an important special case. Collisions can be solved rather efficiently by the chaining method. CS 270 Binary heaps Algorithms Oliver Kullmann Introduction Algorithms and their Again, essential are the ideas: analysis Graphs “Binary heaps” are “complete” binary trees with the “heap Data property”. structures Conclusion We have an efficient array-based implementation. “Heapification” is a key procedure. 1 With it we can build a binary heap efficiently. 2 Heap-Sort is another application. 3 And we get an efficient implementation of priority queues. CS 270 Quick-Sort Algorithms Oliver Kullmann Introduction Algorithms and their analysis Again, understand the ideas: Graphs Data Pseudo-code for the main procedure should be easy. structures Conclusion A different form of partitioning (different from Merge-Sort). Know the key points of the analysis (“good on average”, “bad on worst-case”). CS 270 Further remarks Algorithms Oliver Kullmann Introduction Algorithms and their analysis Compared to previous years: elementary hashing could Graphs Data come up. structures You should be able to develop simple divide-and-conquer Conclusion algorithms, analysing them via recurrences, and determine an expression Θ(n) for their run-time via the (always simplified) Master Theorem. CS 270 The end Algorithms Oliver Kullmann Introduction Algorithms and their analysis Graphs Data structures I wish you a productive preparation phase. Conclusion.