Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement colour refinement #728

Open
Joseph-Edwards opened this issue Feb 5, 2025 · 0 comments
Open

Implement colour refinement #728

Joseph-Edwards opened this issue Feb 5, 2025 · 0 comments
Labels
difficulty: 2 A label for feature requests of medium difficulty feature-request A label for feature requests new-feature A label for new features.

Comments

@Joseph-Edwards
Copy link
Collaborator

Joseph-Edwards commented Feb 5, 2025

Colour refinement is an algorithm that takes a graph $G = (V, E)$, and returns a colouring $C \colon V \to \mathbb{N}$ of the vertices such that, for any pair of vertices $u, v \in V$ with the same colour (i.e. $C(u) = C(v)$ ), the neighbours of $u$ are coloured in the same way as the colours of $v$.

This algorithm has many applications, notably relating to graph isomorphism testing. It would be good to have an implementation in the Digraphs package.

Useful references

  • The ideas are presented very nicely in sections 15.1 and 15.2 of this book chapter by Grohe et al.
  • The colour refinement algorithm was the main focus of this master's dissertation. In particular, there is a pseudocode implementation of colour refinement in Algorithm 2.2.1, and an accompanying Python implementation available here.
  • There is a JavaScript implementation in this repository. To see it in action, go here.
@Joseph-Edwards Joseph-Edwards added difficulty: 2 A label for feature requests of medium difficulty feature-request A label for feature requests new-feature A label for new features. labels Feb 5, 2025
@Joseph-Edwards Joseph-Edwards moved this to Unassigned in VIP tasks Feb 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
difficulty: 2 A label for feature requests of medium difficulty feature-request A label for feature requests new-feature A label for new features.
Projects
Status: Unassigned
Development

No branches or pull requests

1 participant