2323
2424## 📣 Goal
2525
26- ` ultragraph ` provides a high-performance, ergonomic, and directed graph data structure. It is designed around a
26+ ultragraph provides a high-performance, ergonomic, and directed graph data structure. It is designed around a
2727state-machine architecture that offers both a flexible, mutable graph and a blazing-fast, immutable graph, allowing
2828users to choose the right tool for the right phase of their application.
2929
@@ -94,17 +94,17 @@ calculation based on the mean time.)*
9494
9595## Performance Design
9696
97- The design of ` next_graph ` 's static analysis structure, ` CsmGraph ` , is based on the principles for high-performance
97+ The design of ` ultragraph ` 's static analysis structure, ` CsmGraph ` , is based on the principles for high-performance
9898sparse graph representation detailed in the paper "NWHy: A Framework for Hypergraph Analytics" (Liu et al.).
99- Specifically, ` next_graph ` adopts the paper's foundational model of using two mutually-indexed Compressed Sparse Row (
99+ Specifically, ` ultragraph ` adopts the paper's foundational model of using two mutually-indexed Compressed Sparse Row (
100100CSR) structures to enable efficient, ` O(degree) ` bidirectional traversal—one for forward (outbound) edges and one for
101101the transposed graph for backward (inbound) edges.
102102
103- However, ` next_graph ` introduces three significant architectural enhancements over this baseline to provide optimal
103+ However, ` ultragraph ` introduces three significant architectural enhancements over this baseline to provide optimal
104104performance and to support the specific requirements of dynamically evolving systems.
105105
1061061 . ** Struct of Arrays (SoA) Memory Layout:** The internal CSR adjacency structures are implemented using a Struct of
107- Arrays layout. Instead of a single ` Vec<(target, weight)> ` , ` next_graph ` uses two parallel vectors: ` Vec<target> ` and
107+ Arrays layout. Instead of a single ` Vec<(target, weight)> ` , ` ultragraph ` uses two parallel vectors: ` Vec<target> ` and
108108 ` Vec<weight> ` . This memory layout improves data locality for topology-only algorithms (e.g., reachability, cycle
109109 detection). By iterating exclusively over the ` targets ` vector, these algorithms avoid loading unused edge weight
110110 data into the CPU cache, which minimizes memory bandwidth usage and reduces cache pollution.
@@ -116,7 +116,7 @@ performance and to support the specific requirements of dynamically evolving sys
116116 performance across varied graph structures.
117117
1181183 . ** Formal Evolutionary Lifecycle:** The most significant architectural addition is a formal two-state model for graph
119- evolution. ` next_graph ` defines two distinct representations: a mutable ` DynamicGraph ` optimized for efficient ` O(1) `
119+ evolution. ` ultragraph ` defines two distinct representations: a mutable ` DynamicGraph ` optimized for efficient ` O(1) `
120120 node and edge additions, and the immutable ` CsmGraph ` optimized for analysis. The library provides high-performance
121121 ` O(V + E) ` ` .freeze() ` and ` .unfreeze() ` operations to transition between these states. This two-state model directly
122122 supports systems that require dynamic structural evolution, such as those modeling emergent causality, by providing a
0 commit comments