pgr_drivingDistance

pgr_drivingDistance - Devuelve la distancia de manejo desde un nodo de inicio.

_images/boost-inside.jpeg

Adentro: Boost Graph

Disponibilidad

Versión 3.6.0:

  • Estandarización de columnas de resultados a (seq, depth, start_vid, pred, node, edge, cost, agg_cost)

    • pgr_drivingDistance (Vértice único)

      • Agregado las columnas de resultados``depth`` y start_vid.

    • pgr_drivingDistance (Múltiples vértices)

      • Result column name change: from_v to start_vid.

      • Agregado las columnas de resultados``depth`` y pred.

Versión 2.1.0:

  • Cambio de firma pgr_drivingDistance(vértice único)

  • Nuevo Oficial pgr_drivingDistance(multiples vértices)

Versión 2.0.0:

  • Oficial:: pgr_drivingDistance(vértice único)

Descripción

Usando el algoritmo Dijkstra, se extraen todos los nodos que tienen costes menores o iguales al valor distance. Los bordes extraídos se ajustarán al árbol de expansión correspondiente.

Firmas

pgr_drivingDistance(SQL de aristas, Raíz, distancia, [directed])
pgr_drivingDistance(SQL de aristas, raices, distancia, [opciones])
opcionales: [directed, equicost]
Regresa el conjunto de (seq, depth, start_vid, pred, node, edge, cost, agg_cost)

Vértice Único

pgr_drivingDistance(SQL de aristas, Raíz, distancia, [directed])
Regresa el conjunto de (seq, depth, start_vid, pred, node, edge, cost, agg_cost)
Ejemplo:

Desde el vértice \(11\) por una distancia de \(3.0\)

SELECT * FROM pgr_drivingDistance(
  'SELECT id, source, target, cost, reverse_cost FROM edges',
  11, 3.0);
 seq | depth | start_vid | pred | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+------+----------
   1 |     0 |        11 |   11 |   11 |   -1 |    0 |        0
   2 |     1 |        11 |   11 |    7 |    8 |    1 |        1
   3 |     1 |        11 |   11 |   12 |   11 |    1 |        1
   4 |     1 |        11 |   11 |   16 |    9 |    1 |        1
   5 |     2 |        11 |    7 |    3 |    7 |    1 |        2
   6 |     2 |        11 |    7 |    6 |    4 |    1 |        2
   7 |     2 |        11 |    7 |    8 |   10 |    1 |        2
   8 |     2 |        11 |   16 |   15 |   16 |    1 |        2
   9 |     2 |        11 |   16 |   17 |   15 |    1 |        2
  10 |     3 |        11 |    3 |    1 |    6 |    1 |        3
  11 |     3 |        11 |    6 |    5 |    1 |    1 |        3
  12 |     3 |        11 |    8 |    9 |   14 |    1 |        3
  13 |     3 |        11 |   15 |   10 |    3 |    1 |        3
(13 rows)

Múltiples Vértices

pgr_drivingDistance(SQL de aristas, raices, distancia, [opciones])
opcionales: [directed, equicost]
Regresa el conjunto de (seq, depth, start_vid, pred, node, edge, cost, agg_cost)
Ejemplo:

Desde los vertices \(\{11, 16\}\) por una distancia de \(3.0\) con equi-cost en un grafo dirigido

SELECT * FROM pgr_drivingDistance(
  'SELECT id, source, target, cost, reverse_cost FROM edges',
  array[11, 16], 3.0, equicost => true);
 seq | depth | start_vid | pred | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+------+----------
   1 |     0 |        11 |   11 |   11 |   -1 |    0 |        0
   2 |     1 |        11 |   11 |    7 |    8 |    1 |        1
   3 |     1 |        11 |   11 |   12 |   11 |    1 |        1
   4 |     2 |        11 |    7 |    3 |    7 |    1 |        2
   5 |     2 |        11 |    7 |    6 |    4 |    1 |        2
   6 |     2 |        11 |    7 |    8 |   10 |    1 |        2
   7 |     3 |        11 |    3 |    1 |    6 |    1 |        3
   8 |     3 |        11 |    6 |    5 |    1 |    1 |        3
   9 |     3 |        11 |    8 |    9 |   14 |    1 |        3
  10 |     0 |        16 |   16 |   16 |   -1 |    0 |        0
  11 |     1 |        16 |   16 |   15 |   16 |    1 |        1
  12 |     1 |        16 |   16 |   17 |   15 |    1 |        1
  13 |     2 |        16 |   15 |   10 |    3 |    1 |        2
(13 rows)

Parámetros

Parámetro

Tipo

Descripción

SQL de aristas

TEXT

SQL de aristas como se describen abajo.

Raíz

BIGINT

Identificador del vértice raíz del árbol.

Raíces

ARREGLO[ENTEROS]

