Returns, as a sequence of sets, the strongly connected components
of g.
(defn scc
"Returns, as a sequence of sets, the strongly connected components
of g."
[g]
(let [po (reverse (post-ordered-nodes g))
rev (reverse-graph g)
step (fn [stack visited acc]
(if (empty? stack)
acc
(let [[nv comp] (post-ordered-visit rev
(first stack)
[visited #{}])
ns (remove nv stack)]
(recur ns nv (conj acc comp)))))]
(step po #{} [])))
Comments top
No comments for scc. Log in to add a comment.