580 likes | 603 Views
Course Review. 15-211 Fundamental Structures of Computer Science. Ananda Guna May 04, 2006. This course was about. How to solve computing problems using: Problem analysis , to abstract away details and divide into smaller subproblems.
E N D
Course Review 15-211 Fundamental Structures of Computer Science Ananda Guna May 04, 2006
This course was about • How to solve computing problems using: • Problem analysis, to abstract away details and divide into smaller subproblems. • Mathematical foundations for precise formulations of problems and solutions. • Data structures and algorithms to solve problems correctly and efficiently. • Java programming and modular software construction for good implementations.
Data Structures/Algorithms • -Complexity • big-O, little-O, Omega etc.. • Lists • linked, doubly, singly, multi-linked • Trees • general, B-trees, BST, splay, AVL, etc. • Stacks and Queues • operations, analysis • Heaps • binary, binomial • Hash Tables • collisions, implementation • Graphs • traversals, shortest paths • FSM • regular expressions, KMP • String Matching • KMP, Boyer-Moore, Rabin-Karp .
Data Structures/Algorithms • Dynamic Programming • table(bottom-up), recursion(top-down) • memoization • Game Trees • mini-max, alpha-beta, iterative deepening • - Sorting • bubble, quick, insertion, selection • Algorithms • findMax, findMedian, reverse, MST, compression • Traversals, shortest path
Java Programming Object oriented programming. Correctness (loop invariants, induction). Time and space complexity. Debugging (test harness).
Studying for the Final Exam • Review all material first • Lectures, programs, quizzes • Do sample finals – under time restrictions. • Old finals are in blackboard/course material • Types and difficulty of problems may be similar (some topics not covered)
Complexity f(n)=n2 g(n) = n h(n) = log n f(n) is O(g(n)) iff f(n) is o(g(n)) iff f(n) is Ω(g(n)) iff f(n) is θ(g(n)) iff
Complexity True or False? If true prove it, else give counter example
Space Complexity • How much memory is needed to run the program • quicksort • merge Sort • insertion sort • Prim’s • Dijkstra’s Key Point: consider the sizes of the data structures used
Solving Recurrences, Asymptotics • Solve T(n) = 3 T(n/3) + 1 • Prove the correctness • By induction • Invariants • Hold initially • Preserved after each iteration of loop or method call • Or other methods
Complexity A is an array of integers
Sorting and lower bounds Insertion Sort Selection Sort Heapsort Mergesort Quicksort Radix Sort
AVL Trees • Traverse the tree inorder • Do exactly two rotations so that the tree is balanced • 3. Consider a binary tree of height h • What are the max and min number of nodes? • What are the max and min number of leaves? • 4. Perfect, full, complete trees
Full, Complete and Perfect Trees • Definitions • Full, complete and perfect • Ex:Show that a full binary tree with n leaves has (n-1) internal nodes. (use induction on n) Therefore a full binary tree with n leaves has (2n-1) nodes • Ex: Start from the root and do a preorder traversal as follows. Write 1 for a node with 2 children. Visit left child, then right child. Write 0 if the node is a leaf. Therefore a full binary tree with 3 nodes can be represented by bit sequence 100. • What is the bit sequence representing a full binary tree with 8 leaves?
Hashing • Describe why hashing a string to sum of its characters is not a good idea. • Assume S = a1a2….an is a string • Define H(S) = ai2i-1 (i=1..n) • Describe a way to efficiently calculate H(S)
Priority Queues and Heaps • Suppose you implement a priority queue using following • Unsorted array • Linked list (smallest at front) • Heap • What is the complexity in each case for • deleteMin • insert
Data Compression • Encode “I AM SAM SAM I AM SAM SAM” using • Huffman compression • LZW • In each case calculate the compression ratio • Is it possible to apply Huffman after applying LZW? • If so apply Huffman to output generated by LZW above
Graphs Adjacency lists and matrices Traversal (DFS, BFS) Reachability (DFS, BFS, Warshall) Shortest Paths (Dijkstra, Bellman-Ford) MST (Prim, Kruskal)
Graphs • What is breadth first traversal(BFS)? • What is depth first traversal(DFS)? • What data structures can be used to implement each one? • Reachability • Connected components • Topological sort
Greedy Algorithms 60 60 50 40 20 50 50 40 40 60 40 10 100 20 20 30 20 50 40 150 Find the Shortest Path from Node 1 to every other node
MST • Find the MST using • a. Prim’s Algorithm • b. Kruskal’s algorithm
Homework • A graph G is bipartite if the vertex set V can be partitioned into two subsets L and R, such that every edge has one vertex in L the other in R. Give an example of a bipartite graph. • G is a tree if it is connected and acyclic. What is the number is edges in a tree with n nodes? • 3. Draw all possible connected graphs G on 4 vertices and 3 edges. • 4. Draw all possible connected graphs G on 4 vertices and 4 edges. • 5. Suppose G is not connected. What the maximum number of edges in G? • 5. Prove or give a counterexample to the following claim: Any tree is bipartite.
Dynamic Programming Dependent subproblems, recursive solutions, memoizing, explicit tables. Knapsack Longest Common Subsequence Matrix Multiplication
Games 2-person, deterministic, complete information, ... Backtracking MiniMax Alpha-beta pruning Heuristics, iterative deepening, move order, tricks, ...