我正在尝试使用Mathematica找到最小的跨越树,我想使用Combinatorica中的MinimumSpanningTree函数。我正在使用以下代码。
Needs["Combinatorica`"]
MinimumSpanningTree[GraphPlot[m]]
其中m是矩阵。但是,MinimumSpanningTree变为红色并且不起作用。输出给出了
out = MinimumSpanningTree[<maximum spanned tree>] //can't show the tree here
如何使MinimumSpanningTree工作?它为什么变成红色?
答案 0 :(得分:7)
当遇到所谓的阴影问题时,这些功能会变为红色。您可以在documentation中详细了解相关信息。许多地方都讨论过这个问题,特别是在Roman Maeder的“Mathematica编程”一书中。关于阴影的一个非常好的和详细的说明是David Wagner在Mathematica Journal上的文章,可用here作为pdf。要理解这个问题,您需要对上下文和pacakges有一些基本的了解。以下过去的SO讨论也可能有所帮助:
Package import problem in mathematica
基本上,一些Combinatorica`
函数与版本8的新系统图相关函数具有相同的名称,因此Mathematica不知道要调用哪些函数。如果您真的想使用Combinatorica`
函数,那么您首先需要“静默”加载Combinatorica`
,而不必在$ContextPath
之后加载Block[{$ContextPath}, Needs["Combinatorica`"]]
,这可能是最容易实现的
Combinatorica`
然后,您必须使用Combinatorica`MinimumSpanningTree
等长名称来引用Combinatorica`
的功能。还要记住的另一件事是{{1}}中的图形表示与内置v.8功能中的图形表示不同,因此如果要混合使用,可能需要将其转换为另一个。
答案 1 :(得分:5)
我认为您想要转换为如下图表。
MinimumSpanningTree[FromAdjacencyMatrix[m]]
也可能感兴趣:
http://demonstrations.wolfram.com/ConnectingTownsUsingKruskalsAlgorithm/