pgr_kruskalBFS
¶
pgr_kruskalBFS
— Kruskal’s algorithm for Minimum Spanning Tree with breadth
First Search ordering.

Boost Graph Inside¶
Disponibilidad
Versión 3.0.0
Nueva función Oficial
Descripción¶
Visits and extracts the nodes information in Breath First Search ordering of the Minimum Spanning Tree created using Kruskal’s algorithm.
Las características principales son:
Su implementación solo para grafo no direccionado.
El proceso se realiza sólo en las aristas con costos positivos.
Cuando el grafo es conectado
Las aristas resultantes componen un árbol
Cuando el grafo no está conectado,
Encuentra un árbol de expansión mínimo para cada componente conectado.
Las aristas resultantes conforman un bosque.
Se minimiza el peso total de todos los bordes del árbol o bosque.
Tiempo de ejecución de Kruskal: \(O(E * log E)\)
Los nodos de árbol devueltos desde un vértice raíz están en orden de la Primera Búsqueda de Anchura
Tiempo de ejecución de la Primera Búsqueda de Anchura: \(O(E + V)\)
Firmas¶
pgr_kruskalBFS(Edges SQL, Root vid [, max_depth]) pgr_kruskalBFS(Edges SQL, Root vids [, max_depth]) RETURNS SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
Un solo vértice¶
pgr_kruskalBFS(Edges SQL, Root vid [, max_depth]) RETURNS SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
- Ejemplo
El Árbol de Expansión Mínimo que tiene como vértice raíz \(2\)
SELECT * FROM pgr_kruskalBFS(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
2
);
seq | depth | start_vid | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+----------
1 | 0 | 2 | 2 | -1 | 0 | 0
2 | 1 | 2 | 1 | 1 | 1 | 1
3 | 1 | 2 | 3 | 2 | 1 | 1
4 | 2 | 2 | 4 | 3 | 1 | 2
5 | 3 | 2 | 9 | 16 | 1 | 3
6 | 4 | 2 | 12 | 15 | 1 | 4
7 | 5 | 2 | 11 | 13 | 1 | 5
8 | 6 | 2 | 6 | 11 | 1 | 6
9 | 6 | 2 | 10 | 12 | 1 | 6
10 | 7 | 2 | 5 | 10 | 1 | 7
11 | 7 | 2 | 13 | 14 | 1 | 7
12 | 8 | 2 | 8 | 7 | 1 | 8
13 | 9 | 2 | 7 | 6 | 1 | 9
(13 rows)
Múltiples vértices¶
pgr_kruskalBFS(Edges SQL, Root vids [, max_depth]) RETURNS SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
- Ejemplo
El Árbol de Expansión Mínimo que comienza en los vértices \(\{13, 2\}\) con \(depth <= 3\)
SELECT * FROM pgr_kruskalBFS(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
ARRAY[13,2], max_depth := 3
);
seq | depth | start_vid | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+----------
1 | 0 | 2 | 2 | -1 | 0 | 0
2 | 1 | 2 | 1 | 1 | 1 | 1
3 | 1 | 2 | 3 | 2 | 1 | 1
4 | 2 | 2 | 4 | 3 | 1 | 2
5 | 3 | 2 | 9 | 16 | 1 | 3
6 | 0 | 13 | 13 | -1 | 0 | 0
7 | 1 | 13 | 10 | 14 | 1 | 1
8 | 2 | 13 | 5 | 10 | 1 | 2
9 | 2 | 13 | 11 | 12 | 1 | 2
10 | 3 | 13 | 8 | 7 | 1 | 3
11 | 3 | 13 | 6 | 11 | 1 | 3
12 | 3 | 13 | 12 | 13 | 1 | 3
(12 rows)
Parámetros¶
Parámetro |
Tipo |
Descripción |
---|---|---|
|
Edges SQL as described below. |
|
Raíz |
|
Identificador del vértice raíz del árbol.
|
Raíces |
|
Arreglo de identificadores de los vértices raíz.
|
Donde:
- ANY-INTEGER
SMALLINT, INTEGER, BIGINT
- ANY-NUMERIC
SMALLINT, INTEGER, BIGINT, REAL, FLOAT, NUMERIC
BFS optional parameters¶
Parámetro |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
\(9223372036854775807\) |
Upper limit of the depth of the tree.
|
Inner queries¶
Edges SQL¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
ANY-INTEGER |
Identificador de la arista. |
|
|
ANY-INTEGER |
Identificador del primer vértice extremo de la arista. |
|
|
ANY-INTEGER |
Identificador del segundo vértice extremo de la arista. |
|
|
ANY-NUMERICAL |
Weight of the edge ( |
|
|
ANY-NUMERICAL |
-1 |
Weight of the edge (
|
Donde:
- ANY-INTEGER
SMALLINT
,INTEGER
,BIGINT
- ANY-NUMERICAL
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
Columnas de Resultados¶
Regresa SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
Parámetro |
Tipo |
Descripción |
---|---|---|
|
|
Valor secuencial a partir de \(1\). |
|
|
Profundidad del
|
|
|
Identificador del vértice raíz. |
|
|
Identificador del |
|
|
Identificador del
|
|
|
Costo por recorrer |
|
|
Costo agregado desde |
Donde:
- ANY-INTEGER
SMALLINT, INTEGER, BIGINT
- ANY-NUMERIC
SMALLINT, INTEGER, BIGINT, REAL, FLOAT, NUMERIC
Ver también¶
Índices y tablas