Abstract
We present concurrent algorithms, based on depth-first search, for three problems relevant to model checking: given a state graph, to find its strongly connected components, which states are in loops, and which states are in “lassos”. Each algorithm is a variant of Tarjan’s Algorithm. Our algorithms typically exhibit a three- or four-fold speed-up over the corresponding sequential algorithms on an eight-core machine.
Similar content being viewed by others
References
Armstrong, P., Lowe, G., Ouaknine, J., Roscoe, A.W.: Model checking timed CSP. In: Proceedings of HOWARD-60 (2012)
Barnat, J., Chaloupka, J., van de Pol, J.: Distributed algorithms for SCC decomposition. J. Logic Comput. 21(1), 23–44 (2011)
Cliff Click: A lock-free hash table. JavaOne Conference. http://www.azulsystems.com/events/javaone_2007/2007_LockFreeHash.pdf (2007)
Courcoubetis, C., Vardi, M. Y., Wolper, P., Yannakakis, M.: Memory efficient algorithms for the verification of temporal properties. In: Proceedings of Computer-Aided Verification (CAV), vol. 531 of LNCS, pp. 233–242 (1990)
Dijkstra, E.W.: Ewd 376: finding the maximum strong components in a directed graph. http://www.cs.utexas.edu/users/EWD/ewd03xx/EWD376.PDF (1973)
Evangelista, S., Laarman, A.W., Petrucci, L., van de Pol, J.C.: Improved multi-core nested depth-first search. In: Proceedings of the 10th International Symposium on Automated Technology for Verification and Analysis, vol. 7561 of Lecture Notes in Computer Science, pp. 269–283 (2012)
Evangelista, S., Petrucci, L., Youcef, S.: Parallel nested depth-first searches for LTL model checking. In: Proceedings of the 9th International Symposium on Automated Technology for Verification and Analysis, vol. 6996 of Lecture Notes in Computer Science, pp. 381–396 (2011)
Fleischer, L.K., Hendrickson, B., Pnar, A.: On identifying strongly connected components in parallel. In: Parallel and Distributed Processing, vol. 1800 of Lecture Notes in Computer Science, pp. 505–511 (2000)
Georges, A., Buytaert, D., Eeckhout, L.: Statistically rigorous Java performance evaluation. SIGPLAN Notices., 42(10), 57–76. http://dl.acm.org/citation.cfm?id=1297033 (2007)
Gibson-Robinson, T., Armstrong, P., Boulgakov, A., Roscoe, A.W.: FDR3–a modern refinement checker for CSP. In: Proceedings of Tools and Algorithms for the Construction and Analysis of Systems (TACAS), vol. 8413 of Lecture Notes in Computer Science, pp. 187–201 (2014)
Holzmann, G.J., Bos̆nac̆ki, D.: Multi-core model checking with spin. In: Proceedings of Parallel and Distributed Processing Symposium, pp. 1–8 (2007)
Laarman, A., van de Pol, J., Weber, M.: Boosting multi-core reachability performance with shared hash tables. In: Proceedings of 10th International Conference on Formal Methods in Computer-Aided Design (FMCAD 2010) (2010)
Laarman, A.W., Langerak, R., van de Pol, J.C., Weber, M., Wijs, A.: Multi-core nested depth-first search. In: Proceedings of the 9th International Symposium on Automated Technology for Verification and Analysis, vol. 6996 of Lecture Notes in Computer Science, pp. 321–335 (2011)
Laarman, A.W., van de Pol, J.C.: Variations on multi-core nested depth-first search. In: Proceedings of the 10th International Workshop on Parallel and Distributed Methods in Verification, vol. 72 of Electronic Proceedings in Theoretical Computer Science, pp. 13–28 (2011)
Lowe, G.: Implementing generalised alt: a case study in validated design using CSP. In: Communicating Process Architectures (2011)
Lowe, G.: Concurrent hash maps: a comparative study. Technical report, University of Oxford (2014)
McLendon III, W., Hendrickson, B., Plimpton, S.J., Rauchwerger, L.: Finding strongly connected components in distributed graphs. J.Parallel Distrib. Comput. 65(8), 901–910 (2005)
Odersky, M., Spoon, L., Venners, B.: Programming in Scala. Artima (2008)
Orzan, S.: On Distributed Verification and Verified Distribution. Ph.D. thesis, Free University of Amsterdam (2004)
Reif, J.H.: Depth-first search is inherently sequential. Inf. Process. Lett. 20(5), 229–234 (1985)
Renault, E., Duret-Lutz, A., Kordon, F., Poitrenaud, D.: Parallel explicit model checking for generalized Büchi automata. In: Proceedings of Tools and Algorithms for the Construction and Analysis of Systems (TACAS) (2015) (Forthcoming)
Roscoe, A.W.: Theory and Practice of Concurrency. Prentice Hall, Europe (1998)
Roscoe, A.W.: Understanding Concurrent Systems. Springer, London (2010)
Tarjan, R.: Depth-first search and linear graph algorithms. SIAM J. Comput. 1(2), 146–160 (1972)
Tomkins, D., Smith, T.G., Amato, N.M., Rauchwerger, L.: SCCMulti: an improved parallel strongly connected components algorithm. In: Proceedings of the ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP ’14) (2014)
University of Oxford: Failures-Divergence Refinement–FDR 3 User Manual. http://www.cs.ox.ac.uk/projects/fdr/manual/index.html (2013)
Vardi, M.Y., Wolper, P.: An automata-theoretic approach to automatic program verification. In: Proceedings of Logic in Computer Science (1986)
Acknowledgments
I would like to thank Tom Gibson-Robinson for many interesting and useful discussions that contributed to this paper. I would also like to thank the TACAS and STTT anonymous referees for their useful comments.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Lowe, G. Concurrent depth-first search algorithms based on Tarjan’s Algorithm. Int J Softw Tools Technol Transfer 18, 129–147 (2016). https://doi.org/10.1007/s10009-015-0382-1
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-015-0382-1