🫥

テンポラル・ネットワークを味わう - テンポラルな距離の概念

に公開

概要

前回の記事では, テンポラル・ネットワークのデータ表現をいくつか紹介した.
今回は, そんなテンポラルなデータ表現を活用して, ネットワーク構造の大事な概念である「歩道」,そしてその主要な解析量である「距離」を紹介する.

静止したネットワークと違い, テンポラル・ネットワーク上では, 移動のために辿る枝が「時間によって発生したり, 消えたり」する. そのため, 目的の頂点へと向かうことができる枝が現れるのを待機する状態や, あるいは, タイミングによっては目的の頂点へ到達できない状態となったりする, というのが大きな特徴である.

そんな静止したネットワークと異なる, テンポラルな「歩道」, そして「距離」の定義について紹介する.

https://zenn.dev/akitek/articles/082d3353add444

静止したネットワークでの「道」と「距離」

まず静止したネットワークでの「道」および「距離」を定義する.
「歩道」(walk)とは, ある頂点から別の目的となる頂点までに, 隣接する頂点を経由して枝を辿って進む経路である. そして, 「道」は, ある頂点から別の目的となる頂点までに, 同じ頂点を通らずに, 進むことができる「歩道」である.
「歩道」は2頂点間の可能な経路を列挙するために, 「道」は2頂点間の最短経路を計算する上で便利である.

