始める無料で始める

頂点間の距離

ネットワークの相互接続性は、頂点間のパスの数と長さを調べることで評価できます。パスとは、頂点同士をつなぐ連鎖のことです。2つの頂点間にあるエッジの本数は、頂点間の測地距離を表します。互いに直接つながっている頂点の測地距離は 1 です。共通の近傍を共有しているが直接はつながっていない場合は 2、という具合です。有向ネットワークでは、エッジの向きを考慮できます。もし2つの頂点がエッジの向きに従って到達できない場合、その測地距離は無限大とされます。この演習では、ネットワーク内の頂点間で最長のパスを見つける方法と、ある頂点から \(n\) ステップ以内に到達可能な頂点を見分ける方法を学びます。はしかデータセットのような疾病伝播ネットワークでは、病気がネットワーク内をどれくらいの速さで広がるかを把握するのに役立ちます。

この演習はコースの一部です

Rで学ぶネットワーク分析

コースを見る

演習の手順

  • farthest_vertices() を使って、ネットワーク内で最も長いパスの長さを求めましょう。
  • get_diameter() を使って、そのパスの並び(シーケンス)を特定しましょう。これは、ネットワーク内で最も遠くまで病気を広げた子どもたちの連なりを示します。
  • ego() を使って、頂点 42 から 2 ステップ以内で到達できるすべての頂点、そして 2 ステップ以内で頂点 42 に到達できる頂点を見つけましょう。ego() の第1引数はグラフオブジェクト、第2引数は頂点間の最大ステップ数、第3引数は対象の頂点、第4引数は対象頂点から出る接続を考えるか、対象頂点に入ってくる接続を考えるかを指定します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

library(igraph)

# Which two vertices are the furthest apart in the graph ?
___(g) 

# Shows the path sequence between two furthest apart vertices.
___(g)  

# Identify vertices that are reachable within two connections from vertex 42
___(g, ___, '42', mode = c('___'))

# Identify vertices that can reach vertex 42 within two connections
___(g, ___, '42', mode = c('___'))
コードを編集して実行