Я пошел дальше и реализовал версию учебника по алгоритму Tarjan SCC в Scala. Однако мне не нравится код - он очень необходим/процедурный с множеством мутирующих состояний и индексами бухгалтерского учета. Существует ли более "функциональная" версия алгоритма? Я считаю, что императивные версии алгоритмов скрывают основные идеи, стоящие за алгоритмом, в отличие от функциональных версий. Я нашел кого-то другого, столкнувшегося с той же проблемой с этим конкретным алгоритмом, но я не смог перевести его код Clojure в idomatic Scala.
Примечание. Если кто-то хочет экспериментировать, у меня хорошая настройка, которая генерирует случайные графики, а проверяет ваш алгоритм SCC и запускает Floyd-Warshall