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」で議論されています。Mathematica Journal の David Wagner による非常に優れた詳細な記事は、ここから pdf で入手できます。この問題を理解するには、コンテキストとパッケージに関する基本的な知識が必要です。以下の過去の SO ディスカッションも役立つ場合があります。

Mathematica パッケージの作成

Mathematica でのパッケージのインポートの問題

基本的に、一部のCombinatorica`関数はバージョン 8 の新しいシステム グラフ関連関数と同じ名前を持っているため、Mathematica はどの関数を呼び出すべきかわかりません。本当に関数を使用したい場合Combinatorica`は、最初に「静かに」ロードする必要がありますCombinatorica`$ContextPathこれは、おそらく次のように最も簡単に実行できます。

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

次に、 のCombinatorica`ような長い名前での関数を参照する必要がありますCombinatorica`MinimumSpanningTree。留意すべきもう 1 つの点は、組み込みの v.8 機能のグラフ表現とCombinatorica`は異なるため、それらを混在させたい場合は、別のグラフ表現に変換する必要がある場合があることです。

于 2011-12-08T15:47:30.423 に答える
5

以下のようにグラフに変換したいと思うと思います。

MinimumSpanningTree[FromAdjacencyMatrix[m]]

また、おそらく興味深い:

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

于 2011-12-08T15:08:20.167 に答える