Is it possible to find the minimum spanning tree of an induced subgraph?
vector< graph_traits<Graph>::vertex_descriptor > vd;
typedef subgraph< Graph > SubGraph;
SubGraph & inducedG = subG.create_subgraph(vd.begin(),
vd.end());
Here is the example I am looking at:
induced verts:
1 2 3 4 5 7
Original Graph:
0 <--> 1 2 5 7
1 <--> 0 3 5 7
2 <--> 0 3 4 5
3 <--> 2 1 4 5
4 <--> 2 3 5 6
5 <--> 0 1 2 3 4 6 7
6 <--> 4 5 7
7 <--> 0 1 5 6
Induced Graph:
1 <--> 3 5 7
2 <--> 3 4 5
3 <--> 2 1 4 5
4 <--> 2 3 5
5 <--> 1 2 3 4 7
7 <--> 1 5
So, the "create_subgraph" seems to be working fine. But, when I run
kruskals with:
vector::edge_descriptor> spanning_tree;
kruskal_minimum_spanning_tree(inducedG, back_inserter(spanning_tree));
for (vei = spanning_tree.begin(); vei != spanning_tree.end(); ++vei) {
pair ij = incident(*vei, inducedG);
int edge_index = e_index[*vei];
cout << "e_index: " << edge_index << " : " << ij.first
<< " " << ij.second << endl;
I get a spanning tree of just 4 edges (while the subgraph has 6
vertices). Also, how does the edge_index of the subgraph correspond to
the original graph? For example, edge (4,1) is not in the original
graph, but it shows up in my spanning tree.
Spanning Tree:
e_index: 3 : 2 0
e_index: 7 : 4 0
e_index: 4 : 3 1
e_index: 8 : 4 1
Thanks,
Matthew
--
Matthew Galati
ISE Lehigh University
IBM Service Parts Solutions
610.758.4042 (Office)
610.882.0779 (Home)
magh@lehigh.edu, magal11@us.ibm.com
http://sagan.ie.lehigh.edu/mgalati/