3

I was reading minimum spanning trees in CLRS and came across the following corollary which is basis of algorithms to compute minimum spanning tree:

Corollary 23.2

Let G = (V,E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a subset of E that is included in some minimum spanning tree for G, and let C = (V_C,E_C) be a connected component (tree) in the forest G_A = (V,A). If (u,v) is a light edge connecting C to some other component in G_A, then (u,v) is safe for A.

Proof The cut (V_C, V-V_C) respects A, and (u,v) is a light edge for this cut. Therefore, it is safe for A.

I find some inconsistency. Why? Let me show you:

Some Statements skimmed from Corollary

These are the statements copied from the Same Corollary and its proof in the text:

STATEMENT 1 - G_A = (V, A)

STATEMENT 2 - (u,v) is a light edge connecting C to some other component in G_A.

STATEMENT 3 - The cut (V_C, V - V_C) respects A

STATEMENT 4 - (u,v) is a light edge for this cut.

Lemma 1

Statement 1 and 2 imply (u,v) is in A

Proof

For purpose of contradiction lets assume that it does not belong to A. As (u,v) connects two components of graph G_A it must be an edge in graph G_A. As Set of edge is given by A in graph G_A it must belong to A which contradict our assumption.

Inconsistency

Now Lemma 1 implies (u,v) belongs to A . Statement 3 implies the cut respects (u,v) which further implies (u,v) cannot cross the cut. Since it cannot cross the cut, it cannot be a light edge which contradicts Statement 4.

Does this imply the algorithms are incorrect. According to me G_A should be changed to G. Am I wrong?

EDIT

Other Possible Change

Well then Edge should belong to E as it cannot be any edge that is light. Let say we have edge set F superset of E that contains edge lighter than (u,v). Than upon finishing we will have MST not spanning G. An example has been attached to clarify the statement. Go to Example. Sorry for the shadowing. Stack Overflow wasnot uploading the image - I tried numerous times.

So shouldn't the last line of corollary be changed to (u,v) belongs to E and is a light edge for G_A for clarification purposes?

  • 4
    "As (u,v) connects two components of graph G_A it must be an edge in graph G_A." Why? If (u,v) was an edge in G_A, then it would belong to C since C is a connected component in G_A. – Abhishek Bansal May 14 '16 at 05:32
  • Not necessarily. Here's a simple example. Let G have vertices V={1,2,3,4} and edges E={(1,2),(2,3),(3,4),(4,1),(1,3)}, so G is a square plus one diagonal. Now let A={(2,3),(4,1)} , so these are the edges of G_A and hence G_A will have two components, each consisting of one edge of A. Let's pick C to be the component consisting of {2,3}, so the other component will be (4,1). (4,1) does not belong to C but it belongs to G_A –  May 14 '16 at 06:27
  • Exactly, and (u,v) in that case would be either (1,2) or (3,4), neither of them belonging to G_A or A. – Abhishek Bansal May 14 '16 at 06:30
  • @Abhishek Bansal But doesn't then it connects in Graph G and **Not in G_A** –  May 14 '16 at 06:33
  • Every vertex in original graph G is also a vertex in G_A (by definition). Hence any edge that connects C to any other vertex, that vertex shall be in G_A. – Abhishek Bansal May 14 '16 at 06:36
  • @AbhishekBansal See the Edit and let me know your views. –  May 15 '16 at 06:50

0 Answers0