Presentation is loading. Please wait.

Presentation is loading. Please wait.

Course Review 15-211 Fundamental Structures of Computer Science Ananda Guna May 04, 2006.

Similar presentations


Presentation on theme: "Course Review 15-211 Fundamental Structures of Computer Science Ananda Guna May 04, 2006."— Presentation transcript:

1 Course Review 15-211 Fundamental Structures of Computer Science Ananda Guna May 04, 2006

2 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.

3 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.

4 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

5 Java Programming Object oriented programming. Correctness (loop invariants, induction). Time and space complexity. Debugging (test harness).

6 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)

7 Complexity

8 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 f(n)=n 2 g(n) = n h(n) = log n

9 Complexity True or False? If true prove it, else give counter example

10 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

11 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

12 Complexity A is an array of integers

13 Complexity of known algorithms Algorithm Complexity(runtime) Bubble sortO(n 2 ) – average, worst, O(n) – best Insertion sortO(n 2 ) – average, worst, O(n) – best Selection sortO(n 2 ) – average, worst, best Find Max, Find minO(n), cannot be done in o(n) Find MedianWith sorting O(n*logn) but O(n) using quick select Quick sortO(nlogn) – average & best, O(n 2 ) – worst Merge SortO(nlogn) – average, best, worst Heap SortO(nlogn) – best, worst, average Build heapO(n)

14 Complexity of known algorithms Algorithm Complexity Heap – find minO(1) Heap – delete MinO(logn) Heap -insertO(logn) Hash – insert, find, delete O(1) Graph - buildO(V 2 ) – space (adjacency matrix) O(V+E) – space (adjacency list) Graph - TraverseO(E) Graph – Topological Sort O(V + E) Graph – Dijkstra’sO((E+V) logE) MST – prim’sO(E+V 2 )

15 Complexity of known algorithms Algorithm Complexity MST – Kruskal’sO(E logE) – sort the edges O(V logV) – find and union operations Dynamic Programming O(Table size) Linear with memoization Disjoint sets - unionO(logn) Disjoint sets - findO(logn) KMPO(n+m)

16 Sorting

17 Sorting and lower bounds Insertion Sort Selection Sort Heapsort Mergesort Quicksort Radix Sort

18 Sorting and lower bounds

19 Questions

20 Trees

21 Balanced Binary Trees

22 AVL Trees 1.Traverse the tree inorder 2.Do exactly two rotations so that the tree is balanced 3. Consider a binary tree of height h a.What are the max and min number of nodes? b.What are the max and min number of leaves? 4. Perfect, full, complete trees

23 Splay Trees

24 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?

25 Code Examples

26 Dictionaries

27

28 Hashing Describe why hashing a string to sum of its characters is not a good idea. Assume S = a 1 a 2 ….a n is a string Define H(S) =  a i 2 i-1 (i=1..n) Describe a way to efficiently calculate H(S)

29 Heaps

30 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

31 Binary heaps

32 Compression

33

34 LZW compression

35 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

36 Graphs

37 Adjacency lists and matrices Traversal (DFS, BFS) Reachability (DFS, BFS, Warshall) Shortest Paths (Dijkstra, Bellman- Ford) MST (Prim, Kruskal)

38 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

39 Graphs

40 Greedy Algorithms 100 5060 30 50 60 20 50 20 60 40 50 150 40 20 40 20 40 10 Find the Shortest Path from Node 1 to every other node

41 Dijkstra’s Algorithm

42 MST Find the MST using a. Prim’s Algorithm b. Kruskal’s algorithm

43 Homework 1.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. 2.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.

44 Dynamic Programming

45 Dependent subproblems, recursive solutions, memoizing, explicit tables. Knapsack Longest Common Subsequence Matrix Multiplication

46

47 Game Trees

48 Game trees

49 Games 2-person, deterministic, complete information,... Backtracking MiniMax Alpha-beta pruning Heuristics, iterative deepening, move order, tricks,...

50 Disjoint Sets

51 Union-find

52 Regular Expressions

53 Exercises

54 Homework Write a regular expression of the alphabet {a, b, c, d} that describes all strings consisting of either an odd number of a's or an even number of b's, followed by any number (and ordering) of c's and d's. Zero is an even number and any number of x's can be zero x's. Draw a FSM to recognize any such string

55 String matching

56 Final Exam Monday, May 8, 8:00 –11:00 am Make sure not to be late.

57 Final Exam Closed book, no calculators, cell phones, pagers, IM, … You can bring 1 (one) page of notes. Bring fluids

58 Conclusion Review all material Do all sample quizzes and finals Good luck!!


Download ppt "Course Review 15-211 Fundamental Structures of Computer Science Ananda Guna May 04, 2006."

Similar presentations


Ads by Google