• 沒有找到結果。

An Algorithm for enumerating All Sp anning Trees of a Directed Graph

N/A
N/A
Protected

Academic year: 2022

Share "An Algorithm for enumerating All Sp anning Trees of a Directed Graph"

Copied!
33
0
0

加載中.... (立即查看全文)

全文

(1)

An Algorithm for enumerating All Sp anning Trees of a Directed Graph

- S. Kapoor and H. Ramesh

Speakers: 李孟韓 1, 林蔚茵 2, 莊秋芸 3, 黃稚 穎 4

(2)

Reference

H. N. Gabow and E. W. Myers: Finding all spanning trees of directed and un directed graphs, SIAM J. Comput., Vol. 7, No. 3, 1978.

S. Kapoor, V. Kumar, and H. Ramesh: An algorithm for generating all spann ing trees of directed graphs, Proceedings of the Workshop on Algorithms an d Data Structures, LNCS, Vol. 955, Springer-Verlag, Berlin, pp. 428–439, 19 95.

S. Kapoor and H. Ramesh: Algorithms for generating all spanning tree s of undirected and weighted graphs, SIAM J. Comput., Vol. 24, No. 2, 1995.

W. Mayeda: Graph Theory, Wiley, New York, 1972.

S. Shinoda: Finding all possible directed trees of a directed graph, Electron Comm. Japan, Vol. 51-A, pp. 45–47, 1968.

(3)

Outline

• Introduction and Algorithm outline

– 李孟韓

• Main Algorithm

– 林蔚茵

• Correctness

– 莊秋芸

• Time analysis and conclusion

– 黃稚穎

(4)

Definition

An exchange for a spanning tree T of G rooted at v is a pair of edges (e, f) , where e T , f E – T , and T – {e} {f} is a spanning tree rooted at v.

A edge p E - T is back edge if its tail is an ancestor of its head in T.

A edge p’ E - T is forward edge if its tail is a descen dant of its head in T.

v

u T

v

u

z x

G

back edge forward edge

f

x = Tail(f) V = head(f)

cross edge

(5)

Property 1

Every nonback nontree edge, f , relative to a spanning tree T , may r eplace exactly one tree edge, e, in the spanning tree, namely, the edg e having the same tail, to result in a new spanning tree rooted at the same vertex as T.

x

f

e

v

u

z

(6)

Property 2

A back edge cannot be exchanged for any edge in the spanning tree to get a new spanning tree.

x

e

v

u

z

g

(7)

Computation Tree

let CD(G,v) be the computation tree which generates all spanning tr ees of the directed graph G with root v.

a b

1

b

2

CD(G,v) SDa

x

f

e

v

u

z

g

(8)

Computation Tree

SDb1 is obtained from SDa by exchanging f with e, where f is a nontr ee nonback edge and e is the unique tree edge with the same tail as f .

a b

1

b

2

CD(G,v) SDb1

pick f

x

f

e

v

u

z

g

(9)

Computation Tree

SDb2 is the same as SDa. The significance of b2 is that the subtree ro oted at b2 will not include f in any spanning tree.

a b

1

b

2

CD(G,v) SDb2

delete f

x

e

v

u

z

g

(10)

Computation Tree

a b

1

b

2

CD(G,v) SDb1

pick f

x

f

e

v

u

z

(11)

Computation Tree

a b

1

b

2

CD(G,v) SDb2

delete f

x

e

v

u

z

g

(12)

Lemma

CD(G,v) has at its nodes all directed spanning

trees of G rooted at vertex v.

(13)

An Algorithm for enumerating All Sp anning Trees of a Directed Graph

--- S. Kapoor and H. Ramesh

Speaker: 林蔚茵 2

(14)

Algorithm Description

DFS tree of G (rooted at r)

The root of the computation tree CD(G,r)

• For each node a of the computation tree

NB: a set of those nontree edges which are nonback w.r.t. the directed spanning tree and which are no t included in

Maintained as a list of nonempty lists

Each nonempty list containg edges incident upon a particular v ertex

Arranged in postorder number

B: a set of those back edges w.r.t. which are not i ncluded in

SDa

OUTa

SDa

OUTa

(15)

Property 3

Let spanning tree T’ be obtai ned from spanning tree T by applying the exchange (e,f). I f x is a nontree edge which is back w.r.t. T and nonback w.r .t. T’, then head(x) lies in the subtree of T rooted at tail(f), and tail(x) is a vertex which is a proper ancestor of tail(f) an d a proper descendant of lca (head(f), tail(f)) in T

v

f e

a

u

x

head(x) tail(x)

tail(f) lca(head(f),tail(f))

(16)

ALGO Main(G,r)

The first edge in the first list of NB is the one having tail node with th e least postorder number.

CHANGES is used to store the differences from the last spanning tr ee generated

(17)

ALGO Gen(T)

b1

b2

(18)

ALGO Compute-back-to-nonback(f,T)

The sets NB and B are updated at every exchan ge

