Reputation: 1825
How can we find the minimum spanning tree that minimizes the degree of a node v
(among all minimum spanning trees)?
Would modifying Kruskal algorithm such that if there are several edges with the same weight we choose the one that doesn't touch v
solve the problem?
Upvotes: 2
Views: 667
Reputation: 17595
To answer the question in part, modifiying Kruskal's algorithm as sketched in the question does not solve the problem. Consider the graph G=(V,E,w)
where
V = {1,2,3},
E = {{1,2}, {2,3}, {3,1}},
w({1,2}) = 1,
w({1,3}) = 1,
w({2,3}) = 2
and 1
is the node of which the degree in the minimum spanning tree is to be minimized. Then, the edge set
S1={{1,2},{1,3}}
constitutes a minimum spanning tree of weight 2
. However, the modified version of Kruskal's algorithm would without loss of generality select edge {1,2}
which would result in {1,3}
being forbidden, such that {2,3}
is selected. In total, in the selected edge set
S2={{1,2},{2,3}}
the node 1
has lesser degree than in S2
, but the total weight of S2
is 3
, which means that it does not constitute a minimum spanning tree.
Furthermore, note that the degree of the node v
which is to be minimized has to be at least 3
to have the possibility of more than one neighbourhood of v
in minimum spanning trees.
In an exhaustive search, select any possible neighbourhood of v
. As v
has at most n
neighbors, there are at most 2^n
such neighbourhoods. Using the algorithm by Prim, expand each of these to a spanning tree which is cost-minimal with respect to containing the selected neighborhood of v
; in all these solutions which are cost-minimal, select one in which the degree of v
is minimized. However, the approach does not yield a polynomial-time algorithm.
Upvotes: 1