■ワーシャルフロイド法の使い方
Floydのアルゴリズムとも呼ばれるFloyd-Warshallアルゴリズムは、密集グラフのグラフのノードの各ペアの最短経路のコストの合計を計算するのに適しています。
主な特徴は次のとおりです。
・パスを返しません。
・グラフ内のノードの各ペアに対する最短経路のコストの合計を返します。
・プロセスは肯定的なコストのエッジでのみ実行されます。
・Boostは、V×V行列を返します。ここで、無限大の値です。 パスがない頂点間の距離を表します。
・無限大以外の値のみを(start_vid、end_vid、agg_cost)のセットの形で返します。
・戻り値がテーブルに格納されている場合は、一意のインデックスは(start_vid、end_vid)のペアになります。
・無向グラフの場合、結果は対称です。
・(u、v)のagg_costは(v、u)と同じです。
・start_vid = end_vidのとき、agg_cost = 0。
・推奨されているのは、3500エッジ以下のバウンディングボックスを使用することです。
-----
SELECT * FROM pgr_floydWarshall('SELECT gid, source, target, cost FROM ways where gid = 10' );
start_vid | end_vid | agg_cost
-----------+---------+-----------------------
95 | 23 | 0.00093223435894817
23 | 95 | 0.00093223435894817
4506 | 1 | 0.000788520466807583
1 | 4506 | 0.000788520466807583
3221 | 2 | 2.70185121784218e-005
2 | 3221 | 2.70185121784218e-005
1724 | 3 | 0.00037710190931161
3 | 1724 | 0.00037710190931161
196 | 4 | 0.00036557605227385
196 | 1800 | 0.00100402907325107
4 | 196 | 0.00036557605227385
4 | 1800 | 0.000638453020977218
1800 | 196 | 0.00100402907325107
1800 | 4 | 0.000638453020977218
4099 | 5 | 0.00030819351844984
5 | 4099 | 0.00030819351844984
1458 | 6 | 0.000280440956354741
1458 | 2417 | 0.00131019044532306
6 | 1458 | 0.000280440956354741
6 | 2417 | 0.00102974948896831
2417 | 1458 | 0.00131019044532306
2417 | 6 | 0.00102974948896831
(22 行)
感想
何やっているのか、さっぱり分からん
SELECT * FROM pgr_floydWarshall('SELECT gid, source, target, cost FROM ways') WHERE start_vid = 9 and end_vid = 24;
start_vid | end_vid | agg_cost
-----------+---------+-------------------
9 | 24 | 0.180760172336233
なんか出てきたが、酷く時間がかかった。