Skip to content

Conversation

@SebastianGitt
Copy link
Contributor

…emoval of change_base()

  • uses an optimized colour refinement algorithm
  • more efficiently handles graphs with disjoint components
  • fixes issue where automorphisms could be missed if coset representatives could belong to multiple left transversals
  • supports canonical labelling
  • faster graph comparison using refinement trace
  • no longer relies on change_base() to perform pruning by automorphism
  • uses more efficient data structures
  • now returns mapping to original graph labelling
  • improves test coverage of edge cases

for u_i in self._u_vector:
for h in u_i:
f = mult(g, h)
if (f == self._identity).all():
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For large graphs this short-circuit takes longer to check than it ends up saving, hence its removal.

Copy link
Member

@randomir randomir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, just a few minor suggestions.

I'll defer the algorithm validation to @jackraymond.

…emoval of ``change_base()``

- uses an optimized colour refinement algorithm
- more efficiently handles graphs with disjoint components
- fixes issue where automorphisms could be missed if coset representatives could belong to multiple left transversals
- supports canonical labelling
- faster graph comparison using refinement trace
- no longer relies on ``change_base()`` to perform pruning by automorphism
- uses more efficient data structures
- now returns mapping to original graph labelling
- improves test coverage of edge cases
- caches coset representative inverses
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants