Fix exponential short-paths issue #182
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes a bug reported by a few users. In the Jane Street internal codebase, there's a directory in which short-paths was frequently taking extremely long amounts of time (ex: 40 mins), making Merlin unusable. It turns out this was due to an exponential algorithm in short-paths. There is a comment in the PR diff that explains the issue and the fix.
This is a somewhat low-information PR, in that I have a very poor understanding of Merlin's short-paths algorithm. As a result, I am not confident that this fix is a) the best way of achieving this bugfix and b) sufficient, in that there isn't a similar issue in another related part of the algorithm. But I am confident that this PR fixes the issue at hand without breaking any existing behavior, and I don't want to sink too much time into this issue, so I don't want to let perfect be the enemy of good.