Reputation: 493
Given undirected, connected graph G={V,E}, a vertex in V(G), label him v, and a weight function f:E->R+(Positive real numbers), I need to find a MST such that v's degree is minimal. I've already noticed that if all the edges has unique weight, the MST is unique, so I believe it has something to do with repetitive weights on edges. I though about running Kruskal's algorithm, but when sorting the edges, I'll always consider edges that occur on v last. For example, if (a,b),(c,d),(v,e) are the only edges of weight k, so the possible permutations of these edges in the sorted edges array are: {(a,b),(c,d),(v,e)} or {(c,d),(a,b),(v,e)}. I've ran this variation over several graphs and it seems to work, but I couldn't prove it. Does anyone know how to prove the algorithm's correct (Meaning proving v's degree is minimal), or give a contrary example of the algorithm failing?
Upvotes: 3
Views: 1346
Reputation: 52008
First note that Kruskal's algorithm can be applied to any weighted graph, whether or not it is connected. In general it results in a minimum-weight spanning forest (MSF), with one MST for each connected component. To prove that your modification of Kruskal's algorithm succeeds in finding the MST for which v
has minimal degree, it helps to prove the slightly stronger result that if you apply your algorithm to a possibly disconnected graph then it succeeds in finding the MSF where the degree of v
is minimized.
The proof is by induction on the number, k
, of distinct weights.
Basis Case (k = 1
). In this case weights can be ignored and we are trying to find a spanning forest in which the degree of v
is minimized. In this case, your algorithm can be described as follows: pick edges for as long as possible according to the following two rules:
1) No selected edge forms a cycle with previously selected edges
2) An edge involving
v
isn't selected unless any edge which doesn't involvev
violates rule 1.
Let G'
denote the graph from which v
and all incident edges have been removed from G
. It is easy to see that the algorithm in this special case works as follows. It starts by creating a spanning forest for G'
. Then it takes those trees in the forest that are contained in v's
connected component in the original graph G
and connects each component to v
by a single edge. Since the components connected to v
in the second stage can be connected to each other in no other way (since if any connecting edge not involving v
exists it would have been selected by rule 2) it is easy to see that the degree of v
is minimal.
Inductive Case: Suppose that the result is true for k
and G
is a weighted graph with k+1
distinct weights and v
is a specified vertex in G
. Sort the distinct weights in increasing order (so that weight k+1
is the longest of the distinct weights -- say w_{k+1}
). Let G'
be the sub-graph of G
with the same vertex set but with all edges of weight w_{k+1}
removed. Since the edges are sorted in the order of increasing weight, note that the modified Kruskal's algorithm in effect starts by applying itself to G'
. Thus -- by the induction hypothesis prior to considering edges of weight w_{k+1}
, the algorithm has succeeded in constructing an MSF F'
of G'
for which the degree, d'
of v
in G'
is minimized.
As a final step, modified Kruskal's applied to the overall graph G
will merge certain of the trees in F'
together by adding edges of weight w_{k+1}
. One way to conceptualize the final step is the think of F'
as a graph where two trees are connected exactly when there is an edge of weight w_{k+1}
from some node in the first tree to some node in the second tree. We have (almost) the basis case with F'
. Modified Kruskal's will add edged of weight w_{k+1}
until it can't do so anymore -- and won't add an edge connecting to v
unless there is no other way to connect to trees in F'
that need to be connected to get a spanning forest for the original graph G
.
The final degree of v
in the resulting MSF is d = d'+d"
where d"
is the number of edges of weight w_{k+1}
added at the final step. Neither d'
nor d"
can be made any smaller, hence it follows that d
can't be made any smaller (since the degree of v
in any spanning forest can be written as the sum of the number of edges whose weight is less than w_{k+1}
coming into v
and the number off edges of weight w_{k+1}
coming into v
).
QED.
There is still an element of hand-waving in this, especially with the final step -- but Stack Overflow isn't a peer-reviewed journal. Anyway, the overall logic should be clear enough.
One final remark -- it seems fairly clear that Prim's algorithm can be similarly modified for this problem. Have you looked into that?
Upvotes: 1