3

我正在尝试使用 Mathematica 找到最小生成树,并且我想使用 Combinatorica 的 MinimumSpanningTree 函数。我正在使用以下代码。

Needs["Combinatorica`"] 
MinimumSpanningTree[GraphPlot[m]]

其中 m 是一个矩阵。但是,MinimumSpanningTree 变成红色并且不起作用。输出给出

out = MinimumSpanningTree[<maximum spanned tree>]  //can't show the tree here

如何使 MinimumSpanningTree 工作?为什么会变红?

4

2 回答 2

7

当您遇到所谓的阴影问题时,这些函数会变成红色。您可以在文档中阅读有关它的更多信息 。这个问题在很多地方都有讨论,特别是在 Roman Maeder 的“Programming in Mathematica”一书中。David Wagner 在 Mathematica Journal 上发表的一篇非常详细的关于阴影的文章,可在此处以 pdf 格式获取。要理解这个问题,你需要对 context 和 pacakges 有一些基本的了解。以下过去的 SO 讨论也可能会有所帮助:

制作 Mathematica 包

Mathematica 中的包导入问题

基本上,其中一些Combinatorica`函数与版本 8 的新系统图形相关函数同名,因此 Mathematica 不知道该调用哪些函数。如果你真的想使用Combinatorica`函数,那么你首先需要“静默”加载Combinatorica`而不是在$ContextPath之后,这可能是最容易完成的

Block[{$ContextPath}, Needs["Combinatorica`"]]

然后,您将不得不Combinatorica`通过它们的长名称来引用函数,例如Combinatorica`MinimumSpanningTree. 要记住的另一件事是,其中的图形表示Combinatorica`与内置 v.8 功能中的表示不同,因此如果您想混合使用它们,可能需要将它们转换为另一种。

于 2011-12-08T15:47:30.423 回答
5

我想你会想要转换成如下图。

MinimumSpanningTree[FromAdjacencyMatrix[m]]

也可能感兴趣:

http://demonstrations.wolfram.com/ConnectingTownsUsingKruskalsAlgorithm/

于 2011-12-08T15:08:20.167 回答