A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs
description
Transcript of A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs
![Page 1: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/1.jpg)
A Fast Algorithm To
DetermineMinimality of Strongly
Connected Digraphs
Under the direction of Dr. Robinson
By Jianping Zhu
![Page 2: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/2.jpg)
Why MSD AlgorithmThis algorithm can be used to facilitate the process of generating MSDs. An O(n2) time algorithm is utilized by Kiran Bhogadi to check whether a candidate digraph is an MSD and we think the performance of his algorithm can potentially be improved for large digraphs by utilizing our algorithm
![Page 3: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/3.jpg)
Strong DigraphA Strong Digraph is one in which every vertex is reachable from every other vertex.
e
f d
c
h
g
b
a
![Page 4: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/4.jpg)
Minimal Strong DigraphA Minimal Strong Digraph (MSD) is a strong digraph which is no longer strong if any of its edges is removed
g e
f
h
d
a
cb
![Page 5: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/5.jpg)
Depth First Search
h8/5 d
5/6
f6/4
b3/2
c2/7
g4/1
e7/3
a1/8Forward edge Back
edge
Cross Edge
Tree edge
![Page 6: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/6.jpg)
Detecting reducibility of graph edges
Detecting reducibility of non-tree edges Forward edges
Cross edges Back edges
Detecting reducibility of tree edges
![Page 7: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/7.jpg)
Forward edgesTheorem 1. Each forward edge e = (v, w) is reducible
v
w
e
![Page 8: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/8.jpg)
Cross edges (1)e = ( v, z ) is a cross edge and w is the nearest common ancestor of vertices v and z in the DFS-tree of G.
Theorem 2: If edge e1 = (v, w) is in E then
e is reducible.
zv
w
e1
e
![Page 9: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/9.jpg)
Cross edges (2-a)Theorem 3: If edge e1is not in E,
let G1 = G e + e1.
Then:
1. The edge e is reducible in G if and only if the edge e1 is reducible in the digraph G1.
2. Let e2 be an edge of G other than e which is
not a tree edge. Then e2 is reducible in G if and
only if e2 is reducible in G1.
![Page 10: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/10.jpg)
Cross edges(2-b)
v
w w
G G1 G2
z
w
v z z ve
e1
![Page 11: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/11.jpg)
Back edges (1)Theorem 4. Let {(v, w1) … (v, ws)} be the set
of back edges emanating from vertex v in such a way that w1<w2< …<ws . Then all
edges (v, w2) … (v, ws) are reducible.
w3
w2
w1
v
ws
![Page 12: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/12.jpg)
Back edges (2-a)Theorem 5. Let e = (v, w) be a back edge in G, x be a descendant of v with v x and z be a vertex such that there is an edge from x to z.
1. If e1 = (z, w) is an edge in G1, then e is reducible .
2. If e1 is not an edge in G, then e is reducible in G if
and only if e1 is reducible in the digraph G2 = G e +
e1
3. Let e2 = (a, b) be an edge in G with e e2 e1 and
e2 is a non-tree edge. Then e2 is reducible in G if and
only if e2 is reducible in G2.
w
z
v
x
e
![Page 13: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/13.jpg)
Back edges(2-b)
e1
G2
z
w
v
x
w
z
v
x
G G1G3
e1
w
z
v
x
e
w
z
v
x
e
![Page 14: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/14.jpg)
Algorithm 1
Algorithm 1:Input A strongly connected digraph G(V, E)Output true: the input digraph may be an MSD (need to check if there are reducible tree edges) false: the input digraph is not an MSD1. do depth first search to get the partitions of edges TREE, BACK, CROSS, FORWARD, The depth first search tree DFS-Tree.2. for v V backpoint(v) v endfor
3. if the set FORWARD is not empty return false; endif 4. for e = (v, w) BACK backpoint(v) min (backpoint(v), w); if there exists an e = (v, w) B with w backpoint(v)
return false;
endif endfor
![Page 15: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/15.jpg)
Algorithm 1 (cont) 5. for e = (v, w) CROSS do
let n be the nearest common ancestor of v and w if (w < backpoint(v)) add (v, n) to G; delete (v, backpoint(v)) from G; backpoint(v) w; else return false endif endfor 6. //R-test (root of DFS-tree) R-test(v) for w with (v, w) T do R-test(w) if w is not a leaf; z min (backpoint(w),(v, w) TREE); if (v z) if ( backpoint(v) < backpoint(z)) backpoint(z) backpint(v); else if (v backpoint(v)) return false else backpoint(v) z; endif endif 7. return false
![Page 16: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/16.jpg)
Algorithm 2Algorithm 2:1. reverse G to get GR, run Algorithm 1 on GR if (Algorithm 1 returns false) return false;else
let TR be the DFS tree associated with GR
let TS be the reverse graph of TR
endif 2. run Algorithm 1 on G if ( Algorithm 1 return false) return false else let T be the DFS tree associated with G for edges (w, z) which are in both T and TS if ((w,z) is not a dominating edge for z and (w, z) is not a reverse dominating edge for w ) return false endif endfor endif
![Page 17: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/17.jpg)
Detecting reducibility of tree edges
z
w
r
x
w
z
r
x
Ts T
![Page 18: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/18.jpg)
Timing TestsWe tested the running time for randomly generated digraph up to 1000 vertices. We generated 20 digraphs for each number of vertices from 4 starter digraphs. We tested running time on the 20 digraphs and then took average.
![Page 19: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/19.jpg)
Running time of MSD algorithm
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 500 1000 1500
Number of vertices
Tim
e i
n s
eco
nd
s
Series1
![Page 20: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/20.jpg)
Running time of NCA algorithm
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0 500 1000 1500
Number of vertiece
Tim
e in
se
co
nd
s
Series1
![Page 21: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/21.jpg)
Running time of the finding immediate dominators algorithm
0
0.005
0.01
0.015
0.02
0.025
0.03
0.035
0.04
0.045
0.05
0 500 1000 1500
Number of vertices
Tim
e i
n s
eco
nd
s
Series1
![Page 22: A Fast Algorithm To Determine Minimality of Strongly Connected Digraphs](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813ca6550346895da655d4/html5/thumbnails/22.jpg)
Thanks