I've worked with many DAGs represented as trees just using Clojure's maps
and vectors in a straightforward manner, and like you say, that's often
enough to get the job done.
I think where Loom and Ubergraph really start to pay off is when you need
to associate attributes to the various nodes and e
I want an API that is optimized around tree traversal and replacement.
Clojure.walk and zippers can be pretty great, as of course the associative
aspect of maps and vectors.
Going from a tree of maps and vectors to a graph representation makes
things harder and less direct.
Theres some challenges
Ubergraph can certainly represent DAGs, since DAGs are just a special case
of directed graphs. There is also the function ubergraph.alg/dag? to test
whether a graph is a DAG. There are included algorithms, such as
topological sorting, which only work on a DAG, and other functions, such as
shortes
Very cool!
On a related note: I would be interested in a similar library focused on
DAG's. Any thoughts there?
On Wed, Apr 29, 2015 at 10:00 PM, Mark Engelberg
wrote:
> https://github.com/Engelberg/ubergraph
>
> Ubergraph is a versatile, general-purpose graph data structure for
> Clojure.
https://github.com/Engelberg/ubergraph
Ubergraph is a versatile, general-purpose graph data structure for Clojure.
It is designed to complement and extend Loom, a popular Clojure collection
of graph protocols and algorithms.
Ubergraph implements all of Loom's protocols and draws them together in