From 02487931e9bd1f1e690fcf29e11de473c3dbaa74 Mon Sep 17 00:00:00 2001 From: Phil Ratzloff Date: Fri, 27 Feb 2026 15:58:57 -0500 Subject: [PATCH 1/2] Add C++ standardization page and link into docs Add docs/standardization.md describing graph-v3 as the ISO C++ reference implementation, including the table of WG21 papers (P3126-P3131, P3337) from README-v2.md, library goals, paper-to-source mapping, and participation links. Link the new page from README.md and docs/index.md. --- README.md | 1 + docs/index.md | 7 +++-- docs/standardization.md | 64 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 docs/standardization.md diff --git a/README.md b/README.md index 63fda1b..4f459bf 100644 --- a/README.md +++ b/README.md @@ -172,6 +172,7 @@ The full documentation hub is at [docs/index.md](docs/index.md). Quick links: - [Getting Started](docs/index.md#users) +- [C++ Standardization](docs/standardization.md) — ISO C++ papers and proposal status - [Migration from graph-v2](docs/migration-from-v2.md) - [FAQ](docs/FAQ.md) - [Implementation Matrix](docs/status/implementation_matrix.md) diff --git a/docs/index.md b/docs/index.md index ecc8ac7..1ccbbb6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,9 +17,9 @@ - [Adjacency Lists](user-guide/adjacency-lists.md) — range-of-ranges model, concepts, CPOs - [Edge Lists](user-guide/edge-lists.md) — flat sourced-edge model, concepts, patterns - [Containers](user-guide/containers.md) — `dynamic_graph`, `compressed_graph`, `undirected_adjacency_list`, 27 trait combinations -- [Views](user-guide/views.md) — lazy traversal views (BFS, DFS, topological sort, etc.) +- [Views](user-guide/views.md) — lazy traversal views (breadth-first search, depth-first search, topological sort, etc.) - [Bidirectional Access](user-guide/bidirectional-access.md) — incoming edges, reverse traversal, `in_edge_accessor` -- [Algorithms](user-guide/algorithms.md) — Dijkstra, Bellman-Ford, MST, connected components, and more +- [Algorithms](user-guide/algorithms.md) — Dijkstra and Bellman-Ford shortest-paths, minimal spanning tree, connected components, and more ## Reference @@ -45,6 +45,7 @@ ## Other - [FAQ](FAQ.md) — common questions and answers -- [Migration from v2](migration-from-v2.md) — what changed from graph-v2 and how to migrate - [Status & Metrics](status/metrics.md) — canonical counts and implementation matrix - [Code Coverage](status/coverage.md) — line and function coverage report (95.8% lines, 92.0% functions) +- [C++ Standardization](standardization.md) — ISO C++ proposal papers (P3126–P3131, P3337) and participation +- [Migration from v2](migration-from-v2.md) — what changed from graph-v2 and how to migrate diff --git a/docs/standardization.md b/docs/standardization.md new file mode 100644 index 0000000..a26718a --- /dev/null +++ b/docs/standardization.md @@ -0,0 +1,64 @@ +# C++ Standardization + +graph-v3 is the reference implementation for a proposed graph library for the **ISO C++ Standard (C++26/C++29)**. +The proposal is developed under the [WG21](https://isocpp.org/std/the-committee) umbrella and targets the Standard +Library Evolution Working Group (LEWG). + +> The previous reference implementation is [graph-v2](https://github.com/stdgraph/graph-v2). +> graph-v3 refines and supersedes that work. + +--- + +## Goals + +The proposed library aims to: + +1. Support creation of high-performance, state-of-the-art graph algorithms. +2. Provide syntax that is simple, expressive and easy to understand when writing algorithms. +3. Define useful concepts and traits that algorithms can use to express their requirements. +4. Support views for graph traversal commonly used by algorithms. +5. Support optional, user-defined value types for edges, vertices and the graph itself. +6. Allow the use of standard containers to define simple graphs. +7. Enable easy integration of existing graph data structures. + +--- + +## ISO C++ Papers + +The following papers collectively form the current proposal submitted to WG21. + +| Paper | Title | Description | +| :---- | :---- | :---------- | +| [P3126](https://wg21.link/P3126) | Overview | Describes the big picture of what is being proposed. | +| [P3127](https://wg21.link/P3127) | Background and Terminology | Motivation and theoretical background underlying the proposal. | +| [P3128](https://wg21.link/P3128) | Algorithms | Covers the initial algorithms as well as planned future additions. | +| [P3129](https://wg21.link/P3129) | Views | Helpful views for traversing a graph. | +| [P3130](https://wg21.link/P3130) | Graph Container Interface | The core interface for uniformly accessing graph data structures and adapting to external graphs. | +| [P3131](https://wg21.link/P3131) | Graph Containers | Includes `compressed_graph` and use of standard containers to define simple graphs. | +| [P3337](https://wg21.link/P3337) | Graph Comparison | Syntax and performance comparison to the Boost Graph Library. | + +--- + +## Relationship Between Papers and This Library + +| Paper | Library location | +| :---- | :--------------- | +| P3128 Algorithms | [`include/graph/algorithm/`](../include/graph/algorithm/) | +| P3129 Views | [`include/graph/views/`](../include/graph/views/) | +| P3130 Graph Container Interface | [`include/graph/detail/`](../include/graph/detail/) and [CPO Reference](reference/cpo-reference.md) | +| P3131 Graph Containers | [`include/graph/container/`](../include/graph/container/) | + +--- + +## How to Participate + +- **WG21 mailing list and papers:** +- **GitHub discussions:** +- **GitHub issues:** + +--- + +## Acknowledgements + +- The [NWGraph](https://github.com/NWmath/NWgr) team for collaboration and algorithm implementations. +- The Machine Learning study group (SG19) of the ISO C++ Standards Committee (WG21) for comments and support. From f58e818755df819796b8f32dd318dc71681fbeee Mon Sep 17 00:00:00 2001 From: Phil Ratzloff Date: Sun, 1 Mar 2026 11:33:04 -0500 Subject: [PATCH 2/2] docs: add logo header to all docs, fix nav links, add logo_text.svg, tag v0.5.0 beta MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add graph-v3 logo table header to all docs/*.md files (excluding archive/) - Move back-navigation links below the table header for proper Markdown rendering - Move description paragraphs inside table header next to logo - Add docs/assets/logo_text.svg — stylized 'grAph³' text logo with Inter font - CHANGELOG.md: convert [Unreleased] to [0.5.0] 2026-03-01 (Initial Beta) --- CHANGELOG.md | 4 ++ README.md | 9 +-- VERSION | 2 +- docs/FAQ.md | 7 ++ docs/assets/logo_text.svg | 69 +++++++++++++++++++ docs/contributing/algorithm-template.md | 10 ++- docs/contributing/architecture.md | 6 ++ docs/contributing/coding-guidelines.md | 10 ++- docs/contributing/cpo-implementation.md | 7 ++ docs/contributing/cpo-order.md | 10 ++- docs/contributing/view-chaining.md | 7 ++ docs/contributing/view-template.md | 9 ++- docs/getting-started.md | 12 +++- docs/index.md | 1 - docs/migration-from-v2.md | 7 ++ docs/reference/adjacency-list-interface.md | 12 +++- docs/reference/algorithm-complexity.md | 12 +++- docs/reference/concepts.md | 12 +++- docs/reference/cpo-reference.md | 8 +++ docs/reference/edge-list-interface.md | 13 +++- docs/reference/edge-value-concepts.md | 9 ++- docs/reference/type-aliases.md | 10 ++- docs/reference/vertex-patterns.md | 12 +++- docs/standardization.md | 13 +++- docs/status/coverage.md | 8 +++ docs/status/implementation_matrix.md | 8 +++ docs/status/metrics.md | 8 +++ docs/user-guide/adjacency-lists.md | 12 +++- docs/user-guide/algorithms.md | 8 +++ .../algorithms/articulation_points.md | 8 +++ docs/user-guide/algorithms/bellman_ford.md | 8 +++ docs/user-guide/algorithms/bfs.md | 8 +++ .../algorithms/biconnected_components.md | 8 +++ .../algorithms/connected_components.md | 8 +++ docs/user-guide/algorithms/dfs.md | 8 +++ docs/user-guide/algorithms/dijkstra.md | 8 +++ docs/user-guide/algorithms/jaccard.md | 8 +++ .../algorithms/label_propagation.md | 8 +++ docs/user-guide/algorithms/mis.md | 8 +++ docs/user-guide/algorithms/mst.md | 8 +++ .../user-guide/algorithms/topological_sort.md | 8 +++ docs/user-guide/algorithms/triangle_count.md | 8 +++ docs/user-guide/bidirectional-access.md | 8 +++ docs/user-guide/containers.md | 12 +++- docs/user-guide/edge-lists.md | 12 +++- docs/user-guide/views.md | 8 +++ 46 files changed, 425 insertions(+), 34 deletions(-) create mode 100644 docs/assets/logo_text.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index be9a8e7..1e9667c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +--- + +## [0.5.0] - 2026-03-01 *(Initial Beta)* + ### Added - **Bidirectional edge access** — `in_edges`, `in_degree`, `find_in_edge`, `contains_in_edge` CPOs - `bidirectional_adjacency_list` concept diff --git a/README.md b/README.md index 4f459bf..a18e0fc 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ - +
graph-v3 logograph-v3 logo # graph-v3 -**A modern C++20 graph library — header-only, descriptor-based, works with your graphs.** +**A modern C++20 graph library — generic, header-only, works with your graphs**
@@ -20,7 +20,8 @@ ## Highlights - **Header-only** — drop into any CMake project; no compiled components -- **Works with your containers** — `std::vector>` or `std::map>` are valid graphs out of the box +- **Generic** - Enabled by the use of descriptors. +- **Works with your graphs** — Bring your own graph. `std::vector>` and `std::map>>` are also valid graphs out of the box. - **13 algorithms** — Dijkstra, Bellman-Ford, BFS, DFS, topological sort, connected components, articulation points, biconnected components, MST, triangle counting, MIS, label propagation, Jaccard coefficient - **7 lazy views** — vertexlist, edgelist, incidence, neighbors, BFS, DFS, topological sort — all composable with range adaptors - **Bidirectional edge access** — `in_edges`, `in_degree`, reverse BFS/DFS/topological sort via `in_edge_accessor` @@ -108,7 +109,7 @@ Both share a common descriptor system and customization-point interface. | Compiler | Version | Platform | Status | |----------|---------|----------|--------| | GCC | 13 + | Linux | Tested | -| Clang | 10 + | Linux, macOS | Tested | +| Clang | 18 + | Linux, macOS | Tested | | MSVC | 2022 + | Windows | Tested | Requires **CMake 3.20+** and a **C++20**-capable toolchain. diff --git a/VERSION b/VERSION index 6e8bf73..8f0916f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.0 +0.5.0 diff --git a/docs/FAQ.md b/docs/FAQ.md index 2603372..3d077a1 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,5 +1,12 @@ + + + +
graph-v3 logo + # Frequently Asked Questions +
+ > [← Back to Documentation Index](index.md) --- diff --git a/docs/assets/logo_text.svg b/docs/assets/logo_text.svg new file mode 100644 index 0000000..a9ca5ae --- /dev/null +++ b/docs/assets/logo_text.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + gr + ph + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + diff --git a/docs/contributing/algorithm-template.md b/docs/contributing/algorithm-template.md index 8770886..5bb38e5 100644 --- a/docs/contributing/algorithm-template.md +++ b/docs/contributing/algorithm-template.md @@ -1,6 +1,14 @@ + + + +
graph-v3 logo + # Algorithm Documentation Template -This template provides a standardized format for documenting graph algorithms in the graph-v3 library. Follow this structure to ensure consistency and completeness across all algorithm documentation. + +> This template provides a standardized format for documenting graph algorithms in the graph-v3 library. Follow this structure to ensure consistency and completeness across all algorithm documentation. + +
## Algorithm Name diff --git a/docs/contributing/architecture.md b/docs/contributing/architecture.md index 943d39a..78df404 100644 --- a/docs/contributing/architecture.md +++ b/docs/contributing/architecture.md @@ -1,7 +1,13 @@ + + + +
graph-v3 logo + # Architecture Guide > How graph-v3 is structured, and the design principles behind it. +
--- ## Directory Structure diff --git a/docs/contributing/coding-guidelines.md b/docs/contributing/coding-guidelines.md index c1c8ff2..a93c70e 100755 --- a/docs/contributing/coding-guidelines.md +++ b/docs/contributing/coding-guidelines.md @@ -1,6 +1,14 @@ + + + +
graph-v3 logo + # Coding Guidelines -These requirements apply to every graph-related component, including implementations, views, algorithms, and the data model. + +> These requirements apply to every graph-related component, including implementations, views, algorithms, and the data model. + +
## Core Architectural Commitments 1. The interface MUST be able to adapt to existing graph data structures. diff --git a/docs/contributing/cpo-implementation.md b/docs/contributing/cpo-implementation.md index af59920..9e65ad7 100644 --- a/docs/contributing/cpo-implementation.md +++ b/docs/contributing/cpo-implementation.md @@ -1,7 +1,14 @@ + + + +
graph-v3 logo + # CPO Implementation Guide > How Customization Point Objects work in graph-v3, how to implement new ones, and how to test them. +
+ **References:** - [Adjacency List Interface](../reference/adjacency-list-interface.md) — GCI spec for adjacency lists - [Edge List Interface](../reference/edge-list-interface.md) — GCI spec for edge lists diff --git a/docs/contributing/cpo-order.md b/docs/contributing/cpo-order.md index 273e784..b7f6510 100644 --- a/docs/contributing/cpo-order.md +++ b/docs/contributing/cpo-order.md @@ -1,6 +1,14 @@ + + + +
graph-v3 logo + # Graph CPO Implementation Order -This document specifies the correct implementation order for CPOs in `graph_cpo.hpp`, matching the reference implementation structure. + +> This document specifies the correct implementation order for CPOs in `graph_cpo.hpp`, matching the reference implementation structure. + +
## CPO Implementation Order diff --git a/docs/contributing/view-chaining.md b/docs/contributing/view-chaining.md index fbfa04c..7022f3a 100644 --- a/docs/contributing/view-chaining.md +++ b/docs/contributing/view-chaining.md @@ -1,5 +1,12 @@ + + + +
graph-v3 logo + # View Chaining — How It Works +
+ ## Overview Graph views in graph-v3 support **full C++20 range chaining with `std::views`**, including diff --git a/docs/contributing/view-template.md b/docs/contributing/view-template.md index bd2f4c2..151b689 100644 --- a/docs/contributing/view-template.md +++ b/docs/contributing/view-template.md @@ -1,7 +1,14 @@ + + + +
graph-v3 logo + # View Documentation Template -This template provides a standardized format for documenting graph views in the graph-v3 library. Follow this structure to ensure consistency and completeness across all view documentation. +> This template provides a standardized format for documenting graph views in the graph-v3 library. Follow this structure to ensure consistency and completeness across all view documentation. + +
## View Name ### Brief Description diff --git a/docs/getting-started.md b/docs/getting-started.md index 7f99b4e..9d8d42e 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,10 +1,18 @@ + + + +
graph-v3 logo + # Getting Started -> [← Back to Documentation Index](index.md) -This guide walks you through installing graph-v3, building your first graph, +> This guide walks you through installing graph-v3, building your first graph, running an algorithm, and working with edge lists. +
+ +> [← Back to Documentation Index](index.md) + --- ## 1. Requirements diff --git a/docs/index.md b/docs/index.md index 1ccbbb6..fa0ea14 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,7 +8,6 @@ - --- ## For Users diff --git a/docs/migration-from-v2.md b/docs/migration-from-v2.md index ef1ad7b..bb1db8b 100644 --- a/docs/migration-from-v2.md +++ b/docs/migration-from-v2.md @@ -1,5 +1,12 @@ + + + +
graph-v3 logo + # Migrating from graph-v2 to graph-v3 +
+ > [← Back to Documentation Index](index.md) ## Overview diff --git a/docs/reference/adjacency-list-interface.md b/docs/reference/adjacency-list-interface.md index 7f803e4..43ea361 100644 --- a/docs/reference/adjacency-list-interface.md +++ b/docs/reference/adjacency-list-interface.md @@ -1,10 +1,18 @@ + + + +
graph-v3 logo + # Adjacency List Interface Reference -> [← Back to Documentation Index](../index.md) · [User Guide: Adjacency Lists](../user-guide/adjacency-lists.md) -This is the formal **Graph Container Interface (GCI)** specification for +> This is the formal **Graph Container Interface (GCI)** specification for adjacency lists, derived from P1709/D3130. +
+ +> [← Back to Documentation Index](../index.md) · [User Guide: Adjacency Lists](../user-guide/adjacency-lists.md) + --- ## Concepts diff --git a/docs/reference/algorithm-complexity.md b/docs/reference/algorithm-complexity.md index 04d766a..8ce4100 100644 --- a/docs/reference/algorithm-complexity.md +++ b/docs/reference/algorithm-complexity.md @@ -1,10 +1,18 @@ + + + +
graph-v3 logo + # Algorithm Complexity Cheat Sheet -> [← Back to Documentation Index](../index.md) · [User Guide: Algorithms](../user-guide/algorithms.md) -Quick-reference for time complexity, space complexity, required concepts, and +> Quick-reference for time complexity, space complexity, required concepts, and headers for every algorithm in graph-v3. +
+ +> [← Back to Documentation Index](../index.md) · [User Guide: Algorithms](../user-guide/algorithms.md) + --- ## Shortest Paths diff --git a/docs/reference/concepts.md b/docs/reference/concepts.md index 9c0ede4..005c984 100644 --- a/docs/reference/concepts.md +++ b/docs/reference/concepts.md @@ -1,11 +1,19 @@ + + + +
graph-v3 logo + # Concepts Reference -> [← Back to Documentation Index](../index.md) · [CPO Reference](cpo-reference.md) -All graph concepts live in `namespace graph::adj_list` (adjacency lists) or +> All graph concepts live in `namespace graph::adj_list` (adjacency lists) or `namespace graph::edge_list` (edge lists) and are re-exported into `namespace graph` via ``. +
+ +> [← Back to Documentation Index](../index.md) · [CPO Reference](cpo-reference.md) + --- ## Adjacency List Concepts diff --git a/docs/reference/cpo-reference.md b/docs/reference/cpo-reference.md index 110b439..5964e09 100644 --- a/docs/reference/cpo-reference.md +++ b/docs/reference/cpo-reference.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # CPO Reference +
+ > [← Back to Documentation Index](../index.md) · [CPO Implementation Guide](../contributing/cpo-implementation.md) + **Customization Point Objects (CPOs)** are the primary API for querying graph structure. Each CPO resolves at compile time via a three-step priority: 1. Member function on the graph/edge type diff --git a/docs/reference/edge-list-interface.md b/docs/reference/edge-list-interface.md index 6766119..4946d8d 100644 --- a/docs/reference/edge-list-interface.md +++ b/docs/reference/edge-list-interface.md @@ -1,10 +1,17 @@ -# Edge List Interface Reference + + + +
graph-v3 logo -> [← Back to Documentation Index](../index.md) · [User Guide: Edge Lists](../user-guide/edge-lists.md) +# Edge List Interface Reference -This is the formal **Graph Container Interface (GCI)** specification for edge +> This is the formal **Graph Container Interface (GCI)** specification for edge lists, derived from P1709/D3130. +
+ +> [← Back to Documentation Index](../index.md) · [User Guide: Edge Lists](../user-guide/edge-lists.md) + --- ## Namespace diff --git a/docs/reference/edge-value-concepts.md b/docs/reference/edge-value-concepts.md index c86331b..a5dbf7a 100644 --- a/docs/reference/edge-value-concepts.md +++ b/docs/reference/edge-value-concepts.md @@ -1,9 +1,14 @@ -# Edge Value Type Concepts and Pattern Detection + + + +
graph-v3 logo -## Overview +# Edge Value Type Concepts and Pattern Detection This document describes the concepts and type traits added to `descriptor.hpp` for detecting and categorizing edge value types used in graph descriptors. +
+ ## Concepts ### Edge Value Type Patterns diff --git a/docs/reference/type-aliases.md b/docs/reference/type-aliases.md index 08ae60a..61d401b 100644 --- a/docs/reference/type-aliases.md +++ b/docs/reference/type-aliases.md @@ -1,8 +1,16 @@ + + + +
graph-v3 logo + # Type Aliases Reference + +
+ > [← Back to Documentation Index](../index.md) · [CPO Reference](cpo-reference.md) -All type aliases below are available in `namespace graph` after +> All type aliases below are available in `namespace graph` after `#include `. They are re-exported from `namespace graph::adj_list`. diff --git a/docs/reference/vertex-patterns.md b/docs/reference/vertex-patterns.md index 9d5b8e5..3496dc5 100644 --- a/docs/reference/vertex-patterns.md +++ b/docs/reference/vertex-patterns.md @@ -1,12 +1,20 @@ + + + +
graph-v3 logo + # Vertex Patterns Reference -> [← Back to Documentation Index](../index.md) · [User Guide: Adjacency Lists](../user-guide/adjacency-lists.md) -This page documents two complementary concept families for vertex types: +> This page documents two complementary concept families for vertex types: **inner value patterns** (how vertex data is accessed) and **storage patterns** (how vertex IDs are stored/extracted). Both families live in `graph::adj_list::detail` and are re-exported via ``. +
+ +> [← Back to Documentation Index](../index.md) · [User Guide: Adjacency Lists](../user-guide/adjacency-lists.md) + --- ## Inner Value Patterns diff --git a/docs/standardization.md b/docs/standardization.md index a26718a..7b17ce1 100644 --- a/docs/standardization.md +++ b/docs/standardization.md @@ -1,7 +1,16 @@ + + + +
graph-v3 logo + # C++ Standardization -graph-v3 is the reference implementation for a proposed graph library for the **ISO C++ Standard (C++26/C++29)**. -The proposal is developed under the [WG21](https://isocpp.org/std/the-committee) umbrella and targets the Standard +> graph-v3 is the reference implementation for a proposed graph library for the **ISO C++ Standard (C++29/C++32)**. + +
+--- + +graph-v3 is developed under the [WG21](https://isocpp.org/std/the-committee) umbrella and targets the Standard Library Evolution Working Group (LEWG). > The previous reference implementation is [graph-v2](https://github.com/stdgraph/graph-v2). diff --git a/docs/status/coverage.md b/docs/status/coverage.md index c3febd2..b4500ba 100644 --- a/docs/status/coverage.md +++ b/docs/status/coverage.md @@ -1,6 +1,14 @@ + + + +
graph-v3 logo + # Code Coverage Report +
+ > **Generated:** 2026-02-23 | **Compiler:** GCC 15.1.0 | **Preset:** `linux-gcc-coverage` + > **Tests:** 4343 passed, 0 failed (100% pass rate) > **Overall line coverage:** 96.3% (3624 / 3764 lines) > **Overall function coverage:** 91.8% (29030 / 31639 functions) diff --git a/docs/status/implementation_matrix.md b/docs/status/implementation_matrix.md index 8b0dae8..aee159e 100644 --- a/docs/status/implementation_matrix.md +++ b/docs/status/implementation_matrix.md @@ -1,6 +1,14 @@ + + + +
graph-v3 logo + # Implementation Matrix > **Purpose:** Single source of truth for what is implemented. Generated from the source tree. + +
+ > All user-facing documentation must reference this file rather than maintaining independent lists. --- diff --git a/docs/status/metrics.md b/docs/status/metrics.md index 319446c..d10b98c 100644 --- a/docs/status/metrics.md +++ b/docs/status/metrics.md @@ -1,6 +1,14 @@ + + + +
graph-v3 logo + # Canonical Metrics > **Single source of truth for all user-facing counts.** + +
+ > All documentation (README, docs/index.md, etc.) must reference these values > rather than maintaining independent numbers. Re-run `ctest` and update when > the implementation surface changes. diff --git a/docs/user-guide/adjacency-lists.md b/docs/user-guide/adjacency-lists.md index 8686634..de3b4c4 100644 --- a/docs/user-guide/adjacency-lists.md +++ b/docs/user-guide/adjacency-lists.md @@ -1,12 +1,20 @@ + + + +
graph-v3 logo + # Adjacency Lists -> [← Back to Documentation Index](../index.md) -An **adjacency list** is the primary graph abstraction in graph-v3. +> An **adjacency list** is the primary graph abstraction in graph-v3. It models a graph as a *range of vertices*, where each vertex owns a *range of outgoing edges*. This "range-of-ranges" view maps directly to standard containers — a `std::vector>` is already a valid adjacency list. +
+ +> [← Back to Documentation Index](../index.md) + --- ## 1. What Is an Adjacency List? diff --git a/docs/user-guide/algorithms.md b/docs/user-guide/algorithms.md index 4e3da56..faa0b74 100644 --- a/docs/user-guide/algorithms.md +++ b/docs/user-guide/algorithms.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Algorithms +
+ > [← Back to Documentation Index](../index.md) +## Table of Contents - [Overview](#overview) - [Algorithm Catalog](#algorithm-catalog) - [By Category](#by-category) diff --git a/docs/user-guide/algorithms/articulation_points.md b/docs/user-guide/algorithms/articulation_points.md index 39d8c72..6ff0d5d 100644 --- a/docs/user-guide/algorithms/articulation_points.md +++ b/docs/user-guide/algorithms/articulation_points.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Articulation Points +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/bellman_ford.md b/docs/user-guide/algorithms/bellman_ford.md index 3dfa685..331a19f 100644 --- a/docs/user-guide/algorithms/bellman_ford.md +++ b/docs/user-guide/algorithms/bellman_ford.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Bellman-Ford Shortest Paths +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/bfs.md b/docs/user-guide/algorithms/bfs.md index 1a3177e..df34e7c 100644 --- a/docs/user-guide/algorithms/bfs.md +++ b/docs/user-guide/algorithms/bfs.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Breadth-First Search +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/biconnected_components.md b/docs/user-guide/algorithms/biconnected_components.md index 5563af7..0380eed 100644 --- a/docs/user-guide/algorithms/biconnected_components.md +++ b/docs/user-guide/algorithms/biconnected_components.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Biconnected Components +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/connected_components.md b/docs/user-guide/algorithms/connected_components.md index bd9ab1f..fe242b3 100644 --- a/docs/user-guide/algorithms/connected_components.md +++ b/docs/user-guide/algorithms/connected_components.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Connected Components +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/dfs.md b/docs/user-guide/algorithms/dfs.md index d18d763..08fa6ae 100644 --- a/docs/user-guide/algorithms/dfs.md +++ b/docs/user-guide/algorithms/dfs.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Depth-First Search +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/dijkstra.md b/docs/user-guide/algorithms/dijkstra.md index 5e4d053..72e76a8 100644 --- a/docs/user-guide/algorithms/dijkstra.md +++ b/docs/user-guide/algorithms/dijkstra.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Dijkstra's Shortest Paths +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/jaccard.md b/docs/user-guide/algorithms/jaccard.md index b392038..5bc5380 100644 --- a/docs/user-guide/algorithms/jaccard.md +++ b/docs/user-guide/algorithms/jaccard.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Jaccard Coefficient +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/label_propagation.md b/docs/user-guide/algorithms/label_propagation.md index df23596..eb50f92 100644 --- a/docs/user-guide/algorithms/label_propagation.md +++ b/docs/user-guide/algorithms/label_propagation.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Label Propagation +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/mis.md b/docs/user-guide/algorithms/mis.md index 644d955..da653f1 100644 --- a/docs/user-guide/algorithms/mis.md +++ b/docs/user-guide/algorithms/mis.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Maximal Independent Set +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/mst.md b/docs/user-guide/algorithms/mst.md index 47f30ae..2ab0e4f 100644 --- a/docs/user-guide/algorithms/mst.md +++ b/docs/user-guide/algorithms/mst.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Minimum Spanning Tree +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/topological_sort.md b/docs/user-guide/algorithms/topological_sort.md index 0ddf049..c2ea6fc 100644 --- a/docs/user-guide/algorithms/topological_sort.md +++ b/docs/user-guide/algorithms/topological_sort.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Topological Sort +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/algorithms/triangle_count.md b/docs/user-guide/algorithms/triangle_count.md index 78f01f8..3099071 100644 --- a/docs/user-guide/algorithms/triangle_count.md +++ b/docs/user-guide/algorithms/triangle_count.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Triangle Count +
+ > [← Back to Algorithm Catalog](../algorithms.md) +## Table of Contents - [Overview](#overview) - [When to Use](#when-to-use) - [Include](#include) diff --git a/docs/user-guide/bidirectional-access.md b/docs/user-guide/bidirectional-access.md index 012e293..3109cf0 100644 --- a/docs/user-guide/bidirectional-access.md +++ b/docs/user-guide/bidirectional-access.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Bidirectional Edge Access +
+ > [← Back to Documentation Index](../index.md) · [Views](views.md) · [Containers](containers.md) +## Table of Contents - [Overview](#overview) - [Creating a Bidirectional Graph](#creating-a-bidirectional-graph) - [Incoming Edge CPOs](#incoming-edge-cpos) diff --git a/docs/user-guide/containers.md b/docs/user-guide/containers.md index 1fc4a1f..3e70f08 100644 --- a/docs/user-guide/containers.md +++ b/docs/user-guide/containers.md @@ -1,10 +1,18 @@ + + + +
graph-v3 logo + # Graph Containers -> [← Back to Documentation Index](../index.md) -graph-v3 ships three purpose-built graph containers. Each satisfies the +> graph-v3 ships three purpose-built graph containers. Each satisfies the adjacency list concepts so all CPOs, views, and algorithms work interchangeably. +
+ +> [← Back to Documentation Index](../index.md) + | Container | Storage | Mutability | Best for | |-----------|---------|------------|----------| | [`dynamic_graph`](#1-dynamic_graph) | Traits-configured vertex + edge containers | Mutable | General purpose, flexible container choice | diff --git a/docs/user-guide/edge-lists.md b/docs/user-guide/edge-lists.md index 467dd8f..1b78d88 100644 --- a/docs/user-guide/edge-lists.md +++ b/docs/user-guide/edge-lists.md @@ -1,12 +1,20 @@ + + + +
graph-v3 logo + # Edge Lists -> [← Back to Documentation Index](../index.md) -An **edge list** is a flat range of sourced edges — a simpler alternative to +> An **edge list** is a flat range of sourced edges — a simpler alternative to the adjacency list when you only need to enumerate edges without fast per-vertex access. Any `std::ranges::input_range` whose elements expose `source_id` and `target_id` qualifies. +
+ +> [← Back to Documentation Index](../index.md) + --- ## 1. What Is an Edge List? diff --git a/docs/user-guide/views.md b/docs/user-guide/views.md index 973aa5d..a239ff2 100644 --- a/docs/user-guide/views.md +++ b/docs/user-guide/views.md @@ -1,7 +1,15 @@ + + + +
graph-v3 logo + # Graph Views Documentation +
+ > [← Back to Documentation Index](../index.md) +## Table of Contents - [Overview](#overview) - [Quick Start](#quick-start) - [Basic Views](#basic-views) — vertexlist, incidence, neighbors, edgelist