Graph data structure and algorithms for Clojure