pgr_primDD
¶
pgr_primDD
— 使用 Prim 算法的集水区节点。
可用性
Version 3.7.0
将输出列标准化为
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
Added
pred
result columns.
版本3.0.0
官方 新函数
描述¶
Using Prim's algorithm, extracts the nodes that have aggregate costs less than or equal to a distance from a root vertex (or vertices) within the calculated minimum spanning tree.
主要特点是:
它的实现仅在 无向 图上。
仅在具有正成本的边进行处理。
当图连通时
由此产生的边组成一棵树
当图不连通时
为每个连通分量找到最小生成树。
由此产生的边构成了一片森林。
Prim运行时间: \(O(E * log V)\)
提取成本小于或等于距离值的所有节点。
提取的边将符合相应的生成树。
在以下情况下,边 \((u, v)\) 将不包括在内:
从 root 到 \(u\) 的距离>限制距离。
从 root 到 \(v\) 的距离>限制距离。
图上不会创建新的节点,因此当 位于限制内和不在限制内时,不包含边。
从根顶点返回的树节点遵循深度优先搜索顺序。
深度优先搜索运行时间: \(O(E + V)\)
签名¶
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
单顶点¶
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
- 示例:
以顶点 \(6\) 为起点的,总成本小于或等于 \(distance \leq 3.5\) 的最小生成树
SELECT * FROM pgr_primDD(
'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id',
6, 3.5);
seq | depth | start_vid | pred | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+------+----------
1 | 0 | 6 | 6 | 6 | -1 | 0 | 0
2 | 1 | 6 | 6 | 5 | 1 | 1 | 1
3 | 1 | 6 | 6 | 10 | 2 | 1 | 1
4 | 2 | 6 | 10 | 15 | 3 | 1 | 2
5 | 2 | 6 | 10 | 11 | 5 | 1 | 2
6 | 3 | 6 | 11 | 16 | 9 | 1 | 3
7 | 3 | 6 | 11 | 12 | 11 | 1 | 3
8 | 1 | 6 | 6 | 7 | 4 | 1 | 1
9 | 2 | 6 | 7 | 3 | 7 | 1 | 2
10 | 3 | 6 | 3 | 1 | 6 | 1 | 3
11 | 2 | 6 | 7 | 8 | 10 | 1 | 2
12 | 3 | 6 | 8 | 9 | 14 | 1 | 3
(12 rows)
多个顶点¶
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
- 示例:
以顶点 \(\{9, 6\}\) 为起点, \(distance \leq 3.5\) 的最小生成树
SELECT * FROM pgr_primDD(
'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id',
ARRAY[9, 6], 3.5);
seq | depth | start_vid | pred | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+------+----------
1 | 0 | 6 | 6 | 6 | -1 | 0 | 0
2 | 1 | 6 | 6 | 5 | 1 | 1 | 1
3 | 1 | 6 | 6 | 10 | 2 | 1 | 1
4 | 2 | 6 | 10 | 15 | 3 | 1 | 2
5 | 2 | 6 | 10 | 11 | 5 | 1 | 2
6 | 3 | 6 | 11 | 16 | 9 | 1 | 3
7 | 3 | 6 | 11 | 12 | 11 | 1 | 3
8 | 1 | 6 | 6 | 7 | 4 | 1 | 1
9 | 2 | 6 | 7 | 3 | 7 | 1 | 2
10 | 3 | 6 | 3 | 1 | 6 | 1 | 3
11 | 2 | 6 | 7 | 8 | 10 | 1 | 2
12 | 3 | 6 | 8 | 9 | 14 | 1 | 3
13 | 0 | 9 | 9 | 9 | -1 | 0 | 0
14 | 1 | 9 | 9 | 8 | 14 | 1 | 1
15 | 2 | 9 | 8 | 7 | 10 | 1 | 2
16 | 3 | 9 | 7 | 6 | 4 | 1 | 3
17 | 3 | 9 | 7 | 3 | 7 | 1 | 3
(17 rows)
参数¶
参数 |
类型 |
描述 |
---|---|---|
|
Edges SQL如下所述。 |
|
Root vid |
|
树的根顶点的标识符。 |
Root vids |
|
根顶点的标识符数组。
|
distance |
|
结果中包含节点的上限。 |
其中:
- ANY-NUMERIC:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
内部查询¶
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
结果列¶
Returns set of (seq, depth, start_vid, pred, node, edge, cost, agg_cost)
参数 |
类型 |
描述 |
---|---|---|
|
|
从 \(1\) 开始的顺序值。 |
|
|
|
|
|
根顶点的标识符。 |
|
|
|
|
|
使用 |
|
|
从
|
|
|
遍历 |
|
|
从 |
另请参阅¶
索引和表格