Skip to content

Conversation

wendelmax
Copy link

…17033

  • Add improved_shortest_path: optimized Dijkstra with reduced sorting overhead
  • Add bucket_shortest_path: O(E + V) algorithm for small integer weights
  • Add adaptive_shortest_path: hybrid approach that chooses best algorithm
  • Include comprehensive documentation with paper references
  • Add 9 comprehensive tests covering various scenarios
  • Update DIRECTORY.md to include new algorithm
  • Export functions in graph module

This implementation demonstrates how to break the sorting barrier described in 'Breaking the Sorting Barrier for Directed Single-Source Shortest Paths' paper, providing significant performance improvements for graphs with small integer weights.

Pull Request Template

Description

Please include a summary of the change and which issue (if any) is fixed.
A brief description of the algorithm and your implementation method can be helpful too. If the implemented method/algorithm is not so
well-known, it would be helpful to add a link to an article explaining it with more details.

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

  • I ran bellow commands using the latest version of rust nightly.
  • I ran cargo clippy --all -- -D warnings just before my last commit and fixed any issue that was found.
  • I ran cargo fmt just before my last commit.
  • I ran cargo test just before my last commit and all tests passed.
  • I added my algorithm to the corresponding mod.rs file within its own folder, and in any parent folder(s).
  • I added my algorithm to DIRECTORY.md with the correct link.
  • I checked COUNTRIBUTING.md and my code follows its guidelines.

Please make sure that if there is a test that takes too long to run ( > 300ms), you #[ignore] that or
try to optimize your code or make the test easier to run. We have this rule because we have hundreds of
tests to run; If each one of them took 300ms, we would have to wait for a long time.

…17033

- Add improved_shortest_path: optimized Dijkstra with reduced sorting overhead
- Add bucket_shortest_path: O(E + V) algorithm for small integer weights
- Add adaptive_shortest_path: hybrid approach that chooses best algorithm
- Include comprehensive documentation with paper references
- Add 9 comprehensive tests covering various scenarios
- Update DIRECTORY.md to include new algorithm
- Export functions in graph module

This implementation demonstrates how to break the sorting barrier
described in 'Breaking the Sorting Barrier for Directed Single-Source
Shortest Paths' paper, providing significant performance improvements
for graphs with small integer weights.
@wendelmax wendelmax requested a review from imp2002 as a code owner September 27, 2025 22:15
@codecov-commenter
Copy link

codecov-commenter commented Sep 27, 2025

Codecov Report

❌ Patch coverage is 99.75309% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 95.37%. Comparing base (aa3194f) to head (e44a006).
⚠️ Report is 3 commits behind head on master.

Files with missing lines Patch % Lines
src/graph/improved_shortest_path.rs 99.75% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #915      +/-   ##
==========================================
+ Coverage   95.33%   95.37%   +0.03%     
==========================================
  Files         319      320       +1     
  Lines       20890    21295     +405     
==========================================
+ Hits        19916    20310     +394     
- Misses        974      985      +11     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…rithms

- Add tests for Zero trait implementations
- Add tests for VertexDistance ordering behavior
- Add edge case tests for empty graphs and disconnected vertices
- Add tests for bucket algorithm with weight limits
- Add tests for adaptive algorithm threshold behavior
- Add tests for priority queue behavior and visited vertex skipping
- Add tests for different numeric types (u32, i64)
- Add tests for bucket algorithm with empty buckets
- Increase test coverage from 90.31% to target coverage
@wendelmax wendelmax force-pushed the feature/improved-shortest-path-algorithm branch from 729f6df to e44a006 Compare September 27, 2025 22:37
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