Skip to content

Change loom.alg-generic/pre-traverse to do much less work#120

Open
jafingerhut wants to merge 1 commit into
aysylu:masterfrom
jafingerhut:lazier-pre-traverse
Open

Change loom.alg-generic/pre-traverse to do much less work#120
jafingerhut wants to merge 1 commit into
aysylu:masterfrom
jafingerhut:lazier-pre-traverse

Conversation

@jafingerhut

Copy link
Copy Markdown

especially if the graph is dense with edges for a node that is
traversed, but the returned lazy sequence is not ever evaluated to get
to those nodes.

Also eliminate a stack-growing recursive call, using recur instead.
The previous version could grow the call stack nearly as deep as the
number of edges in the graph.

especially if the graph is dense with edges for a node that is
traversed, but the returned lazy sequence is not ever evaluated to get
to those nodes.

Also eliminate a stack-growing recursive call, using recur instead.
The previous version could grow the call stack nearly as deep as the
number of edges in the graph.
@jafingerhut

Copy link
Copy Markdown
Author

I was using pre-traverse to do a partial DFS of some large graphs where some nodes had very high degree, and found that it was doing a lot of unnecessary work for edges in the graph that were never 'crossed' by my partial DFS.

jsavyasachi added a commit to jsavyasachi/loom that referenced this pull request Jun 21, 2026
Walk each node's successors one at a time, remembering the position on the
stack, instead of eagerly pushing every unseen neighbor. Avoids O(E) stack
growth on dense graphs; preorder is unchanged. Closes aysylu#120.
jsavyasachi added a commit to jsavyasachi/loom that referenced this pull request Jun 21, 2026
Adds simple-paths (aysylu#111) and digraph-all-cycles (aysylu#126); perf for
degeneracy-ordering (aysylu#108) and pre-traverse (aysylu#120).
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.

1 participant