Arreglo de identificadores de los vértices raíz.

  • Valores \(0\) son ignorados

  • Con el propósito de optimización, valores duplicados son ignorados.

distancia

FLOAT

Límite superior para la inclusión del nodo en el resultado.

Donde:

ENTEROS:

SMALLINT, INTEGER, BIGINT

FLOTANTE:

SMALLINT, INTEGER, BIGINT, REAL, FLOAT

Parámetros opcionales

Columna

Tipo

x Defecto

Descripción

directed

BOOLEAN

true

  • Cuando true el gráfo se considera Dirigido

  • Cuando false el gráfo se considera No Dirigido.

Parámetros opcionales de distancia de manejo

Columna

Tipo

x Defecto

Descripción

equicost

BOOLEAN

true

  • Cuando true el nodo solo aparece en la lista más cercana a start_vid. Empates son rotos arbitrareamente.

  • Cuando false se asemeja a varias llamadas usando la firma de vértice único.

Consultas Internas

SQL aristas

Columna

Tipo

x Defecto

Descripción

id

ENTEROS

Identificador de la arista.

source

ENTEROS

Identificador del primer vértice de la arista.

target

ENTEROS

Identificador del segundo vértice de la arista.

cost

FLOTANTES

Peso de la arista (source, target)

reverse_cost

FLOTANTES

-1

Peso de la arista (target, source)

  • Cuando negativo: la arista (target, source) no existe, por lo tanto no es parte del grafo.

Donde:

ENTEROS:

SMALLINT, INTEGER, BIGINT

FLOTANTES:

SMALLINT, INTEGER, BIGINT, REAL, FLOAT

Columnas de resultados

Regresa el conjunto de (seq, depth, start_vid, pred, node, edge, cost, agg_cost)

Parámetro

Tipo

Descripción

seq

BIGINT

Valor secuencial a partir de \(1\).

depth

BIGINT

Profundidad del node.

  • \(0\) cuando node = start_vid.

  • \(depth-1\) es la profundidad de pred

start_vid

BIGINT

Identificador del vértice raíz.

pred

BIGINT

Presdecesor de node.

  • Cuando node = start_vid entonces tiene el valor node.

node

BIGINT

Identificador del node alcanzado usando edge.

edge

BIGINT

Identificador del edge utilizado para llegar desde pred hasta node.

  • \(-1\) cuando node = start_vid.

cost

FLOAT

Costo por recorrer edge.

agg_cost

FLOAT

Costo agregado desde start_vid hasta node.

Donde:

ENTEROS:

SMALLINT, INTEGER, BIGINT

FLOTANTE:

SMALLINT, INTEGER, BIGINT, REAL, FLOAT, NUMERIC

Ejemplos Adicionales

Ejemplo:

Desde vértices math:{11, 16} con una distancia de \(3.0\) en un grafo no dirigido

SELECT * FROM pgr_drivingDistance(
  'SELECT id, source, target, cost, reverse_cost FROM edges',
  array[11, 16], 3.0, directed => false);
 seq | depth | start_vid | pred | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+------+----------
   1 |     0 |        11 |   11 |   11 |   -1 |    0 |        0
   2 |     1 |        11 |   11 |    7 |    8 |    1 |        1
   3 |     1 |        11 |   11 |   10 |    5 |    1 |        1
   4 |     1 |        11 |   11 |   12 |   11 |    1 |        1
   5 |     1 |        11 |   11 |   16 |    9 |    1 |        1
   6 |     2 |        11 |    7 |    3 |    7 |    1 |        2
   7 |     2 |        11 |   10 |    6 |    2 |    1 |        2
   8 |     2 |        11 |    7 |    8 |   10 |    1 |        2
   9 |     2 |        11 |   10 |   15 |    3 |    1 |        2
  10 |     2 |        11 |   16 |   17 |   15 |    1 |        2
  11 |     3 |        11 |    3 |    1 |    6 |    1 |        3
  12 |     3 |        11 |    6 |    5 |    1 |    1 |        3
  13 |     3 |        11 |    8 |    9 |   14 |    1 |        3
  14 |     0 |        16 |   16 |   16 |   -1 |    0 |        0
  15 |     1 |        16 |   16 |   11 |    9 |    1 |        1
  16 |     1 |        16 |   16 |   15 |   16 |    1 |        1
  17 |     1 |        16 |   16 |   17 |   15 |    1 |        1
  18 |     2 |        16 |   11 |    7 |    8 |    1 |        2
  19 |     2 |        16 |   11 |   10 |    5 |    1 |        2
  20 |     2 |        16 |   17 |   12 |   13 |    1 |        2
  21 |     3 |        16 |    7 |    3 |    7 |    1 |        3
  22 |     3 |        16 |    7 |    6 |    4 |    1 |        3
  23 |     3 |        16 |    7 |    8 |   10 |    1 |        3
(23 rows)

Ver también

Índices y tablas