Vous suivez désormais cette soumission
- Les mises à jour seront visibles dans votre flux de contenu suivi
- Selon vos préférences en matière de communication il est possible que vous receviez des e-mails
Implements Tarjan's algorithm for finding strongly connected components of directed graphs. In a strongly connected component (SCC), there is a path from every node to every other node. SCCs are disjoint. Nodes whose in-degree or out-degree are zero or are part of acyclic graphs form SCCs all by themselves.
Accepts an adjacency matrix as input. For best performance, the matrix should be sparse.
Also returns an index list reporting SCC membership for each node.
Example of use:
>> E = sparse([2 3 4 5 5 6 6 7 8 4 9 5 10 6 9], ...
[1 2 2 3 4 3 5 6 4 8 8 9 9 10 6], ...
ones(1,15));
>> figure; spy(E)
>> c = tarjan(E)
c =
[1x4 double] [1x2 double] [7] [3] [2] [1]
>> c{1}
ans =
5 6 9 10
>>
>>
In the example, E is an adjacency matrix for a directed graph (visualized in the screenshot image), and the nodes with indices 5, 6, 9, and 10 form the largest strongly connected component in the graph.
Implements the wikipedia pseudocode [1] more or less exactly. Matlab doesn't have an easy way to share private variables across recursive function calls so this function uses globals. (I know!)
Citation pour cette source
Brandon Kuczenski (2026). tarjan(e) (https://fr.mathworks.com/matlabcentral/fileexchange/50707-tarjan-e), MATLAB Central File Exchange. Extrait(e) le .
Remerciements
A inspiré : LoopDetect
Informations générales
- Version 1.2.0.0 (2,79 ko)
Compatibilité avec les versions de MATLAB
- Compatible avec toutes les versions
Plateformes compatibles
- Windows
- macOS
- Linux
| Version | Publié le | Notes de version | Action |
|---|---|---|---|
| 1.2.0.0 | Add example usage. |
||
| 1.1.0.0 | fixed a bug in the initial version- variable 'index' must also be global. |
||
| 1.0.0.0 |
