7

インデックスで指定された2つの頂点がエッジで接続されているかどうかを確認するためのPython 2.7のiGraph 0.6に非常に短い式がありますか?

私はどこかで見つけました:

are_connected(v1, v2)  

しかし、Python では、「NameError: グローバル名 'are_connected' が定義されていません」というエラー メッセージが表示されます。

上記の式は R の場合もあれば、完全に間違っている場合もあります。知らない。私が自分のプロジェクトでやろうとしていることには、R では十分ではありません。

私のグラフは無向で、このチュートリアルで説明されている頂点とエッジ (vs と es) の多くのシーケンスがあります: http://hal.elte.hu/~nepusz/development/igraph/tutorial/tutorial.html

更新: http://packages.python.org/python-igraph/igraph.GraphBase-class.html#is_multiple is_multiple と is_mutual を見つけましたが、それぞれがトリックを実行できると思いますが、それでもエラーが発生します: 「NameError: グローバル名 'are_mutual' が定義されていません」.

インターネット上で、それを正しく実装する方法の例を見つけることができませんでした。私はまだ探しています。

4

3 に答える 3

14

記録のために:(are_connectedまたis_mutualis_multipleポスターが言及したことも)グラフ自体のメソッドであり、それ自体では機能しないため、それらを使用する正しい方法は次のとおりです。

>>> g = Graph.GRG(100, 0.2)
>>> g.are_connected(0, 2)
False
于 2012-12-13T10:17:58.463 に答える
12

GraphBaseクラスにはget_eid(v1, v2, directed=True, error=True)、インデックスで指定された頂点間の任意のエッジを返す関数があります。あなたはそれを次のように呼び出します:

g.get_eid(v1, v2, directed=False, error=False)

頂点が切断されている場合は -1 を返し、それ以外の場合はエッジを返します。

于 2012-12-13T08:41:08.750 に答える
0

そのモジュールについて聞いたことはありませんが、とにかく、インポートの問題のようです。モジュールからその関数をインポートしてみてください。

from igraph import are_connected

そうしないと、python はそれを認識しません。もう 1 つの可能性は、最初に宣言したグラフ オブジェクトから関数を呼び出す必要があることです。

from module import MyGraphObject
...
MyGraphObject.are_connected(...)
于 2012-12-13T08:52:02.097 に答える