ID頂点で名前を取得したい場合は、この関数を使用できます:VAS(g, "name",id)
しかし、逆の方法で名前でIDを取得するには、どうすればよいですか?
質問する
236 次
2 に答える
1
igraphは、それ自体では、名前で頂点を検索する手段を提供しません。正当な理由から、名前からIDへのマッピングは、単純な配列検索操作であるIDから名前へのマッピングよりも難しい問題です。すべての頂点を反復処理して、一致する頂点で停止することもできますが、これは大きなグラフ(頂点の数のO(n))では非効率的です。dict
より高速な方法は、@ Jascの回答など、ある種の連想配列データ構造を使用し、名前をキーとして使用し、IDを値として使用することです。(変更する場合は、このインデックスをグラフと同期させる必要があります。)C自体、または標準Cライブラリはそのようなデータ構造を提供しませんが、利用可能な多くの実装があります。たとえば、GHash構造が見つかりました。 glibで。
于 2012-05-07T21:25:39.937 に答える
0
igrah の Web サイトまたはメーリングリストで次の情報を見つけました。
g = igraph.Graph(0, directed=True)
g.add_vertices(2)
g.vs[0]["name"] = "Bob"
g.vs[1]["name"] = "Bill"
# build a dict for all vertices to lookup ids by name
name2id = dict((v, k) for k, v in enumerate(g.vs["name"]))
# access specific vertices like this:
id_bob = name2id["Bob"]
print(g.vs[id_bob]["name"])
于 2012-05-07T20:44:13.153 に答える