pgr_kruskalDD
¶
pgr_kruskalDD
— 使用 Kruskal 算法的汇流节点。
可用性
- Version 3.7.0:
将输出列标准化为
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
Added
pred
result columns.
- 版本3.0.0:
官方 新函数
描述¶
使用 Kruskal 算法,在计算的最小生成树中提取总成本小于或等于距 根 顶点(或多个顶点) 距离 的节点。
主要特点是:
它的实现仅在 无向 图上。
仅在具有正成本的边进行处理。
当图连通时
由此产生的边组成一棵树
当图不连通时
为每个连通分量找到最小生成树。
由此产生的边构成了一片森林。
树或森林中所有边的总权重最小化。
克鲁斯卡尔的运行时间: \(O(E * log E)\)
提取成本小于或等于距离值的所有节点。
提取的边将符合相应的生成树。
在以下情况下,边 \((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_kruskalDD(
'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 | 3 | 6 | 15 | 16 | 16 | 1 | 3
(5 rows)
多个顶点¶
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
- 示例:
以顶点 \(\{9, 6\}\) 为起点, \(distance \leq 3.5\) 的最小生成树
SELECT * FROM pgr_kruskalDD(
'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 | 3 | 6 | 15 | 16 | 16 | 1 | 3
6 | 0 | 9 | 9 | 9 | -1 | 0 | 0
7 | 1 | 9 | 9 | 8 | 14 | 1 | 1
8 | 2 | 9 | 8 | 7 | 10 | 1 | 2
9 | 3 | 9 | 7 | 3 | 7 | 1 | 3
10 | 2 | 9 | 8 | 12 | 12 | 1 | 2
11 | 3 | 9 | 12 | 11 | 11 | 1 | 3
12 | 3 | 9 | 12 | 17 | 13 | 1 | 3
(12 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\) 开始的顺序值。 |
|
|
|
|
|
根顶点的标识符。 |
|
|
|
|
|
使用 |
|
|
从
|
|
|
遍历 |
|
|
从 |
另请参阅¶
索引和表格