これも単なるメモです。
考えられるバグと回避策に特に注意を向けたいと思いToCombinatoricaGraph
ます。元の質問とは関係ないかもしれません。
また、Mma 7 を使用しているため、v8 で修正される可能性があります。
次のようにグラフを定義すると
Needs["Combinatorica`"]
Needs["GraphUtilities`"]
gr1 = {2 -> 4, 4 -> 3, 3 -> 1}
gr1のGraphPlot
以下を比較してください。
EdgeList@gr1
EdgeList@ToCombinatoricaGraph@gr1
Edges@ToCombinatoricaGraph@gr1
出力
{{2, 4}, {4, 3}, {3, 1}}
{{1, 2}, {2, 3}, {3, 4}}
{{1, 2}, {2, 3}, {3, 4}}
私が使用する回避策は、可能な限り無視し、代わりに を使用してCombinatoricaグラフToCombinatoricaGraph
に変換することです。FromOrderedPairs
例えば
Edges@FromOrderedPairs@EdgeList@gr1
EdgeList@FromOrderedPairs@EdgeList@gr1
出力
{{2, 4}, {4, 3}, {3, 1}}
{{2, 4}, {3, 1}, {4, 3}}
もう一つの例、Degrees
比較
Degrees@MakeSimple@ToCombinatoricaGraph[gr1]
VertexList@MakeSimple@ToCombinatoricaGraph[gr1]
出力
{1, 2, 2, 1}
{1, 2, 3, 4}
と
Degrees@MakeSimple@FromOrderedPairs@EdgeList@gr1
VertexList@MakeSimple@FromOrderedPairs@EdgeList@gr1
{1, 1, 2, 2}
{1, 2, 3, 4}
また、Prufer コードの例も含めます。
LabeledTreeToCode@MakeSimple@ToCombinatoricaGraph@gr1
LabeledTreeToCode@MakeSimple@FromOrderedPairs@EdgeList@gr1
出力
{2, 3}
{3, 4}
(2番目の答えだけが正しいです)
これを Wolfram に報告しました。によるグラフ作成時の頂点の並べ替えにつながっているようToCombinatoricaGraph
です。これが返信の一部です(2009)
Edges と EdgeList が ToCombinatoricaGraph オブジェクトで機能しない理由は、Combinatorica パッケージがこれらの関数よりも前に開発されており、構造がこれらの関数で動作するようにまだ適合されていないためです。
Our development team is currently working to update the Combinatorica
package so that these functions will be compatible. If you happen to
他の問題に出くわしたり、質問がある場合は、お知らせください。
私の見解でToCombinatoricaGraph
は、注意して使用する必要があります (可能な限り避けてください)。ただし、違いがない場合(元の質問に対する他の回答で与えられた使用法を含む)はおそらく多くの場合があります。
個人的には、Combinatoricaパッケージがなくなるのは見たくありません。多くの便利な機能が含まれています (ドキュメントが非常に悪い場合)。