1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
:file: This file is part of the pgRouting project.
:copyright: Copyright (c) 2016-2026 pgRouting developers
:license: Creative Commons Attribution-Share Alike 3.0 https://creativecommons.org/licenses/by-sa/3.0
.. index::
single: Components Family ; pgr_strongComponents
single: strongComponents
|
``pgr_strongComponents``
===============================================================================
``pgr_strongComponents`` — Strongly connected components of a directed graph
using Tarjan's algorithm based on DFS.
.. rubric:: Availability
* Version 3.0.0
* Result columns change:
* ``n_seq`` is removed
* ``seq`` changed type to ``BIGINT``
* Function promoted to official.
* Version 2.5.0
* New experimental function.
Description
-------------------------------------------------------------------------------
A strongly connected component of a directed graph is a set of vertices that are
all reachable from each other.
**The main characteristics are:**
- Works for **directed** graphs.
- Components are described by vertices identifiers.
- The returned values are ordered:
- ``component`` ascending
- ``node`` ascending
- Running time: :math:`O(V + E)`
|Boost| Boost Graph Inside
Signatures
-------------------------------------------------------------------------------
.. admonition:: \ \
:class: signatures
| pgr_strongComponents(`Edges SQL`_)
| Returns set of |result-component-V|
| OR EMPTY SET
:Example: The strong components of the graph
.. literalinclude:: strongComponents.queries
:start-after: -- q1
:end-before: -- q2
.. figure:: /images/scc_sampledata.png
:scale: 25%
Parameters
-------------------------------------------------------------------------------
.. include:: pgRouting-concepts.rst
:start-after: only_edge_param_start
:end-before: only_edge_param_end
Inner Queries
-------------------------------------------------------------------------------
Edges SQL
...............................................................................
.. include:: pgRouting-concepts.rst
:start-after: basic_edges_sql_start
:end-before: basic_edges_sql_end
Result columns
-------------------------------------------------------------------------------
.. include:: pgr_connectedComponents.rst
:start-after: return_componentsV_start
:end-before: return_componentsV_end
See Also
-------------------------------------------------------------------------------
* :doc:`components-family`
* :doc:`sampledata`
* `Boost: Strong components
<https://www.boost.org/libs/graph/doc/strong_components.html>`__
* wikipedia: `Strongly connected component
<https://en.wikipedia.org/wiki/Strongly_connected_component>`__
.. rubric:: Indices and tables
* :ref:`genindex`
* :ref:`search`
|