そして, 「距離」を, 2頂点間(v_iv_j)の「道」のなかで, 最小の移動回数(あるいは, 何らかの指標を最小にする)である. これを, d(v_i, v_jと定義する.無向ネットワークの場合,距離の公理が成り立つ.(逆に, 有向ネットワークでは一般的に非対称性が成り立たない)

  1. 非負性: (d(v_i, v_j) \geq 0,
  2. 非退化: (v_i = v_jのときにのみ, d(v_i, v_j) = 0 が成り立つ),
  3. 対称性: (d(v_i, v_j) = d(v_j, v_i)),
  4. そして, 三角不等式が成立する( v_iv_jのとある「道」上の経由点v_pに対し, d(v_i, v_j) < d(v_i, v_p) + d(v_p, v_j))

テンポラルな「道」と「距離」

次にテンポラルな「道」の定義を確認する.

テンポラル・ネットワークでは, 経路上の枝が, 時間によって発生したり, 消えたりしている. そのため, 2頂点間の道の一部がある時刻で消えている場合には, 移動がスムーズに行われないケースがある. その場合, 移動のために枝が発生する時刻まで待機することとなる.[1]

また, タイミングによっては, 「道」が永久に途絶えてしまい, 目的の頂点に到達不可能な状態となる場合もある. つまり, テンポラル歩道は因果性をもつ道であり, 過去に発生した枝(イベント)の上を, 今歩いて移動することができない.

この因果性という制約のために, テンポラル・ネットワークの「歩道」は, 静止したネットワークとは全く別の性質を帯びることとなる.

以下, テンポラル歩道を表現する上で, イベント表現を利用する. イベント表現は, 枝リストに時間情報を含んだ(u_i, v_i, t_i)の集合で表せられる.

到達可能性行列

テンポラル・ネットワークでは, v_iからv_jまでのテンポラル歩道が存在する場合, v_iからv_jは到達可能であるという. そうした到達可能の有無を整理したものが到達可能性行列 Rである. R(i, j)要素である, R_ijは, v_iからv_jへ到達可能であれば1, 到達不可能であれば0がはいる.

そして大事なことであるが, Rは, 時間によって変化する. そこで, 時刻t_i以前のイベント表現を用いたテンポラル・ネットワークにおける到達可能性行列を, 添え字tを用いてR_{t \leq t_i}で表す.[2]

図の例は, v_1からv_4へ移動する場合を考えたものである. まず, R_{t \leq t_6}, つまり, 時刻t_6までのイベント表現により構築されたテンポラル・ネットワーク上では, v_1からv_4へは到達可能になっている.

具体的には,計3つのテンポラル歩道があり, それぞれ{(v_1, v_2, t_1), (v_2, v_3,t_3),(v_3, v_4, t_5)}と, {(v_1, v_2, t_1), (v_2, v_4,t_6)}と, {(v_1, v_3, t_4), (v_3, v_4, t_5)}である.

しかし, 使用するイベント表現がt \leq t_4までのもの, つまり, R_{t \leq t_4}では, v_1からv_4へは到達不可能になっている.この場合, 時刻t_5以降に, 追加のイベントがなければ移動できない状態となっている.

時間によって到達可能性が変化していることを確認してもらえたらと思う. ちなみに, 一般的に到達可能性行列R非対称である. つまり, v_iからv_jは到達可能であるとしても, v_jからv_iは到達可能である,...とは限らないのだ.

さまざまな「距離」

静止したネットワークと同様に, テンポラル・ネットワークにも「距離」を定義することができる. ところで, 静止したネットワークとは異なり, テンポラル・ネットワークでは, 枝が時間によって発生したり,消えたりする.

それにより, 前項の到達可能性行列では, テンポラル・ネットワークの構造を示すイベント表現の数が限定的となった場合, つまり, ある時刻から出発した, あるいは, ある時刻までに到達しなければいけない, というケースでは, 目的となる頂点に到達できなくなる可能性があることを述べた. 到達できない, ということは, その2頂点間の距離d(v_i, v_j)は, \infということになる.

このように, 状況によっては2頂点間の移動ができないことがあり, 2頂点間の距離も変動する. つまりは, テンポラル・ネットワークでは, やはり, 「距離」も時間依存となる.

そして面白い特徴として, テンポラル・ネットワークでは, 最小距離を実現する歩道は道ではないかもしれない. つまりは,過去に通った2頂点間の枝を, 再度通る場合が, 最短経路となるケースがあるのだ. これは, 静止したネットワークではありえない.[3]

以下テンポラル距離を三つあげる. 頂点uから頂点vへのテンポラルな道を{(u,v_1, t_1), (v_1, v_2, t_2),...,(v_{n-1}, v_n, t_n)}のように表す.
また, 図の例と一緒に考えてみると理解が進むかもしれない.

(テンポラル版の)最短距離

一つ目は, いわゆる, テンポラル・ネットワーク版の最短距離である. 静止したネットワークでは, 最短距離は, 二頂点間の移動に必要な最小の枝数である[4]

テンポラル・ネットワークでも似たような概念が定義されている.

d_{short}(u, v; t) = \min \{n: t_1 \geq t\}

これは, 頂点uから, 頂点vにテンポラルな道に沿っていくために必要な最小の移動回数である. 後ろの{t_1 \geq > t}は, 時刻t以降に出発すれば, との制約をつけている.

つまりは, 最短距離d_{short}(u, v; t)は, 時刻tによって変化するという時間変化を考慮していることになる. そして, 基本的には, 時刻tが時間的に後になるほど, テンポラルな枝の数がすくなるため, 移動可能なテンポラルな道が少なくなり, 結果として距離d_{short}(u, v; t)は単調に増加する[5].

先頭距離

つぎは, 先頭距離(foremost distance) である.これは,

d_{fore}(u, v; t) = \min\{t_n - t: t_1 \ geq t\}

と定義されている. ここで式に注目してほしいが, 最小化しているのは時間t_nである.つまり, 時刻tから数えて, 頂点uから頂点vまで行くのに必要な最小時間を評価している. はやく目的地まで到達できれば, 移動回数(テンポラルな道の長さ)には関心がない距離の測り方である.

旅行時間距離

三つ目は, 旅行時間距離である. 早速の定義であるが,

d_{travel}(u, v; t) = \min\{t_n - t_1 : t_1 \geq t\}

d_{fore}にも似た式であるが, 大きな違いとして, 最初の待機時間を無視していることである(t_1 - tだけ). まさに, 移動中(旅行中)の時間だけを最小化しようというものである.

どれ使う?

3つのテンポラルな距離を紹介したが, 結局のところどれを使うと良いのだろうか?
答えは「ケースバイケース」となってしまう. なぜなら, それぞれ最小化しているものが違うため, 分析者の関心のある内容に合わせて適切な距離を選択する必要があるのだ.

各距離の違いについて, 『テンポラル・ネットワーク』(森北出版)では,わかりやすい例えを持ち出して説明してる.

例として, 公共交通ネットワークを考える. 枝は市内の駅と駅のつながりであるとする.
利用者が乗り換え愛数を最小化したいならd_{short}を用いるのがよい.
目的地になるべく早く到着したいのならd_{fore}を使うべきだ.
移動中の時間をなるべく小さくしたいならば, d_{travel}を用いるべきだ.

なお, 無向ネットワークだとしても, d(u,v;t) \neq d(v,u;t)であり, 対称性は基本的に成りたたない.

時間に依存しない距離指標

テンポラルな道の最短距離d_{short},先頭距離d_{fore}, そして, 旅行時間距離d_{travel}どれをとっても, 時間tに依存する指標であるとわかる.

しかし, 実用面では, 時間に依存しない, テンポラル・ネットワーク全体についての二頂点間の距離に興味があるかもしれない.
そんな時刻tに依存しない距離指標を作る方法は3つある.

1つ目は, 時間全体を通して最小値を用いる方法である. こうすれば, いつ移動を始めるか, という時間の縛りを受けず,テンポラル・ネットワーク全体でただひとつ求めることができる. 特に, 最短距離d_{short},旅行時間距離d_{travel}に向いていて, それぞれ\min_t d_{short}(u,v;t), \min_t d_{travel}(u,v;t)を求めることとである.

2つ目は, 時刻tを, t = 0に固定してしまう方法である.こうすれば, 一つ目の方法と同様に, いつ移動を始めるか, という時間の縛りを受けず, 距離を定義できる.

3つ目は, 時間依存の距離指標を時刻全体にわたって平均する方法である.

ベクトル時計

最後に紹介するのは, 距離の定義から二頂点間で共有している情報の古さを測る, ベクトル時計である. もう少し詳しく述べると, 先頭距離の概念を用いることによって, 任意の頂点が他の任意の頂点についてどれだけ最近の情報をもっているかを定量化する.

テンポラルな視点

ベクトル時計を求めるため, 頂点uが頂点vについて時刻tにもつ「テンポラルな視点(temporal view)\phi (u,v,t)を定義する. この「テンポラルな視点」は, 頂点uから頂点vへ時刻t以前に到達するテンポラルな道が存在しうる最も遅いテンポラルな見市の出発時刻

少し定義の内容が難しく感じたかとおもうが, 要は, 時刻tにて頂点uが頂点vに持っている情報の取得時刻をもとめている. その求め方として, これまで時間方向にテンポラルな道をたどっていたものを, 時間方向とは逆の, 後ろ向きにみたテンポラルな移動距離(先頭距離)を計算しているに過ぎない.

ちなみに, 頂点uが頂点vに関する情報を取得するためには, 何も頂点uと頂点vとが直接やりとりをする必要はない. 過去に頂点vとやりとりがあった第三の頂点kから頂点vに関する情報を取得してもよいのだ. この場合,頂点uが取得する情報は, 過去に頂点kが頂点vとやりとりした時点のものとなることに注意が必要である.

テンポラルな視点\phi (u,v,t)がどのように求まるのか理解しやすいよう図を用意した.
図(a)は, 今回想定するテンポラル・ネットワークで, 離散時刻[t_1, t_5]での5回のイベントをもっている. イベント表現であれば, {(v_1, v_2, t_1),(v_2, v_3, t_2),(v_1, v_3, t_3),(v_2, v_3, t_4),(v_1, v_2, t_5)}となる.

ここで時刻t_4における, 頂点v_1が頂点v_2に関する情報の鮮度\phi (v_1,v_2,t_4)を求めてみよう. \phi (u,v,t)の定義に合わせて, 時刻t_4以前に,テンポラルな道を辿って, 頂点v_1から頂点v_2に到達できる先頭距離を探す.

すると, 図の点線矢印を辿ると, (v_1, v_3, t_3) -> (v_2, v_3, t_2)と枝を辿ることで, 点v_1から頂点v_2に到達できる. このとき, 点v_1は, 頂点v_3を経由して頂点v_2に関する情報を取得できる.ただし, 頂点v_3がもっていた頂点v_2に関する情報は, 時刻t_2のものなので, \phi (v_1,v_2,t_4) = t_2となる[6].

情報潜時

そして\phi (u,v,t)が計算できると, 情報潜時(information latency) を求めることができる. これは, 頂点uが頂点vについての最も新しい情報を得てから現在までに経過した時間である. 情報潜時は, t - \phi (u,v,t)で定義されている. 図(b)を確認してほしい.

ベクトル時計と「前進」

さきほどは, 二頂点間の情報のやりとりに着目したが, それを拡張し, ある頂点v_iが時刻tにもつ他の頂点すべてについての最も新しい情報を集約したものをベクトル時計という.
つまり,

\phi (v_i,t) = (\phi (v_i,v_1,t)),(\phi (v_i,v_2,t)),...,(\phi (v_i,v_N,t))

そしてこのベクトル時計をつかい, 頂点vのベクトル時計\phi (v,t)「前進(advance)」 を定義できる. ここで, 「前進」は頂点vに関するベクトル時計\phi (v,t)のすべての要素にわたる和の, イベント(u, v, t)の直後と直前の差として定義される.

言い換えると, 「前進」はイベント(u, v, t)が頂点vにもたらす情報の定量化で, 「前進」の値が大きいイベントは価値が高いと考えることができる.

イメージとしては, イベント(u, v, t)を得ると, 時刻tで頂点vが頂点uを通じて, 頂点u自身, そして, 他の頂点の情報が更新される. この更新幅が大きいほど, 頂点vが頂点uは有意義であった, 大きな情報を頂点vにもたらしたと判定できる指標となっている. 頂点uが, 過去に頂点v以上に他の頂点とのやりとりをしていたとしたら, この頂点uを通して得られる情報も多くなるだろう.

まとめ

本記事は, テンポラル・ネットワークでの「距離」の定義や計算例を紹介した. テンポラル・ネットワーク上では, 二頂点間の距離の大きさが時間によって変化していた. また, 「距離」の定義もさまざまな指標が考えられることも特徴的である.

そして, そうしたテンポラルな距離を拡張し, 二頂点間での情報の鮮度を測るベクトル時計や, 情報潜時といった概念を紹介した.

距離が定義できたことで, いよいよネットワークの重要な量である「中心性」について説明できるようになった. 次回は, テンポラルな中心性を紹介するか, 今回が説明的な要素が多かったため, 先に「距離」やベクトル時計の計算アルゴリズムや実装例を紹介するかもしれない.

参考リスト

https://www.morikita.co.jp/books/mid/085702

脚注
  1. まるで信号待ちかのようだ ↩︎

  2. この表現は本記事で勝手に定義している.時間の制約によって, さまざまな到達可能性行列がでてくる, と理解してもらえばそれでよい ↩︎

  3. 証明として, 一度通ったことのある頂点から, 冗長的な部分, 例えば, 1回目にその頂点を訪れてから, 2回目にその頂点を訪れるまでに通った歩道の部分を排除すれば, 移動距離は削減できるため. ↩︎

  4. 言うまでもないが, 枝に何らかの重みが定義されている場合は, その重みを最小にする経路が対象となる ↩︎

  5. 他の距離の定義でも同じだが, t -> \infで, d_{short}(u, v; t) -> \infとなる. つまり, そもそものテンポラルな道がなくなる. ↩︎

  6. 他の時刻から計算した場合も載せているので各各人してほしい ↩︎

Discussion