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

Migrate Johnson's algorithm to rustworkx-core #1318

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Commits on Nov 17, 2024

  1. Migrate Johnson's algorithm to rustworkx-core

    This commit adds Johnson's algorithm for computing simple cycles to
    rustworkx-core. This implementation returns an iterator-like struct
    which requires a reference to the graph for each step of the iterator.
    This mirrors the structure of the Bfs and similar structs in petgraph.
    While an implementor of Iterator could be used for this, this
    complicates using it from Python because we can't have a shared
    reference in a pyclass struct. This also has the advantage of enabling
    mutable references while iterating over the cycles.
    
    To facilitate this 2 traits are added `EdgeFindable` and `EdgeRemovable`
    which add traits for `remove_edge()` and `find_edge()` to petgraph graph
    types. The `EdgeRemovable` trait isn't actually used currently, it was
    in an earlier local draft of the PR which attempted to remove self
    cycles from a clone before changing direction of the interface. Since
    the implementation was done and relatively simple, and the potential
    general usefulness this was left in. `EdgeFindable` is actively used
    by this new function however.
    mtreinish committed Nov 17, 2024
    Configuration menu
    Copy the full SHA
    47c337a View commit details
    Browse the repository at this point in the history
  2. Simplify python side logic

    mtreinish committed Nov 17, 2024
    Configuration menu
    Copy the full SHA
    8d66d67 View commit details
    Browse the repository at this point in the history

Commits on Nov 18, 2024

  1. Configuration menu
    Copy the full SHA
    081aa3c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c6fcc6e View commit details
    Browse the repository at this point in the history