Skip to content

fix(floyd-warshall): preserve shortest-path predecessors - #2249

Open
Shubham-Padkonde wants to merge 1 commit into
trekhleb:masterfrom
Shubham-Padkonde:fix/floyd-warshall-predecessors
Open

Shubham-Padkonde wants to merge 1 commit into
trekhleb:masterfrom
Shubham-Padkonde:fix/floyd-warshall-predecessors

Conversation

@Shubham-Padkonde

@Shubham-Padkonde Shubham-Padkonde commented Oct 24, 2026 •

Copy link
Copy Markdown

A broader follow-up search identified existing PR #2187, which includes a fix for this same reconstruction defect using a successor matrix. This isolated patch instead preserves the predecessor convention used by the existing direct-edge cases. This overlaps that existing proposal; the implementation differs as described below.
When an improvement goes through an intermediate vertex whose suffix already spans multiple edges, nextVertices stores that intermediate vertex instead of the vertex immediately preceding the destination. Distances remain correct, but walking the predecessor matrix can require an edge that does not exist. For example, with vertex order B, C, A, D and edges A -> D (2), D -> B (3), B -> C (4), the distance A -> C is 9 while the old matrix incorrectly identifies D as C's predecessor.

Propagate the suffix's predecessor when relaxing a path, preserving the predecessor convention already used for direct edges. Clarify the return-value comment. Add directed and undirected regressions that reconstruct the route and verify its weight. Correct two existing negative-weight assertions that encoded the intermediate-vertex bug, and check the complete F -> E -> D -> A -> C -> B predecessor chain.

Validation: both new regression cases fail before the fix. All 589 tests across 178 suites pass after the fix; Floyd-Warshall has 100% statement, branch, function and line coverage. Full repository ESLint and git diff --check pass.

AI assistance was used for investigation, implementation and testing.

@Shubham-Padkonde
Shubham-Padkonde marked this pull request as draft October 24, 2026 05:21
@Shubham-Padkonde
Shubham-Padkonde marked this pull request as ready for review October 26, 2026 15:09
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