Supporting undirected CSR graphs

Open
#458 2 comments 2 reactions 1 assignee View on GitHub

@jeremy-murphy is already working on this.

Since Feb 21, 2026.

Assessment

This issue has not been assessed yet.

Description

data structure performance

Problem

Currently, the Boost Graph Library's compressed_sparse_row_graph only supports directed and bidirectional graphs. There are explicit comments in the codebase and documentation indicating that undirected CSR support is a planned but unimplemented feature:

  • compressed_sparse_row_graph.hpp:

    At this time, the compressed sparse row graph can only be used to create directed and bidirectional graphs. In the future, undirected CSR graphs will also be supported.

  • doc/compressed_sparse_row.html:

    At this time, the CSR graph type only supports directed and bidirectional graphs...

This is problematic for several reasons, e.g. for adjusting performance in my Louvain's implementation algorithm: I can't use Louvain on directed graphs, but I can't use undirected CSR. Consequently a gap exists between BGL implementations and GenLouvain (that uses CSR). Having an undirected CSR could bridge that gap:

Image

Feature Request

Add support for undirected compressed sparse row (CSR) graphs to compressed_sparse_row_graph. This would improve memory efficiency and performance for large undirected graphs, matching the benefits provided for directed graphs.

Dominant language
C++
Stars
395
Forks
239
Avg merge
18h 50m
Merged PRs (30d)
20

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from boostorg/graph

All issues in boostorg/graph

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.