1 / 22

MA/CSSE 473 Day 14

MA/CSSE 473 Day 14. Strassen's Algorithm: Matrix Multiplication Decrease and Conquer DFS. MA/CSSE 473 Day 14. In-class exam (Friday, Sept 28) will cover Levitin chapters 1-3, 5, part of 4. Dasgupta excerpt (on ANGEL), class sessions 1-15, and HW 1-6. Student Questions

genica
Download Presentation

MA/CSSE 473 Day 14

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. MA/CSSE 473 Day 14 Strassen's Algorithm: Matrix Multiplication Decrease and Conquer DFS

  2. MA/CSSE 473 Day 14 • In-class exam (Friday, Sept 28) will cover Levitin chapters 1-3, 5, part of 4. Dasgupta excerpt (on ANGEL), class sessions 1-15, and HW 1-6. • Student Questions • Matrix Multiplication (Strassen) • Decrease and Conquer examples • DFS summary

  3. Reminder: The Master Theorem • The Master Theorem for Divide and Conquer recurrence relations: • Consider T(n) = aT(n/b) + Ѳ(nk) • The solution is • Ѳ(nk) if a < bk • Ѳ(nklog n) if a = bk • Ѳ(nlogba) if a > bk

  4. Ordinary Matrix Multiplication How many additions and multiplications are needed to compute the product of two 2x2 matrices? C00 C01 A00 A01 B00 B01 = * C10 C11 A10 A11 B10 B11 [] [] [] Q1

  5. Strassen’s Matrix Multiplication Strassen observed [1969] that the product of two matrices can be computed as follows: C00 C01 A00 A01 B00 B01 = * C10 C11 A10 A11 B10 B11 M1+ M4 - M5 + M7 M3 + M5 = M2+ M4 M1 + M3 - M2 + M6 [] [] [] [] Values of M1, M2, … , M7 are on the next slide

  6. Formulas for Strassen’s Algorithm M1 = (A00 + A11)  (B00 + B11) M2 = (A10 + A11)  B00 M3 = A00 (B01 - B11) M4 = A11 (B10 - B00) M5 = (A00 + A01) B11 M6 = (A10 - A00)  (B00 + B01) M7 = (A01 - A11)  (B10 + B11) How many additions and multiplications? Q2

  7. The Recursive Algorithm • We multiply square matrices whose size is a power of 2 (if not, pad with zeroes) • Break up each matrix into four N/2 x N/2 submatrices. • Recursively multiply the parts. • How many additions and multiplications? • If we do "normal matrix multiplication" recursively using divide and conquer? • If we use Strassen's formulas? Q3

  8. Analysis of Strassen’s Algorithm If Nis not a power of 2, matrices can be padded with zeros. Number of multiplications: M(N) = 7M(N/2) + C, M(1) = 1 Solution: M(N) = (Nlog27)≈N2.807 vs. N3 of brute-force algorithm. What if we also count the additions? Algorithms with better asymptotic efficiency are known but they are even more complex. Q4-5

  9. Decrease and Conquer

  10. Decrease and Conquer Algorithms • What does the term mean? • Reduce problem instance to smaller instance of the same problem • Solve smaller instance • Extend solution of smaller instance to obtain solution to original instance • Also referred to as inductive or incremental approach • Can be implemented either top-down or bottom-up • Three variations. Decrease by • constant amount • constant factor • variable amount Q6

  11. Decrease by constant vs by half

  12. One Problem, Four approaches • Recall the problem of integer exponentiation: Compute an, where n is a power of 2: • Brute Force: an= a*a*a*a*...*a • Divide and conquer: an= an/2 * an/2 • Decrease by one: an= an-1* a • Decrease by constant factor: an= (an/2)2

  13. Variable Decrease Examples • Euclid's algorithm • b and a % b are smaller than a and b, but not by a constant amount or constant factor • Interpolation search • The two sides of the partitioning element are smaller than n, but can be anything from 0 to n-1.

  14. Interpolation Search • Searches a sorted array similar to binary search but estimates location of the search key in A[l..r] by using its value v. • Specifically, the values of the array’s elements are assumed to increase linearly from A[l] to A[r] • Location of v is estimated as the x-coordinate of the point on the straight line through (l, A[l]) and (r, A[r]) whose y-coordinate is v: • x = l + (v - A[l])(r - l)/(A[r] – A[l] ) Q7

  15. Interpolation Search Running time • Average case: (log (log n)) Worst: (n) • What can lead to worst-case behavior? • Social Security numbers of US residents • Phone book (Wilkes-Barre) • CSSE department employees, 1984-2012 Red and blue are current employees

  16. Some "decrease by one" algorithms • Insertion sort • Selection Sort • Depth-first search of a graph • Breadth-first search of a graph Q7

  17. Review: Analysis of Insertion Sort • Time efficiency Cworst(n) = n(n-1)/2 Θ(n2) Cavg(n) ≈n2/4  Θ(n2) Cbest(n) = n - 1  Θ(n)(also fast on almost-sorted arrays) • Space efficiency: in-place (constant extra storage) • Stable: yes • Binary insertion sort • use Binary search, then move elements to make room for inserted element

  18. Graph Traversal Many problems require processing all graph vertices (and edges) in systematic fashion Most common Graph traversal algorithms: • Depth-first search (DFS) • Breadth-first search (BFS)

  19. Depth-First Search (DFS) • Visits a graph’s vertices by always moving away from last visited vertex to unvisited one, backtracks if no adjacent unvisited vertex is available • Uses a stack • a vertex is pushed onto the stack when it’s reached for the first time • a vertex is popped off the stack when it becomes a dead end, i.e., when there are no adjacent unvisited vertices • “Redraws” graph in tree-like fashion (with tree edges and back edges for undirected graph) • A back edge is an edge of the graph that goes from the current vertex to a previously visited vertex (other than the current vertex's parent).

  20. Notes on DFS • DFS can be implemented with graphs represented as: • adjacency matrix: Θ(V2) • adjacency list: Θ(|V|+|E|) • Yields two distinct ordering of vertices: • order in which vertices are first encountered (pushed onto stack) • order in which vertices become dead-ends (popped off stack) • Applications: • checking connectivity, finding connected components • checking acyclicity • finding articulation points • searching state-space of problems for solution (AI)

  21. Pseudocodefor DFS

  22. Example: DFS traversal of undirected graph a b c d e f g h DFS traversal stack: DFS tree: Q8-10

More Related