I’m trying to find the minimum spanned tree using Mathematica and I want to use the MinimumSpanningTree function from Combinatorica. I’m using the following code.
Needs["Combinatorica`"]
MinimumSpanningTree[GraphPlot[m]]
where m is a matrix. However, MinimumSpanningTree turns red and does not work. The output gives
out = MinimumSpanningTree[<maximum spanned tree>] //can't show the tree here
How can I make the MinimumSpanningTree work? Why does it turn red?
The functions turn red when you run into the so-called shadowing problem. You can read more about it in the documentation. This problem is discussed in many places, in particular in the book by Roman Maeder “Programming in Mathematica”. A very nice and detailed account on shadowing is the article by David Wagner in Mathematica Journal, available here as pdf. To understand this issue, you will need some basic understanding of contexts and pacakges. The following past SO discussions may also be helpful:
Making Mathematica packages
Package import problem in mathematica
Basically, some of the
Combinatorica`functions have the same name as the new system graph-related functions of version 8, so Mathematica does not know which ones to call. If you really want to useCombinatorica`functions, then you will first need to “silently” loadCombinatorica`without having it on the$ContextPathafterwards, which is probably most easily accomplished asThen, you will have to refer to the functions of
Combinatorica`by their long names, such asCombinatorica`MinimumSpanningTree. One more thing to keep in mind is that a graph representation inCombinatorica`is different from that in the built-in v.8 functionality, so you may need to transform one into another if you want to mix those.