Unsupported versions:2.6 2.5 2.4 2.3 2.2
Dijkstra - 函数族¶
pgr_dijkstra` - Dijkstra 最短路径算法。
pgr_dijkstraCost` - 获取最短路径的总成本。
pgr_dijkstraCostMatrix - 使用 pgr_dijkstra 创建成本矩阵。
驾驶距离 - 使用 pgr_dijkstra 计算流域信息。
pgr_KSP - 使用 Yen 算法和 pgr_dijkstra 来获得 K 条最短路径。
建议
Warning
下一版本的拟议功能。
它们并未正式出现在当前版本中。
它们可能会正式成为下一个版本的一部分:
这些函数使用 ANY-INTEGER 和 ANY-NUMERICAL
名字可能不会改变。(但仍然有可能改变)
签名可能不会改变。(但仍然有可能改变)
功能可能不会改变。(但仍然有可能改变)
pgTap 测试已经完成。 但可能需要更多。
文档可能需要完善。
pgr_dijkstraVia -拟议 - 获取一系列顶点的路径。
pgr_dijkstraNear - 拟议 - 获取到最近顶点的路线。
pgr_dijkstraNearCost - 拟议 - 获取最近顶点的成本。
介绍¶
Dijkstra算法,由荷兰计算机科学家Edsger Dijkstra于1956年提出。它是一种图搜索算法,解决具有非负边路径成本的图的最短路径问题,产生从起始顶点到结束顶点的最短路径。 该实现可以与有向图和无向图一起使用。
主要特点是:
仅在具有正成本的边进行处理。
成本列上的负值被解释为边不存在。
当存在路径时返回值。
当没有路径时:
当起始顶点和结束顶点相同时。
未包含值
的 aggregate cost 为
当起始顶点和结束顶点不同且不存在路径时:
未包含值
的 aggregate cost 是
出于优化目的,起始顶点或结束顶点中的任何重复值都将被忽略。
运行时间:
Dijkstra 系列函数基于 Dijkstra 算法。
参数¶
列 |
类型 |
描述 |
---|---|---|
|
Edges SQL 如下所述 |
|
|
Combinations SQL 如下所述 |
|
start vid |
|
路径起始顶点的标识符。 |
start vids |
|
起始顶点的标识符数组。 |
end vid |
|
路径结束顶点的标识符。 |
end vids |
|
结束顶点的标识符数组。 |
可选参数¶
列 |
类型 |
默认 |
描述 |
---|---|---|---|
|
|
|
|
内部查询¶
Edges SQL¶
列 |
类型 |
默认 |
描述 |
---|---|---|---|
|
ANY-INTEGER |
边的标识符。 |
|
|
ANY-INTEGER |
边的第一个端点顶点的标识符。 |
|
|
ANY-INTEGER |
边的第二个端点顶点的标识符。 |
|
|
ANY-NUMERICAL |
边( |
|
|
ANY-NUMERICAL |
-1 |
边(
|
其中:
- ANY-INTEGER:
SMALLINT
,INTEGER
,BIGINT
- ANY-NUMERICAL:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
分量 SQL¶
参数 |
类型 |
描述 |
---|---|---|
|
ANY-INTEGER |
出发顶点的标识符。 |
|
ANY-INTEGER |
到达顶点的标识符。 |
其中:
- ANY-INTEGER:
SMALLINT
,INTEGER
,BIGINT
高级文档¶
问题定义(高级文档)¶
给出以下查询:
pgr_dijkstra(
其中
和
, ,
图定义如下:
有向图
加权有向图,
顶点集
边集
无向图
加权无向图,
顶点集
边集
问题
给定:
a starting vertex an ending vertex
然后:
- 其中:
换句话说:如果
表示 或 的路径中的相对位置。 是用于转到下一个节点的边的成本。 是从 到节点的成本。
如果没有路径,则结果集为空。
另请参阅¶
索引和表格