C++ Logo

sg19

Advanced search

Re: [isocpp-sg19] Standardizing Graph concepts

From: Phil Ratzloff <Phil.Ratzloff_at_[hidden]>
Date: Thu, 18 Jun 2026 23:08:45 +0000
Graphs are not niche. They're used in a wide variety of disciplines and industries, and solve a wide diversity of problems.

Not everyone uses them, but they fill an important role the computing environment, including machine learning.


________________________________
From: SG19 <sg19-bounces_at_[hidden]> on behalf of Phil Ratzloff via SG19 <sg19_at_[hidden]>
Sent: Thursday, June 18, 2026 5:15 PM
To: Michael Wong <fraggamuffin_at_gmail.com>; sg19_at_[hidden] <sg19_at_[hidden]>
Cc: Phil Ratzloff <Phil.Ratzloff_at_[hidden]>
Subject: Re: [isocpp-sg19] Standardizing Graph concepts


EXTERNAL

I'm still working on refinements to the papers and the reference library. My goal is to have them available for the next SG19 meeting. I've extended it to support vertices and edges in mapped containers. I'm also tightening up the overall interface and I'll also be working on reducing the overall size of the API.

I was asked years ago to split the paper up because people tended to not read large papers. The existing papers are just sections of the original.

CLRS is the clearest and best reference, according to Andrew Lumsdaine. He's been involved in the academic & research side of graphs more than I.

The library didn't exist before the papers. It is the reference implementation written in parallel with the papers.

A concern has been raised that the library isn't being used by anyone, which is true. I'm in the process to see if I can change that.

The design is influenced by boost graph library (BGL), which was written circa 2001 using C++98. This brings a modern interface with additional features and a similar design philosophy.

There's also an argument that not all users of C++ can use open-source libraries in github. Including functionality in the standand means they don't have to write it themselves. I don't know how much weight that argument carries for any library proposed for the standard.

Yes, Michael Wong.


________________________________
From: SG19 <sg19-bounces_at_lists.isocpp.org> on behalf of Vinnie Falco via SG19 <sg19_at_[hidden]>
Sent: Thursday, June 18, 2026 3:08 PM
To: Michael Wong <fraggamuffin_at_[hidden]>
Cc: Vinnie Falco <vinnie.falco_at_[hidden]>; sg19_at_[hidden] <sg19_at_[hidden]>
Subject: Re: [isocpp-sg19] Standardizing Graph concepts


EXTERNAL

On Thu, Jun 18, 2026 at 11:55 AM Phil Ratzloff <Phil.Ratzloff_at_[hidden]<mailto:Phil.Ratzloff_at_[hidden]>> wrote:
Michael has been the one to promote a graph library as part of the standard as a part of the functionality used in machine learning, so I'll let him provide the details.

I am looking at P3127R1 which came out last year. This looks like a very well written set of papers. I note that the papers are split up into areas of concern: Overview, Background, Algorithms, and so forth. This is my preference yet there are conflicting opinions. One prominent officer said they prefer everything to be folded into one paper for ease of reading. I find this unpersuasive.

I learned something from P3127R1. "CLRS" refers to a specific tome which establishes a common vocabulary and set of concepts. It appears to be the API Schelling point which C++ graph libraries naturally converge to. That is, that graphs and their algorithms are an area of study by a relatively smaller group of practitioners who have already naturally converged on vocabulary and representation (vertex list I believe).

What was the motivation for writing these papers if the library already exists?

Let me give you an example. std::filesystem could have stayed in the ecosystem (i.e. Boost, or GitHub). Yet standardization brings measurable benefits. It provides a common API and a prescribed set of implementation behaviors so that it can work on every platform. This is necessary because filesystem is a portable API which wraps non-portable or operating system level operations.

Yet graphs and their algorithms are already portable as they can be expressed in pure C++ with no external libraries or operating system APIs.

I presume Michael is Michael Wong?

Thanks

Received on 2026-06-18 23:08:50