[ANN] Ubergraph 0.4.0

150 views
Skip to first unread message

Mark Engelberg

unread,
Jun 22, 2017, 4:56:43 AM6/22/17
to clojure
Ubergraph is a batteries-loaded, immutable graph data structure for Clojure.

Version 0.4.0 includes improved support for serialization/deserialization of ubergraphs.
https://github.com/Engelberg/ubergraph#serialization

Ubergraph has now been in use for over two years, and has no open bug reports in github.

Given that Loom is Clojure's other main graph library, many people are interested in how Ubergraph and Loom compare.

Broadly speaking, Ubergraph is a superset of Loom that fulfills Loom's protocols offering several features and algorithms beyond what Loom supports:

* Multigraphs and multidigraphs with parallel edges, i.e., multiple edges between the same pair of nodes in the same direction.
* Multiple weights per edge (as opposed to one "privileged" weight attribute).
* Weights that are modifiable after initialization (in the immutable sense of producing a new graph structure with modified weights).
* Mixtures of directed and undirected edges in the same graph.
* The ability to distinguish between an undirected edge and an opposing pair of directed edges.
* The ability to traverse all a graph's edges while guaranteeing that undirected edges are visited only once.

Because Ubergraph implements Loom protocols, Ubergraph can typically be used as a drop-in replacement for Loom graphs.  For the most part, Loom's graph algorithms work on ubergraphs, and Ubergraph's graph algorithms work on loom graphs.  There are some exceptions to this, because in some cases, the implementation of Loom's algorithms were not carefully implemented to rely only on Loom's protocol abstractions, but were hard-coded to specific aspects of Loom's concrete implementation.  And since Loom wasn't written with multigraphs in mind, some of Loom's algorithms don't work properly on multigraphs. 

Ubergraph's algorithm namespace contains a curated collection of algorithms from Loom known to work properly on ubergraph's more general data structure, improved versions of several critical algorithms from Loom, and reimplementations of several key algorithms from Loom known to be broken on multigraphs.

Bruce Durling

unread,
Jun 22, 2017, 5:15:49 AM6/22/17
to Clojure
That looks great, especially how it relates to loom. Thanks!

cheers,
Bruce
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+u...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+u...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages