GSoC 2025 Sloan Ordering Algorithm - pgRouting/pgrouting GitHub Wiki

Table of Contents

Proposal

Brief Description

The project aims to add the following algorithm to in pgRouting during GSoC 2024:

  • Sloan Ordering

Sloan ordering is an algorithm for profile and wavefront reduction of sparse matrices. The algorithm generates an optimal vertex ordering that reduces the profile and bandwidth of a graph, improving the efficiency of matrix operations, finite element analysis, and graph-based computational methods. The Sloan algorithm works by selecting a starting vertex and using a pseudo-peripheral node strategy to systematically reorder graph vertices, with a time complexity of O(V + E) and space complexity of O(V), where V is the number of vertices and E is the number of edges. This implementation will enhance pgRouting's capabilities in graph optimization, benefiting with sparse graph representations.

State of the Project Before GSoC

The absence of the Sloan ordering algorithm creates a functionality gap for users working with large network problems where matrix ordering significantly impacts computational efficiency. Current workarounds require users to export data to external tools, apply ordering algorithms, and re-import results, breaking workflow continuity and efficiency. Some proprietary GIS solutions include matrix ordering capabilities, but no open-source spatial database extension currently offers this functionality. The project aligns with pgRouting's roadmap for expanding advanced graph analysis capabilities beyond basic routing functions.

Deliverables

  • Fully implemented Sloan ordering algorithm
  • PostgreSQL/pgRouting integration
  • Comprehensive documentation
  • Performance benchmarks
  • Extensive test suite
  • Usage examples and tutorials plus prepare wiki report.

Detailed Proposal

Detailed Proposal Link (Google Doc)

Participants

Title GitHub Handle Name
1st Mentor @cvvergara Vicky Vergara
2nd Mentor @robe2 Regina Obe
3rd Mentor @iosefa Iosefa Percival
4th Mentor @sanak Ko Nagase
Student Developer @bipashabg Bipasha Gayary

Timeline

Community Bonding Period

  • Introduce myself to the pgRouting mentor(s) and other community members
  • Set up my development environment
  • Familiarize myself with the pgRouting codebase and development practices
  • Learn pgTap and Boost Graph Library to help with the project
  • Setup wiki page for tracking weekly progress of the project
  • Participate in community discussions, meetings, or forums to engage with the project
  • Engage with PostgreSQL and PostGIS to gain more insight and comfort for working on the project

Week -0

TBD

Week 1

TBD

First Coding Period

Week 1

TBD

Week 2

TBD

Week 3

TBD

Week 4

TBD

Week 5

TBD

Week 6

TBD

Second Coding Period

Week 7

TBD

Week 8

TBD

Week 9

TBD

Week 10

TBD

Week 11

TBD

Week 12

TBD

Log of Pull Requests

Link to all the Pull Requests made in GSoC-pgRouting repository

Pull Request Description Date Status
- - - -

Final Report

TBD

Potential Future Work:

TBD

Links:

  • Pull Requests:
    • Final Pull Request: TBD

    • Intermediate pull requests: TBD

References

  1. Boost sloan_ordering

  2. Parallelization of Reordering of Sparse Matrices