pgr_aStarCostMatrix

pgr_aStarCostMatrix - 使用 pgr_aStar 计算成本矩阵。

_images/boost-inside.jpeg

Boost 图内部

可用性

  • 版本3.0.0

    • 官方 函数

  • 版本2.4.0

    • 拟议 函数

描述

主要特点是:

  • 内部使用 pgr_aStar 算法

  • 返回成本矩阵。

  • 不进行排序

  • 设`v` 和 u 是图上的节点:

    • 当没有从 vu 的路径时:

      • 没有返回对应的行

      • vu 的成本是 \(\inf\)

    • \(v = u\)

      • 没有返回对应的行

      • vu 的成本是 \(0\)

  • 当图 无向 时,成本矩阵是对称的

签名

总结

pgr_aStarCostMatrix(Edges SQL, start vids, [options])
options: [directed, heuristic, factor, epsilon]
返回 (start_vid, end_vid, agg_cost) 的集合
OR EMPTY SET
示例:

无向 图上,使用heuristic \(2\),对顶点 \(\{5, 6, 10, 15\}\) 创建对称的成本矩阵

SELECT * FROM pgr_aStarCostMatrix(
  'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edges',
  (SELECT array_agg(id) FROM vertices WHERE id IN (5, 6, 10, 15)),
  directed => false, heuristic => 2);
 start_vid | end_vid | agg_cost
-----------+---------+----------
         5 |       6 |        1
         5 |      10 |        2
         5 |      15 |        3
         6 |       5 |        1
         6 |      10 |        1
         6 |      15 |        2
        10 |       5 |        2
        10 |       6 |        1
        10 |      15 |        1
        15 |       5 |        3
        15 |       6 |        2
        15 |      10 |        1
(12 rows)

参数

类型

描述

Edges SQL

TEXT

Edges SQL 如下所述

start vids

ARRAY[BIGINT]

起始顶点的标识符数组。

可选参数

类型

默认

描述

directed

BOOLEAN

true

  • true 时,该图被视为有 有向

  • 如果为 false ,则该图被视为 无向

aStar 可选参数

参数

类型

默认

描述

heuristic

INTEGER

5

Heuristic 数字。当前有效值0~5。

  • 0: \(h(v) = 0\) (使用该值与 pgr_dijkstra 进行比较)

  • 1: \(h(v) = abs(max(\Delta x, \Delta y))\)

  • 2: \(h(v) = abs(min(\Delta x, \Delta y))\)

  • 3: \(h(v) = \Delta x * \Delta x + \Delta y * \Delta y\)

  • 4: \(h(v) = sqrt(\Delta x * \Delta x + \Delta y * \Delta y)\)

  • 5: \(h(v) = abs(\Delta x) + abs(\Delta y)\)

factor

FLOAT

1

对于单位操作。 \(factor > 0\)

epsilon

FLOAT

1

对于限制较少的结果。 \(epsilon >= 1\)

查看可用的 heuristicsfactor 处理。

内部查询

Edges SQL

参数

类型

默认

描述

id

ANY-INTEGER

边的标识符。

source

ANY-INTEGER

边的第一个端点顶点的标识符。

target

ANY-INTEGER

边的第二个端点顶点的标识符。

cost

ANY-NUMERICAL

边(source, target)的权重

  • 当为负时:边(source, target)不存在,因此它不是图的一部分。

reverse_cost

ANY-NUMERICAL

-1

边 (target, source)的权重,

  • 当为负时:边( target, source )不存在,因此它不是图的一部分。

x1

ANY-NUMERICAL

source 顶点的X坐标。

y1

ANY-NUMERICAL

source 顶点的Y坐标。

x2

ANY-NUMERICAL

target 顶点的X坐标。

y2

ANY-NUMERICAL

target 顶点的Y坐标。

其中:

ANY-INTEGER:

SMALLINT, INTEGER, BIGINT

ANY-NUMERICAL:

SMALLINT, INTEGER, BIGINT, REAL, FLOAT

结果列

(start_vid, end_vid, agg_cost) 的集合

类型

描述

start_vid

BIGINT

起始顶点的标识符。

end_vid

BIGINT

结束顶点的标识符。

agg_cost

FLOAT

start_vidend_vid 的总成本。

其他示例

示例:

使用 pgr_TSP

SELECT * FROM pgr_TSP(
  $$
  SELECT * FROM pgr_aStarCostMatrix(
    'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edges',
    (SELECT array_agg(id) FROM vertices WHERE id IN (5, 6, 10, 15)),
    directed=> false, heuristic => 2)
  $$);
NOTICE:  pgr_TSP no longer solving with simulated annaeling
HINT:  Ignoring annaeling parameters
 seq | node | cost | agg_cost
-----+------+------+----------
   1 |    5 |    0 |        0
   2 |    6 |    1 |        1
   3 |   10 |    1 |        2
   4 |   15 |    1 |        3
   5 |    5 |    3 |        6
(5 rows)

另请参阅

索引和表格