pgr_kruskalDFS
¶
pgr_kruskalDFS
— 具有深度优先搜索排序的最小生成树 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)\)
从根顶点返回的树节点按深度优先搜索顺序
深度优先搜索运行时间: \(O(E + V)\)
签名¶
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
单顶点¶
max_depth
])(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
- 示例:
以根顶点为 \(6\) 的最小生成树
SELECT * FROM pgr_kruskalDFS(
'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id',
6);
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 | 4 | 6 | 16 | 17 | 15 | 1 | 4
7 | 5 | 6 | 17 | 12 | 13 | 1 | 5
8 | 6 | 6 | 12 | 11 | 11 | 1 | 6
9 | 6 | 6 | 12 | 8 | 12 | 1 | 6
10 | 7 | 6 | 8 | 7 | 10 | 1 | 7
11 | 8 | 6 | 7 | 3 | 7 | 1 | 8
12 | 9 | 6 | 3 | 1 | 6 | 1 | 9
13 | 7 | 6 | 8 | 9 | 14 | 1 | 7
(13 rows)
多个顶点¶
max_depth
])(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
- 示例:
以顶点 \(\{9, 6\}\) 为起点, \(depth \leq 3\) 的最小生成树
SELECT * FROM pgr_kruskalDFS(
'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id',
ARRAY[9, 6], max_depth => 3);
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
DFS 可选参数¶
参数 |
类型 |
默认 |
描述 |
---|---|---|---|
|
|
\(9223372036854775807\) |
树深度的上限。
|
内部查询¶
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\) 开始的顺序值。 |
|
|
|
|
|
根顶点的标识符。 |
|
|
|
|
|
使用 |
|
|
从
|
|
|
遍历 |
|
|
从 |
另请参阅¶
索引和表格