グラフ上の合流に関する問題とアルゴリズム (データ構造とアルゴリズム Advent Calendar 2020)
この記事は「データ構造とアルゴリズム Advent Calendar 2020」19日目の記事です.18日目は@ryuhe1さん; 線形漸化的数列のN項目の計算,20日目は@tsugarさんです.
本記事ではグラフ上の経路探索に関して,ライドシェアやロジスティクスなどの応用において重要とされる合流に関する問題とデータ構造・アルゴリズムについて雑多に書きます.1つ目の問題として典型問題(?)である集合点を求める問題(Optimal meeting point (OMP) query)を紹介します.2つ目の問題としてOMPを拡張した選好経路に基づいた集合点に関する問題を紹介します.
1. Optimal Meeting Point query on graphs
これはいろんな場所に人々が点在しているときに,どこで待ち合わせしたらいいかを考える問題です (ここはコロナが存在しない世界ですので,集合しても問題ありません).
問題の定義
距離関数を
所与の地点 (顧客がいる地点や頂点の集合) を
- min-sum型:
x^\star = \arg\min_{x} \sum_{i=1}^n d(x, q_i) - min-max型:
x^\star = \arg\min_{x} \max_{i} d(x, q_i)
です.2次元の場合にどのような差がでるのか,(軽く離散化して手抜きをした)プロットの例から見てみます.maxを抑える場合は左の離れた点に引っ張られ,sumを抑える場合は,特に2次元平面上で
似たような問題をグラフ上でやってみると (このグラフはこちらの記事で使ったものをパクってきました: 集まって移動する (数理最適化 Advent Calendar 2020)),グラフ上の距離 (ネットワーク距離) を用いるという違いはありますが,似たような雰囲気の結果が得られます.
形式的に書いておくと,OMPは次のような問題です.
Input: グラフ
, 地点 G=(V, E) Q
Output: 目的関数を最適化する地点x^\star\in V
アルゴリズム
naive
想定している距離
一方で距離がネットワーク距離になっている場合には,グラフ
改良
上に言葉だけで説明したアルゴリズムは,これまでの (論文以前の,という意味です) アプローチと比較して効率的ですが,
例えば
しかしネットワーク構造に依存して例外が存在します (論文図3(b)).
この図のように,ネットワークのトポロジが悪さをした結果,幾何的なconvex hullに含まれない迂回頂点が発生する例を作ることができます.これを対処するには,最短経路を用いたグラフ上の最短経路に基づく凸包 (簡単に言えば,任意の頂点間の最短経路を構成する頂点がその包に含まれるような集合です) を計算すれば良いです.
提案手法では通常の凸包を構築した後に,最短経路を補い,それを用いて探索範囲の凸包を構築します.ちなみにこの処理の最適性はどうなんでしょうか!?知らないです(は?).
この関数で計算される凸包を
convex hull | 最短経路を追加していった図 |
---|---|
k -OMP based on Preferred Paths
2. これは人々が職場から自宅に帰ろうとしているときに,「今日一杯飲んでいく?」といって全員があるお店に集合する場合に都合の良い場所をk個ぐらいリストアップする問題です(ここはコロナが存在しない世界ですので,飲み会のために寄り道しても問題ありません).
定義
1.で書いた問題と同様にグラフ
1つ目についてです.今,頂点
これは例えば飲み会を開催する候補の集合のようなものです.
2つ目についてです.今,各
たとえばユーザ
がいつも通勤につかっているような経路がデフォルトで設定されています. n
またグラフや経路上には分岐点 (branching point) を想定しています.これは移動する際に経路を変更しうる点として設定されています.ただし基本的にはグラフ
距離の定義
あるPOI
問題の定義
今考える問題 (
Input:
ユーザの選好パス集合 n , POI集合 p_\mathit{set} C
Output:であり A\subseteq C, |A| = k について \forall o_i\in A, o'\in C\setminus A を満たすもの (上で定義した集団迂回距離が小さいPOI \mathit{Gdd}(o_i) < \mathit{Gdd}(o') 個) k
アルゴリズム
問題を解く方法を見ていきます.
naive
一番naiveな手法としては,
改良
1.の手法と同じく,うまく計算を効率化していきたいです.論文の提案手法は,次のようなものになっています.楕円とGNNqueryを用いて探索範囲をうまくpruningするという基本的なアイデアは似たものになっていますね.
-
Group nearest neighbor query (GNNquery) を用いて,出発地点の幾何中心
(centroidの意味です)と目的地の幾何中心c_s から都合の良い地点をc_d 個初期解として選ぶk - 選ばれた初期解を用いて目的関数値
のtop-\mathit{Gdd} 個 (k と書く) を計算して格納する\mathit{Gdd}^k -
とc_s を焦点とする楕円を描き,楕円に含まれるPOIに対して目的関数値を計算し,c_d を更新する\mathit{Gdd}^k - 最終的にtop-
なPOI地点を解として返すk
ここでは初出のGroup nearest neighbor queryについて型を説明します.GNNqueryは以下の処理を実現するものです.
Input:
個の点 N と, \{p_1,\dots,p_N\} 個のクエリ点 n \{q_1,\dots,q_n\}
Output: 距離を最小とするような \mathit{dist}(q, Q) 個のクエリ点: ただし k ( \mathit{dist}(q, Q) := \sum_{i=1}^n |pq_i| |pq_i|はユークリッド距離)
なぜネットワーク距離を用いた
(ユークリッド距離の三角不等式) => (迂回距離
)に関する不等式 => (集合迂回距離 \mathit{dd} )に関する不等式 \mathit{Gdd}
と展開し,集合迂回距離に関する不等式を用いて,
まとめ
本記事ではグラフ上の経路探索に関して,ライドシェアやロジスティクスなどの応用において重要とされる合流に関する問題とデータ構造・アルゴリズムについて雑多に書きました.
参考文献
- Da Yan, Zhou Zhao and Wilfred Ng: Efficient Algorithms for Finding Optimal Meeting Point on Road Networks, VLDB2011
- Elham Ahmadi, Mario A. Nascimento:
-Optimal Meeting Points Based on Preferred Paths, SIG-SPATIAL2016k - Jin Soung Yoo, Shashi Shekhar: In-Route Nearest Neighbor Queries, GeoInformatica 9:2, pp.117-137, 2005
- Dimitris Papadias, Qiongmao Shen, Yufei Tao, Kyriakos Mouratidis: Group Nearest Neighbor Queries, ICDE2004
Discussion