/ /マルチエッジpython igraphに関する質問 - python、igraph

マルチエッジPython igraph質問 - Python、igraph

有向多辺加重グラフを使用している場合、これらのことをどのようにしますか。

  1. 頂点IとJに対して、IからJまでのすべての辺をリストします。
  2. 重みが10を超えるグラフ内のすべての辺を削除します。

1の場合、すべての外向きのエッジを一覧表示できます。宛先ノードでフィルタします。これは潜在的に非効率的なようですが、エッジを直接取得する方法はありますか? 2の場合、すべてのエッジをリストし、各ウェイトを調べてから必要に応じてエッジを削除できます。これを行うためのきちんとした慣用的な方法はありますか?

回答:

回答№1は4

#1に関しては、残念ながら簡単なことはありませんあなたが言及したものより解決策(すなわち、すべての発信エッジを照会してから宛先に基づいてフィルタリング)。 igraphのCコアには、次の関数があります。 igraph_get_eids_multi これはあなたが望むことをするでしょうが、その関数に対応するPythonインターフェースはありません。

#2に関しては、これをすることができます(それを仮定して) g グラフオブジェクトです。 weight 重みを保持しているedge属性の名前 gt "より大きい"を表します。

g.es.select(weight_gt=10).delete()

どこで g.es グラフ全体の辺列を表します。 select メソッドはいくつかの基準に基づいてエッジシーケンスをサブセット化します。 EdgeSeq.select 詳細については、別の EdgeSeq。ザ delete() 次に、フィルタ処理されたエッジシーケンスのmethodはエッジを削除します。