transferring edges from B to NB Removal of edges from B and NB

Data structure for B

For each node v of G

B[v]: a list of nontree back edges in B having head vertex v

A[v][p]: each element points to the first edge in its list which i s incident upon a proper ancestor of node p

BASE[v]: initialized to be v

(19)

ALGO Compute-back-to-nonback(f,T)

(cont’d)

(20)

An Algorithm for enumerating All Sp anning Trees of a Directed Graph

--- S. Kapoor and H. Ramesh

Speaker: 莊秋芸 3

(21)

PROPERTY 4

u

v f

b lca(u,v)

If f =(u, v) is an edge in NB and b=lca (u,v) in SDa,

then no edge in NB has its head in the subtree of SDa rooted at v and its tail on the path from b to u

(b excluded).

(22)

• DFS

• The order of the selection of the exchange edge from NB.

• All “exchangeable edges”

must connect a vertex with higher postorder number to a vertex with lower postord er number.

PROPERTY 4 (some observatio ns)

u

v f

b lca(u,v)

(23)

By induction on the level of x, w here x is a node on the comput ation tree.

1. Base case: root node.

2. Induction hypothesis: assume t his is true for any node x of the computation tree.

3. Consider the left and right sons b1, b2 of x.

1) It’s trivially true for the right s on b2.

PROPERTY 4 (proof)

5

3 4

1 2

A DFS tree with postorder number on each node.

(24)

4

2 3

2) For the left son b1.

PROPERTY 4 (proof)

9

5

8

1 4 f

e 7

6

2 3

9

5

8

1 f

7

6 Exchange

e and f

5.1 5.2 5.3

(25)

PROPERTY 4 (conclusion)

u

v f

b lca(u,v)

Since no such edges exist, there’s no

nonback edges will

become back edges.

(26)

LEMMA 4.1

During the construction of the computation tree the following changes to NB and B suf fice after an exchange at a node a in the c omputation tree:

a) changes from B to NB by Property 3.

b) deletions from NB according to IN and OUT definitions.

c) removal of RBa from B.

(27)

PROPERTY 5

If an exchange (e, f), f=(u,v) is made at a nod e x of the computation tree, then the subtree of SDx rooted at v is preserved as such in each of the trees generated at descendant nodes of x i n the computation tree. So at node x, any edg e in B incident upon a vertex in that subtree, is redundant for future computations at descenda nt nodes of x and may be removed from B.

(28)

PROPERTY 5

v f

e

u

A redundant back edge

computation tree

x

All have the same subtree rooted at v

SDx

(29)

An Algorithm for enumerating All Sp anning Trees of a Directed Graph

--- S. Kapoor and H. Ramesh

Speaker: 黃稚穎 4

(30)

LEMMA 4.4

ALGO Main outputs the changes corresponding to the compressed computation tree CD'(G,r) in O(N(r)V+V2) operations.

The time for manipulating the data structures NB, B, and STACK is O(V*(NBCx+1))

The total time required by ALGO Gen minus the output operations equals O(Σ(V*NBCx))

At any node x in the compressed computation tree, the above summation gives an O(N(r)V) time bound.

Total output operations are O(N(r)).

Computing B and NB initially require O(V2) time.

DFS requires O(V+E)timeTotal requires O(N(r)V+V. 2+V+E+N(r))

= O(N(r)V+V2) time

.

(31)

LEMMA 4.5

ALGO Main requires O(V

2

) space.

– Follows from the size of the data structures in volved.

B requires O(V2)-space.

NB requires O(V+E)-space.

Changes stored on STACK is O(V+NBCx)-space.

The total stack space required is O(V

2

+ΣNBC

x

)

= O(V

2

)

(32)

Complexity

From LEMMA 4.4 and LEMMA 4.5 the following result fol lows if the above procedure is repeated with each vertex in turn as root.

THEOREM 4.6. All rooted directed spanning trees can b e output in O(NV+V3) operations and O(V2) space.

(33)

THANK U

參考文獻

相關文件

Good Data Structure Needs Proper Accessing Algorithms: get, insert. rule of thumb for speed: often-get

• an algorithm for robust fitting of models in the presence of many data outliers. • Compare to

Breu and Kirk- patrick [35] (see [4]) improved this by giving O(nm 2 )-time algorithms for the domination and the total domination problems and an O(n 2.376 )-time algorithm for

Huang, A nonmonotone smoothing-type algorithm for solv- ing a system of equalities and inequalities, Journal of Computational and Applied Mathematics, vol. Hao, A new

From all the above, φ is zero only on the nonnegative sides of the a, b-axes. Hence, φ is an NCP function.. Graph of g functions given in Example 3.9.. Graphs of generated NCP

In the past researches, all kinds of the clustering algorithms are proposed for dealing with high dimensional data in large data sets.. Nevertheless, almost all of

important to not just have intuition (building), but know definition (building block).. More on

The remaining positions contain //the rest of the original array elements //the rest of the original array elements.