Skip to content

LeveledSpanningTree#2066

Closed
dellaert wants to merge 34 commits intoborglab:developfrom
akshay-krishnan:feature/findCycles
Closed

LeveledSpanningTree#2066
dellaert wants to merge 34 commits intoborglab:developfrom
akshay-krishnan:feature/findCycles

Conversation

@dellaert
Copy link
Copy Markdown
Member

New data structure that supports efficient computation of fundamental cycles by:

  1. Constructing a BFS tree from a root node
  2. Recording both parent and level information for each node
  3. Using level information to quickly compute paths to the least common ancestor

This follows Paton's 1969 algorithm for finding fundamental cycles in undirected graphs,
in "An algorithm for finding a fundamental set of cycles for an undirected linear graph".
However, the level information allows O(V) computation of fundamental cycles where V is the
number of vertices in the graph. Without level information, finding the lowest common
ancestor would require O(V²) time in the worst case.

Added three tests for three different ways to call (adjacency, edge list, factor graph).

@dellaert dellaert closed this Mar 21, 2025
@dellaert dellaert deleted the feature/findCycles branch March 21, 2025 00:54
@dellaert dellaert restored the feature/findCycles branch March 21, 2025 00:57
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