290 likes | 445 Views
Finding cycles using rectangular matrix multiplication and dynamic programming. Raphael Yuster Haifa Univ. - Oranim Uri Zwick Tel Aviv University. Matrix multiplication. =. . Rectangular Matrix multiplication. c. c. b. =. . a. a. b. a. c. a. =. . b. c. b.
E N D
Finding cycles using rectangular matrix multiplication and dynamic programming Raphael Yuster Haifa Univ.-Oranim Uri Zwick Tel Aviv University
Rectangular Matrix multiplication c c b = a a b a c a = b c b M(a,b,c) = M(b,c,a) = M(c,a,b) = ...
Rectangular Matrix multiplication c b c = a a There are also improved specially designed rectangular matrix multiplication algorithms
Chain Matrix Product • Let Ai be an ni ni+1 matrix. • Compute A1A2…Ak. • Matrix multiplication is associative, so all association orders give the same result, but may have vastly different cost. • Easy to solve using dynamic programming.
Chain Matrix Product (cont.) Let P(i,j) be the cost of computing Ai…Aj. Complexity of naïve solution is O(k3). For M(a,b,c)=abc, there is a much more complicated O(k log k) algorithm.
Finding triangles A triangle A graph Does the graph contain a triangle? Yes!
Algorithms for finding trianglesLet A be the adjacency matrix of a graph G. Then, G contains a triangle iff A2AT≠0.
Finding triangles in O(m2 /(+1)) time [AYZ ’97] = m(-1) /(+1) Let be a parameter. .High degree vertices: vertices of degree .Low degree vertices: vertices of degree < . There are at most 2m/high degree vertices =
Finding longer cycles A graph G contains a Ck iff Ak-1AT≠0 ? We want simple cycles!
Colorcoding[AYZ ’95] Assign each vertex v a random number c(v) from {0,1,...,k-1}. Remove all edges (u,v) for which c(v)≠c(u)+1 (mod k). All cycles of length k in the graph are now simple. If a graph contains a Ck then with a probability of at least k-k it still contains a Ckafter this process. An improved version works with probability 2-O(k). Can be derandomized at a logarithmic cost.
Finding C2k in O(m2-1/k) time [AYZ ’97] = m1/k Let be a parameter. .High degree vertices: vertices of degree .Low degree vertices: vertices of degree < . There are at most 2m/high degree vertices = Finding paths of length k Finding a cycle passing through a high degree vertex
Algorithms for finding a Ck [AYZ ’97]:“We have not been able to use fast matrix multiplication to obtain faster algorithms for finding Ck, for k4, in sparse graphs.”
Finding even cycles even faster [YZ ’97] In undirected graphs, a C2k, for any fixed k, can be found in O(n2) time! We are still working on:Finding odd cycles עוד יותר מהר
Finding C4’s in O(m2-2/ n1/) time [Eisendbrand, Grandoni ’03] Let be a parameter. .High degree vertices: vertices of degree .Low degree vertices: vertices of degree < . There are at most 2m/high degree vertices
Finding C4’s in O(m(4-1)/(2+1)) time [YZ ’03] Let be a parameter. High degree vertices: ≤ deg(v)Medium degree vertices: 1/2 ≤ deg(v) < Low degree vertices: deg(v) < 1/2 There are at most 2m/high degree vertices.There are at most 2m/1/2medium degree vertices.
Where do we go from here? • Why just three degree classes? • How many cases will we have for C5, C6, …?
The general case • Partition the vertices into log n degree classes: Vi={ vV | 2i ≤ deg(v) ≤ 2i+1 } • Number of cycle classes is only (log n)k. • What is the most efficient way of handling each class?
Handling a given cycle class Choose i and j. Find all paths of length j-i that pass through vertices of degrees di ,…, dj. Find all paths of length k-(j-i) that pass through vertices of degrees dj ,…, di. Check whether the graph contains a cycle from the class.
Finding paths Degree: Sizeof class: We get a chain matrix product problem! We can use the sparsity of the matrices.
Finding paths (cont.) It is convenient to express everything as a power of m. Degree: Sizeof class:
Finding cycles Theorem: There is an time algorithm for finding Ck’s in directed graphs.
Finding C5’s Theorem: Requires a non-constant number of degree classes. The worst-case running time is obtained for regular graphs.
Finding C6’s Conjecture: If the conjecture is true, then c6<1.65.
Finding odd cycles Conjecture: for odd k3. The conjecture holds for k=3,5.
Open problems • Is it possible to extend the technique presented to obtain improved algorithms? • Find a feasible way for rigorously computing c6, c7, etc. • Other applications?