CSE 2320 Fall 1999 Outline for Exam 2 - Closed Book, Closed Notes (*) indicates areas emphasized on this exam 'EXECUTION' indicates algorithms you may be asked to execute Algorithm Analysis - line-by-line analysis of an algorithm - derive expression of running time - determine best, average and worst cases Algorithm Design - incremental (iterative) design - divide-and-conquer (recursive) design Asymptotics - meaning of asymptotically tight bound - definition of Theta, Big-Oh and Big-Omega - exponentials, logarithms and factorials Summations - definition and Sigma notation - know formula for arithmetic series - know formula for geometric series Recurrences - deriving recurrences from recursive algorithms - solving using substitution method - solving using iteration method Sorting - know best, average and worst case running times and situations where they apply for - InsertionSort - MergeSort - HeapSort - QuickSort - CountingSort Elementary Data Structures - know definition of data structure and running times of dynamic set operations for - stacks - queues - various types of linked lists - hash tables - conditions under which useful as a data structure - collision resolution by chaining - open addressing - binary search trees - red-black trees - B-trees Dynamic Programming - definition of optimal substructure - how to prove - overlapping subproblems - recursive solution - bottom-up solution - memoization - problems (know above concepts for) - matrix-chain multiplication - longest common subsequence - rental car problem Greedy Algorithms - greedy choice - definition of greedy choice property - how to prove - problems (know above concepts and EXECUTION of greedy algorithm for) - fractional knapsack - activity selection - Huffman coding - coin changing Elementary Graph Algorithms (*) - graph representation - adjacency list - adjacency matrix - breadth-first search - breadth-first tree - algorithm EXECUTION and running time - depth-first search - discover and finish times - algorithm EXECUTION and running time - topological sort - EXECUTION and running time - strongly-connected components - EXECUTION and running time Minimum Spanning Trees (*) - definition - Prim's algorithm - EXECUTION and running time Maximum Flow (*) - definitions - flow network - augmenting path - residual network - Ford-Fulkerson and Edmonds-Karp algorithms - EXECUTION and running time String Matching (*) - definition of problem - naive string matcher - running time - Knuth-Morris-Pratt string matcher - definition and computation of prefix array - running time