Skip to content

Commit

Permalink
refactor: ⚡️ Speed up function find_cycle_vertices by 324% (#5262)
Browse files Browse the repository at this point in the history
  • Loading branch information
misrasaurabh1 authored Dec 17, 2024
1 parent a3d238c commit a97c29f
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions src/backend/base/langflow/graph/graph/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -435,13 +435,14 @@ def should_continue(yielded_counts: dict[str, int], max_iterations: int | None)


def find_cycle_vertices(edges):
# Create a directed graph from the edges
graph = nx.DiGraph(edges)

# Find all simple cycles in the graph
cycles = list(nx.simple_cycles(graph))
# Initialize a set to collect vertices part of any cycle
cycle_vertices = set()

# Flatten the list of cycles and remove duplicates
cycle_vertices = {vertex for cycle in cycles for vertex in cycle}
# Utilize the strong component feature in NetworkX to find cycles
for component in nx.strongly_connected_components(graph):
if len(component) > 1 or graph.has_edge(tuple(component)[0], tuple(component)[0]): # noqa: RUF015
cycle_vertices.update(component)

return sorted(cycle_vertices)

0 comments on commit a97c29f

Please sign in to comment.