■ワーシャルフロイド法の使い方 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 なんか出てきたが、酷く時間がかかった。