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¶
Hawick Circuit algorithm, is published in 2008 by Ken Hawick and Health A. James. This algorithm solves the problem of detecting and enumerating circuits in graphs. It is capable of circuit enumeration in graphs with directed-arcs, multiple-arcs and self-arcs with a memory efficient and high-performance im-plementation. It is an extension of Johnson’s Algorithm of finding all the elementary circuits of a directed graph.
There are 2 variations defined in the Boost Graph Library. Here, we have implemented only 2nd as it serves the most suitable and practical usecase. In this variation we get the circuits after filtering out the circuits caused by parallel edges. Parallel edge circuits have more use cases when you want to count the no. of circuits.Maybe in future, we will also implemenent this variation.
Las características principales son:
La implementación del algoritmo sirve solo para grafos dirigidos
It is a variation of Johnson’s algorithm for circuit enumeration.
The algorithm outputs the distinct circuits present in the graph.
Time Complexity: \(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