pgr_breadthFirstSearch
— Devuelve el recorrido en orden de acuerdo al algoritmo de Búsqueda de Anchura.
Advertencia
Posible bloqueo del servidor
Advertencia
Funciones experimentales
Disponibilidad
Proporciona el orden transversal de Primera Búsqueda de Amplitud desde un vértice raíz hasta una profundidad particular.
Las características principales son:
pgr_breadthFirstSearch(Edges SQL, Root vid [, max_depth] [, directed])
pgr_breadthFirstSearch(Edges SQL, Root vids [, max_depth] [, directed])
RETURNS SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
pgr_breadthFirstSearch(Edges SQL, Root vid [, max_depth] [, directed])
RETURNS SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
Ejemplo: | La Primera Búsqueda de Amplitud transversal con vértice raíz \(2\) |
---|
SELECT * FROM pgr_breadthFirstSearch(
'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 | 5 | 4 | 1 | 1
4 | 2 | 2 | 8 | 7 | 1 | 2
5 | 2 | 2 | 6 | 8 | 1 | 2
6 | 2 | 2 | 10 | 10 | 1 | 2
7 | 3 | 2 | 7 | 6 | 1 | 3
8 | 3 | 2 | 9 | 9 | 1 | 3
9 | 3 | 2 | 11 | 11 | 1 | 3
10 | 3 | 2 | 13 | 14 | 1 | 3
11 | 4 | 2 | 12 | 15 | 1 | 4
12 | 4 | 2 | 4 | 16 | 1 | 4
13 | 5 | 2 | 3 | 3 | 1 | 5
(13 rows)
pgr_breadthFirstSearch(Edges SQL, Root vids [, max_depth] [, directed])
RETURNS SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
Ejemplo: | La Primera Búsqueda de Amplitud tranversal comienza en vértices \(\{11, 12\}\) con profundidad \(depth <= 2\) |
---|
SELECT * FROM pgr_breadthFirstSearch(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
ARRAY[11,12], max_depth := 2
);
seq | depth | start_vid | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+----------
1 | 0 | 11 | 11 | -1 | 0 | 0
2 | 1 | 11 | 12 | 13 | 1 | 1
3 | 2 | 11 | 9 | 15 | 1 | 2
4 | 0 | 12 | 12 | -1 | 0 | 0
5 | 1 | 12 | 9 | 15 | 1 | 1
6 | 2 | 12 | 6 | 9 | 1 | 2
7 | 2 | 12 | 4 | 16 | 1 | 2
(7 rows)
Parámetro | Tipo | Descripción |
---|---|---|
Edges SQL | TEXT |
Consulta SQL descrita en Inner query. |
Root vid | BIGINT |
Identificador del vértice raíz del árbol.
|
Root vids | ARRAY[ANY-INTEGER] |
Arreglo de identificadores de los vértices raíz.
|
Parámetro | Tipo | Valores predeterminados | Descripción |
---|---|---|---|
max_depth | BIGINT |
\(9223372036854775807\) | Límite superior para la profundidad del nodo en el árbol
|
dirigido | BOOLEAN |
true |
|
Columna | Tipo | Valores predeterminados | Descripción |
---|---|---|---|
id | ANY-INTEGER |
Identificador de la arista. | |
origen | ANY-INTEGER |
Identificador del primer punto final en el vértice de la arista. | |
objetivo | ANY-INTEGER |
Identificador del segundo punto final en el vértice de la arista. | |
cost | ANY-NUMERICAL |
Peso de la arista (source, target)
|
|
reverse_cost | ANY-NUMERICAL |
-1 | Peso de la arista (target, source),
|
Donde:
ANY-INTEGER: | SMALLINT, INTEGER, BIGINT |
---|---|
ANY-NUMERICAL: | SMALLINT, INTEGER, BIGINT, REAL, FLOAT |
devuelve el conjunto SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
Columna | Tipo | Descripción |
---|---|---|
seq | BIGINT |
Valor secuencial a partir de \(1\). |
profundidad | BIGINT |
Profundidad del
|
start_vid | BIGINT |
Identificador del vértice raíz.
|
node | BIGINT |
Identificador del node alcanzado usando edge . |
edge | BIGINT |
Identificador del “”edge”” utilizado para llegar a “”node””.
|
cost | FLOAT |
Costo para atravesar edge . |
agg_cost | FLOAT |
Costo agregado de start_vid a node . |
Grafo no dirigido
Ejemplo: | La Primera Búsqueda de Amplitud transversal desde vértices \(\{11, 12\}\) con profundidad \(depth <= 2\) considerando que el grafo no es dirigido. |
---|
SELECT * FROM pgr_breadthFirstSearch(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
ARRAY[11,12], max_depth := 2, directed := false
);
seq | depth | start_vid | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+----------
1 | 0 | 11 | 11 | -1 | 0 | 0
2 | 1 | 11 | 6 | 11 | 1 | 1
3 | 1 | 11 | 10 | 12 | 1 | 1
4 | 1 | 11 | 12 | 13 | 1 | 1
5 | 2 | 11 | 3 | 5 | 1 | 2
6 | 2 | 11 | 5 | 8 | 1 | 2
7 | 2 | 11 | 9 | 9 | 1 | 2
8 | 2 | 11 | 13 | 14 | 1 | 2
9 | 0 | 12 | 12 | -1 | 0 | 0
10 | 1 | 12 | 11 | 13 | 1 | 1
11 | 1 | 12 | 9 | 15 | 1 | 1
12 | 2 | 12 | 6 | 11 | 1 | 2
13 | 2 | 12 | 10 | 12 | 1 | 2
14 | 2 | 12 | 4 | 16 | 1 | 2
(14 rows)
Vértice Fuera del Grafo
Ejemplo: | La salida de la función, cuando un vértice no está presente en el gráfo, se pasa como parámetro. |
---|
SELECT * FROM pgr_breadthFirstSearch(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
-10
);
seq | depth | start_vid | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+----------
(0 rows)
Índices y tablas