pgr_primDD
¶
pgr_primDD
— Catchament nodes using Prim’s algorithm.

Boost Graph Inside¶
Availability
Version 3.0.0
New Official function
Description¶
Using Prim’s algorithm, extracts the nodes that have aggregate costs less than or equal to a distance from a root vertex (or vertices) within the calculated minimum spanning tree.
The main Characteristics are:
It’s implementation is only on undirected graph.
Process is done only on edges with positive costs.
When the graph is connected
The resulting edges make up a tree
When the graph is not connected,
Finds a minimum spanning tree for each connected component.
The resulting edges make up a forest.
Prim’s running time: \(O(E * log V)\)
Extracts all the nodes that have costs less than or equal to the value distance.
The edges extracted will conform to the corresponding spanning tree. Edge
Edge \((u, v)\) will not be included when:
The distance from the root to \(u\) > limit distance.
The distance from the root to \(v\) > limit distance.
No new nodes are created on the graph, so when is within the limit and is not within the limit, the edge is not included.
Returned tree nodes from a root vertex are on Depth First Search order.
Depth First Search running time: \(O(E + V)\)
Signatures¶
Summary
pgr_primDD(Edges SQL, Root vid, distance) pgr_primDD(Edges SQL, Root vids, distance) RETURNS SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
Single vertex¶
pgr_primDD(Edges SQL, Root vid, distance) RETURNS SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
- Example
The Minimum Spanning Tree starting on vertex \(2\) with distance \(<= 3.5\).
SELECT * FROM pgr_primDD(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
2, 3.5
);
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 | 3 | 2 | 1 | 1
4 | 2 | 2 | 4 | 3 | 1 | 2
5 | 2 | 2 | 6 | 5 | 1 | 2
6 | 3 | 2 | 9 | 9 | 1 | 3
7 | 3 | 2 | 11 | 11 | 1 | 3
8 | 1 | 2 | 5 | 4 | 1 | 1
9 | 2 | 2 | 8 | 7 | 1 | 2
10 | 3 | 2 | 7 | 6 | 1 | 3
11 | 2 | 2 | 10 | 10 | 1 | 2
12 | 3 | 2 | 13 | 14 | 1 | 3
(12 rows)
Multiple vertices¶
pgr_primDD(Edges SQL, Root vids, distance) RETURNS SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
- Example
The Minimum Spanning Tree starting on vertices \(\{13, 2\}\) with distance \(<= 3.5\).
SELECT * FROM pgr_primDD(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
ARRAY[13,2], 3.5
);
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 | 3 | 2 | 1 | 1
4 | 2 | 2 | 4 | 3 | 1 | 2
5 | 2 | 2 | 6 | 5 | 1 | 2
6 | 3 | 2 | 9 | 9 | 1 | 3
7 | 3 | 2 | 11 | 11 | 1 | 3
8 | 1 | 2 | 5 | 4 | 1 | 1
9 | 2 | 2 | 8 | 7 | 1 | 2
10 | 3 | 2 | 7 | 6 | 1 | 3
11 | 2 | 2 | 10 | 10 | 1 | 2
12 | 3 | 2 | 13 | 14 | 1 | 3
13 | 0 | 13 | 13 | -1 | 0 | 0
14 | 1 | 13 | 10 | 14 | 1 | 1
15 | 2 | 13 | 5 | 10 | 1 | 2
16 | 3 | 13 | 2 | 4 | 1 | 3
17 | 3 | 13 | 8 | 7 | 1 | 3
(17 rows)
Parameters¶
Parameter |
Type |
Description |
---|---|---|
|
Edges SQL as described below. |
|
Root vid |
|
Identifier of the root vertex of the tree. |
Root vids |
|
Array of identifiers of the root vertices.
|
distance |
|
Upper limit for the inclusion of a node in the result.
|
Where:
- ANY-INTEGER
SMALLINT
,INTEGER
,BIGINT
- ANY-NUMERIC
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
,NUMERIC
Inner query¶
Edges SQL¶
Column |
Type |
Default |
Description |
---|---|---|---|
|
ANY-INTEGER |
Identifier of the edge. |
|
|
ANY-INTEGER |
Identifier of the first end point vertex of the edge. |
|
|
ANY-INTEGER |
Identifier of the second end point vertex of the edge. |
|
|
ANY-NUMERICAL |
Weight of the edge ( |
|
|
ANY-NUMERICAL |
-1 |
Weight of the edge (
|
Where:
- ANY-INTEGER
SMALLINT
,INTEGER
,BIGINT
- ANY-NUMERICAL
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
Result Columns¶
Returns SET OF (seq, depth, start_vid, node, edge, cost, agg_cost)
Parameter |
Type |
Description |
---|---|---|
|
|
Sequential value starting from \(1\). |
|
|
Depth of the
|
|
|
Identifier of the root vertex. |
|
|
Identifier of |
|
|
Identifier of the
|
|
|
Cost to traverse |
|
|
Aggregate cost from |
Where:
- ANY-INTEGER
SMALLINT, INTEGER, BIGINT
- ANY-NUMERIC
SMALLINT, INTEGER, BIGINT, REAL, FLOAT, NUMERIC
See Also¶
Indices and tables