2017-04-05 18 views
0

私はページランクを実行するグ​​ラフを作成しています。私は有向グラフと無向グラフの両方をテストしましたが、私は見ているものを理解するのに苦労します。networkx python、有向グラフ、無向グラフ、一貫性のないノードとエッジ?

私は以下のように見えるのコードのブロックを持っている:

G= nx.DiGraph() #option 1 
#G= nx.Graph() #option 2 
[inside a for loop] 
    G.add_edge(node, another_node) 
print("Graph size {} {}".format(len(G.nodes()), len(G.edges()))) 

[then code to run pagerank...] 

あなたが見ることができるように、私は有向グラフ(有向グラフ)と無向グラフ(グラフ)の両方を試してみてください。両方とも、(node、another_node)のペアの同じセットで同じ回数だけadd_edgeを呼び出す同じループを実行します。

次に、得られたグラフにノードとエッジの数を表示します。しかし、これは私を困惑させる行です。 DiGraphとGraphの場合、異なる出力が表示されるため、

オプション1を使用すると、ノード10107とエッジ1350222があります。 オプション2を使用すると、10107のノードと1268064のエッジがあります。

私は一貫性を理解しています。これは正常ですか、何が間違っているのでしょうか?

ありがとう

答えて

1

無向グラフのエッジには方向がありません。 AからBおよびBからAへの辺は重複と見なされます。 add_edge()は重複を無視します。そのため、無向グラフは、有向グラフが(A、B)と(B、A)の2つのエッジを持つ1つのエッジ(A、B)または(B、A)を持ちます。

+0

本当にありがとうございます。 – Ziqi

関連する問題