pgr_topologicalSort
— Devuelve el orden lineal de los vértices para los grafos acíclicos dirigidos ponderados (DAG). En particular, el algoritmo de ordenación topológica implementado por Boost.Graph.
Advertencia
Posible bloqueo del servidor
Advertencia
Funciones experimentales
Disponibilidad
Soporte
El algoritmo de ordenación topológica crea un orden lineal de los vértices de tal manera que si la arista (u,v) aparece en el grafo, entonces v viene antes de u en el orden.
Esta implementación solo se puede utilizar con un grafo dirigido sin ciclos i.e., es decir, un grafo acíclico dirigido.
Resumen
pgr_topologicalSort(edges_sql)
RETURNS SET OF (seq, sorted_v)
OR EMPTY SET
Ejemplo: | Para un grafo dirigido |
---|
SELECT * FROM pgr_topologicalsort(
'SELECT id,source,target,cost,reverse_cost FROM edge_table1'
);
seq | sorted_v
-----+----------
1 | 0
2 | 1
3 | 3
4 | 2
(4 rows)
Parámetro | Tipo | Valores predeterminados | Descripción |
---|---|---|---|
edges_sql | TEXT |
Consulta SQL como se describió anteriormente. |
edges_sql: | Una consulta SQL, que debe regresar un conjunto de filas con las siguientes columnas: |
---|
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 conjunto de (seq, sorted_v)
Columna | Tipo | Descripción |
---|---|---|
seq | INT |
Valor secuencial a partir de 1. |
sorted_v | BIGINT |
Orden lineal de los vértices (ordenados en orden topológico) |
Índices y tablas