pgr_hawickCircuits - Experimental
¶
pgr_hawickCircuits
— Enumeración de los circuitos usando el algoritmo de circutos de Hawick.
Advertencia
Posible bloqueo del servidor
Estas funciones pueden crear una caída del servidor
Advertencia
Funciones experimentales
No son oficialmente de la versión actual.
Es probable que oficialmente no formen parte de la siguiente versión:
Las funciones no podrían hacer uso de ANY-INTEGER ni ANY-NUMERICAL
El nombre puede cambiar.
La firma puede cambiar.
La funcionalidad puede cambiar.
Las pruebas de pgTap pueden faltar.
Posiblemente necesite codificación c/c++.
Puede carecer documentación.
Hay documentación que, en dado caso, podría ser necesario reescribir.
Puede ser necesario que los ejemplos de documentación se generen automáticamente.
Puede ser necesaria retroalimentación por parte de la comunidad.
Puede depender de una función propuesta de pgRouting
Podría depender de una función obsoleta de pgRouting
Disponibilidad
Versión 3.4.0
Nueva firma experimental:
pgr_hawickCircuits
Descripción¶
El algoritmo Hawick Circuit fue publicado en 2008 por Ken Hawick y Health A. James. Este algoritmo resuelve el problema de detectar y enumerar circuitos en grafos. Es capaz de enumerar circuitos en grafos con arcos dirigidos, arcos múltiples y autoarcos con una implementación eficiente en memoria y de alto rendimiento. Es una extensión del Algoritmo de Johnson para encontrar todos los circuitos elementales de un grafo dirigido.
Hay 2 variaciones definidas en la librería Boost Graph. Aquí hemos implementado sólo la segunda, ya que es la más adecuada y práctica. En esta variación obtenemos los circuitos después de filtrar los circuitos causados por aristas paralelas. Los circuitos de aristas paralelas tienen más casos de uso cuando se quiere contar el número de circuitos.
Las características principales son:
La implementación del algoritmo sirve solo para grafos dirigidos
Es una variación del algoritmo de Johnson para la enumeración de circuitos.
El algoritmo da como resultado los distintos circuitos presentes en el grafo.
Complejidad temporal: \(O((V + E) (c + 1))\)
donde \(|E|\) es la cantidad de arístas en el grafo,
\(|V|\) es la cantidad de vertices del grafo.
\(|c|\) es la cantidad de vertices del grafo.
Firmas¶
Resumen
(seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)
- Ejemplo:
Circuitos dentro de los Datos Muestra de pgRouting
SELECT * FROM pgr_hawickCircuits(
'SELECT id, source, target, cost, reverse_cost FROM edges'
);
seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
-----+---------+----------+-----------+---------+------+------+------+----------
1 | 1 | 0 | 1 | 1 | 1 | 6 | 1 | 0
2 | 1 | 1 | 1 | 1 | 3 | 6 | 1 | 1
3 | 1 | 2 | 1 | 1 | 1 | -1 | 0 | 2
4 | 2 | 0 | 3 | 3 | 3 | 7 | 1 | 0
5 | 2 | 1 | 3 | 3 | 7 | 7 | 1 | 1
6 | 2 | 2 | 3 | 3 | 3 | -1 | 0 | 2
7 | 3 | 0 | 7 | 7 | 7 | 4 | 1 | 0
8 | 3 | 1 | 7 | 7 | 6 | 4 | 1 | 1
9 | 3 | 2 | 7 | 7 | 7 | -1 | 0 | 2
10 | 4 | 0 | 7 | 7 | 7 | 8 | 1 | 0
11 | 4 | 1 | 7 | 7 | 11 | 8 | 1 | 1
12 | 4 | 2 | 7 | 7 | 7 | -1 | 0 | 2
13 | 5 | 0 | 7 | 7 | 7 | 8 | 1 | 0
14 | 5 | 1 | 7 | 7 | 11 | 11 | 1 | 1
15 | 5 | 2 | 7 | 7 | 12 | 13 | 1 | 2
16 | 5 | 3 | 7 | 7 | 17 | 15 | 1 | 3
17 | 5 | 4 | 7 | 7 | 16 | 16 | 1 | 4
18 | 5 | 5 | 7 | 7 | 15 | 3 | 1 | 5
19 | 5 | 6 | 7 | 7 | 10 | 2 | 1 | 6
20 | 5 | 7 | 7 | 7 | 6 | 4 | 1 | 7
21 | 5 | 8 | 7 | 7 | 7 | -1 | 0 | 8
22 | 6 | 0 | 7 | 7 | 7 | 8 | 1 | 0
23 | 6 | 1 | 7 | 7 | 11 | 9 | 1 | 1
24 | 6 | 2 | 7 | 7 | 16 | 16 | 1 | 2
25 | 6 | 3 | 7 | 7 | 15 | 3 | 1 | 3
26 | 6 | 4 | 7 | 7 | 10 | 2 | 1 | 4
27 | 6 | 5 | 7 | 7 | 6 | 4 | 1 | 5
28 | 6 | 6 | 7 | 7 | 7 | -1 | 0 | 6
29 | 7 | 0 | 7 | 7 | 7 | 10 | 1 | 0
30 | 7 | 1 | 7 | 7 | 8 | 10 | 1 | 1
31 | 7 | 2 | 7 | 7 | 7 | -1 | 0 | 2
32 | 8 | 0 | 7 | 7 | 7 | 10 | 1 | 0
33 | 8 | 1 | 7 | 7 | 8 | 12 | 1 | 1
34 | 8 | 2 | 7 | 7 | 12 | 13 | 1 | 2
35 | 8 | 3 | 7 | 7 | 17 | 15 | 1 | 3
36 | 8 | 4 | 7 | 7 | 16 | 9 | 1 | 4
37 | 8 | 5 | 7 | 7 | 11 | 8 | 1 | 5
38 | 8 | 6 | 7 | 7 | 7 | -1 | 0 | 6
39 | 9 | 0 | 7 | 7 | 7 | 10 | 1 | 0
40 | 9 | 1 | 7 | 7 | 8 | 12 | 1 | 1
41 | 9 | 2 | 7 | 7 | 12 | 13 | 1 | 2
42 | 9 | 3 | 7 | 7 | 17 | 15 | 1 | 3
43 | 9 | 4 | 7 | 7 | 16 | 16 | 1 | 4
44 | 9 | 5 | 7 | 7 | 15 | 3 | 1 | 5
45 | 9 | 6 | 7 | 7 | 10 | 2 | 1 | 6
46 | 9 | 7 | 7 | 7 | 6 | 4 | 1 | 7
47 | 9 | 8 | 7 | 7 | 7 | -1 | 0 | 8
48 | 10 | 0 | 7 | 7 | 7 | 10 | 1 | 0
49 | 10 | 1 | 7 | 7 | 8 | 12 | 1 | 1
50 | 10 | 2 | 7 | 7 | 12 | 13 | 1 | 2
51 | 10 | 3 | 7 | 7 | 17 | 15 | 1 | 3
52 | 10 | 4 | 7 | 7 | 16 | 16 | 1 | 4
53 | 10 | 5 | 7 | 7 | 15 | 3 | 1 | 5
54 | 10 | 6 | 7 | 7 | 10 | 5 | 1 | 6
55 | 10 | 7 | 7 | 7 | 11 | 8 | 1 | 7
56 | 10 | 8 | 7 | 7 | 7 | -1 | 0 | 8
57 | 11 | 0 | 6 | 6 | 6 | 1 | 1 | 0
58 | 11 | 1 | 6 | 6 | 5 | 1 | 1 | 1
59 | 11 | 2 | 6 | 6 | 6 | -1 | 0 | 2
60 | 12 | 0 | 10 | 10 | 10 | 5 | 1 | 0
61 | 12 | 1 | 10 | 10 | 11 | 11 | 1 | 1
62 | 12 | 2 | 10 | 10 | 12 | 13 | 1 | 2
63 | 12 | 3 | 10 | 10 | 17 | 15 | 1 | 3
64 | 12 | 4 | 10 | 10 | 16 | 16 | 1 | 4
65 | 12 | 5 | 10 | 10 | 15 | 3 | 1 | 5
66 | 12 | 6 | 10 | 10 | 10 | -1 | 0 | 6
67 | 13 | 0 | 10 | 10 | 10 | 5 | 1 | 0
68 | 13 | 1 | 10 | 10 | 11 | 9 | 1 | 1
69 | 13 | 2 | 10 | 10 | 16 | 16 | 1 | 2
70 | 13 | 3 | 10 | 10 | 15 | 3 | 1 | 3
71 | 13 | 4 | 10 | 10 | 10 | -1 | 0 | 4
72 | 14 | 0 | 11 | 11 | 11 | 11 | 1 | 0
73 | 14 | 1 | 11 | 11 | 12 | 13 | 1 | 1
74 | 14 | 2 | 11 | 11 | 17 | 15 | 1 | 2
75 | 14 | 3 | 11 | 11 | 16 | 9 | 1 | 3
76 | 14 | 4 | 11 | 11 | 11 | -1 | 0 | 4
77 | 15 | 0 | 11 | 11 | 11 | 9 | 1 | 0
78 | 15 | 1 | 11 | 11 | 16 | 9 | 1 | 1
79 | 15 | 2 | 11 | 11 | 11 | -1 | 0 | 2
80 | 16 | 0 | 8 | 8 | 8 | 14 | 1 | 0
81 | 16 | 1 | 8 | 8 | 9 | 14 | 1 | 1
82 | 16 | 2 | 8 | 8 | 8 | -1 | 0 | 2
83 | 17 | 0 | 2 | 2 | 2 | 17 | 1 | 0
84 | 17 | 1 | 2 | 2 | 4 | 17 | 1 | 1
85 | 17 | 2 | 2 | 2 | 2 | -1 | 0 | 2
86 | 18 | 0 | 13 | 13 | 13 | 18 | 1 | 0
87 | 18 | 1 | 13 | 13 | 14 | 18 | 1 | 1
88 | 18 | 2 | 13 | 13 | 13 | -1 | 0 | 2
89 | 19 | 0 | 17 | 17 | 17 | 15 | 1 | 0
90 | 19 | 1 | 17 | 17 | 16 | 15 | 1 | 1
91 | 19 | 2 | 17 | 17 | 17 | -1 | 0 | 2
92 | 20 | 0 | 16 | 16 | 16 | 16 | 1 | 0
93 | 20 | 1 | 16 | 16 | 15 | 16 | 1 | 1
94 | 20 | 2 | 16 | 16 | 16 | -1 | 0 | 2
(94 rows)
Parámetros¶
Parámetro |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
SQL de aristas descritas más adelante. |
Parámetros opcionales¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
|
|
Consultas Internas¶
SQL aristas¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
ENTEROS |
Identificador del primer vértice de la arista. |
|
|
ENTEROS |
Identificador del segundo vértice de la arista. |
|
|
FLOTANTES |
Peso de la arista ( |
|
|
FLOTANTES |
-1 |
Peso de la arista (
|
Donde:
- ENTEROS:
SMALLINT
,INTEGER
,BIGINT
- FLOTANTES:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
Columnas de resultados¶
Columna |
Tipo |
Descripción |
---|---|---|
|
|
Valor secuencial a partir de |
|
|
Identificador del circuito comenzando con |
|
|
Posición relativa en la camino. Tiene el valor |
|
|
Identificador del vértice inicial del circuito. |
|
|
Identificador del vértice final del circuito. |
|
|
Identificador del nodo en la ruta de un vértice al siguiente vértice. |
|
|
Identificador del borde utilizado para ir del |
|
|
Costo para atravesar desde |
|
|
Coste agregado de |
Ver también¶
Índices y tablas