2017-06-06 11 views
0

ノードの時間変化とモバイル動作をシミュレートしたいと思います。したがって、ノードがウェークアップしたり、を移動して、その近隣のものを距離内で検索するたびに、私はそれを必要とします。どのように近くのノードを見つけることができますか?機能はありますか?networkx pythonグラフ内の未接続ノードの遠方にある隣人を見つける方法

+1

位相幾何学距離または幾何学距離の後ろにいますか? WSNのコンテキストは、移動する必要のあるエッジの数ではなく、物理的な距離である可能性を示します。しかし、問題は明確ではありません。 (現在の答えはトポロジカルな距離としてそれを読む) – Bonlenfum

+0

@Bonlenfumこれに対処するために私の答えを更新しました。 –

+0

これらの回答のいずれかがあなたの質問に対処した場合は、その横のチェックボックスを使用して最も役に立つものをマークする必要があります。これは、あなたの質問も持っている将来のユーザーに役立ちます。 –

答えて

0

当然ありがとう、それは.neighbors()

D = nx.Graph() 
D.add_path([1,2,3,4]) 
D.neighbors(2) 

はあなたに

与えるだあなたは距離の範囲内にしたい場合は、[1、3]

をそして、ノード2の隣人を言います、その隣人も同様に、.neighborsを再帰的に適用することができます。

visited = set() 
for node in D.neighbors(2): 
    visited.add(node) 
    visited.update(D.neighbors(node)) 
1

これは単一の機能です:ego_graphです。それはradiusと呼ばれる距離パラメータを指定することができます。

# Sample data 
G = nx.florentine_families_graph() 
nx.draw_networkx(G, with_labels=True) 

# Desired graph 
H = nx.ego_graph(G, node=4, radius=2) 
nx.draw_networkx(H, with_labels=True) 

全体フィレンツェファミリーグラフNXとして

インポートnetworkx:

florentine_families_graph

そして、ちょうどそれらのノードのAcciauoli 'の距離2以内:

acciauoli ego graph

もし、単純なトポロジカル距離以外の距離測定値を使用する(すなわち、距離を計算するエッジ属性を指定するには、ego_graph関数にdistanceパラメータを指定します。

関連する問題