Attributed C-sets encompass a broad class of data structures, including many generalizations of graphs (e.g. directed, symmetric, reflexive), tabular data (e.g. data frames), and combinations of the two (e.g. weighted graphs, relational databases). This repo generalizes the Nauty algorithm, which produces canonical members of an isomorphism class, to cover any data structure encompassed by C-Sets.
More background is found in the documentation (click above) or this blog post.
- An upcoming refactor of Catlab using CompTime.jl will make it feasible to reimplement the core algorithm using code custom generated for a given C-Set, offering new opportunities for performance improvements.
- Rather than just computing a canonical hash of a C-set's isomorphism class, we want to compute and represent the full automorphism groups, which can be applied to solving certain problems (e.g. searching for homomorphisms from A to B, up to isomorphism).