You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: include/hgl/hypergraph.hpp
-4Lines changed: 0 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -210,10 +210,6 @@ struct to_impl;
210
210
/// | HypergraphTraits | The core configuration type specifying the behavior and representation of the hypergraph. | [**c_instantiation_of<hypergraph_traits>**](gl_concepts.md#gl-traits-c-instantiation-of) |
211
211
///
212
212
/// ### See Also
213
-
/// - @ref hgl::hypergraph_traits "hypergraph_traits" for configuring the underlying properties and tags.
214
-
/// - @ref gl::io::options_manip "options_manip" for custom stream formatting options.
215
-
///
216
-
/// ### See Also
217
213
/// - @ref hgl::undirected_hypergraph "undirected_hypergraph" : Convenience alias for undirected hypergraphs.
218
214
/// - @ref hgl::bf_directed_hypergraph "bf_directed_hypergraph" : Convenience alias for BF-directed hypergraphs.
219
215
/// - @ref hgl::clone "clone" : Create a deep copy of a hypergraph.
Copy file name to clipboardExpand all lines: include/hgl/impl/impl_tags.hpp
+30Lines changed: 30 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,14 @@ namespace hgl::impl {
19
19
/// @ingroup HGL-Core
20
20
/// @headerfile hgl/impl/impl_tags.hpp
21
21
/// @brief Tag struct for the standard incidence list hypergraph implementation.
22
+
///
23
+
/// ### Layout Implications
24
+
/// The chosen layout significantly impacts memory usage and query performance:
25
+
///
26
+
/// - @ref hgl::impl::bidirectional_t "bidirectional_t" (Default): Maintains two internal lists (vertex-to-hyperedges and hyperedge-to-vertices). Provides optimal $O(1)$ degree/size lookups and fast traversals in both directions at the cost of doubled memory consumption.
27
+
/// - @ref hgl::impl::vertex_major_t "vertex_major_t": Maintains only a vertex-to-hyperedges list. Highly memory efficient and fast for querying vertex degrees or incident hyperedge sets, but querying hyperedge sizes or incident vertex setss requires expensive full-hypergraph scans.
28
+
/// - @ref hgl::impl::hyperedge_major_t "hyperedge_major_t": Maintains only a hyperedge-to-vertices list. Memory efficient and fast for hyperedge-centric queries, but querying vertex degrees or incident hyperedge sets requires full-hypergraph scans.
29
+
///
22
30
/// @tparam LayoutTag Specifies the memory layout orientation for the underlying data structure.
23
31
/// @tparam IdType The underlying integer type used for identifiers.
/// @brief Tag struct for the flattened incidence list hypergraph implementation.
51
+
///
52
+
/// ### Layout Implications
53
+
/// The chosen layout significantly impacts memory usage and query performance:
54
+
///
55
+
/// - @ref hgl::impl::bidirectional_t "bidirectional_t" (Default): Maintains two internal flattened lists (vertex-to-hyperedges and hyperedge-to-vertices). Provides optimal $O(1)$ degree/size lookups and fast traversals in both directions at the cost of doubled memory consumption.
56
+
/// - @ref hgl::impl::vertex_major_t "vertex_major_t": Maintains only a vertex-to-hyperedges flattened list. Highly memory efficient and fast for querying vertex degrees or incident hyperedge sets, but querying hyperedge sizes or incident vertex sets requires expensive full-graph scans.
57
+
/// - @ref hgl::impl::hyperedge_major_t "hyperedge_major_t": Maintains only a hyperedge-to-vertices flattened list. Memory efficient and fast for hyperedge-centric queries, but querying vertex degrees or incident hyperedge sets requires full-graph scans.
58
+
///
43
59
/// @tparam LayoutTag Specifies the memory layout orientation for the underlying data structure.
44
60
/// @tparam IdType The underlying integer type used for identifiers.
45
61
/// @see @ref gl::flat_jagged_vector "flat_jagged_vector" for the data structure used for the underlying model implementation.
@@ -62,6 +78,13 @@ struct flat_list_t {
62
78
/// @ingroup HGL-Core
63
79
/// @headerfile hgl/impl/impl_tags.hpp
64
80
/// @brief Tag struct for the standard incidence matrix hypergraph implementation.
81
+
///
82
+
/// ### Layout Implications
83
+
/// Matrix implementations strictly require an asymmetric layout tag to define the row and column dimensions of the underlying matrix:
84
+
///
85
+
/// - @ref hgl::impl::hyperedge_major_t "hyperedge_major_t" (Default): Stores a \f$\vert E \vert \times \vert V \vert\f$ matrix, where hyperedges are mapped to rows and vertices to columns. Retrieving the vertices incident to a specific hyperedge translates to a fast, cache-friendly contiguous memory read across a single row.
86
+
/// - @ref hgl::impl::vertex_major_t "vertex_major_t": Stores a \f$\vert V \vert \times \vert E \vert\f$ matrix, where vertices are mapped to rows and hyperedges to columns. Retrieving the hyperedges incident to a specific vertex translates to a fast, contiguous memory read.
87
+
///
65
88
/// @tparam LayoutTag Specifies the memory layout orientation for the underlying data structure (must be asymmetric).
66
89
/// @tparam IdType The underlying integer type used for identifiers.
/// @brief Tag struct for the flattened incidence matrix hypergraph implementation.
109
+
///
110
+
/// ### Layout Implications
111
+
/// Matrix implementations strictly require an asymmetric layout tag to define the row and column dimensions of the underlying matrix:
112
+
///
113
+
/// - @ref hgl::impl::hyperedge_major_t "hyperedge_major_t" (Default): Stores a \f$\vert E \vert \times \vert V \vert\f$ flat matrix, where hyperedges are mapped to rows and vertices to columns. Retrieving the vertices incident to a specific hyperedge translates to a fast, cache-friendly contiguous memory read across a single row.
114
+
/// - @ref hgl::impl::vertex_major_t "vertex_major_t": Stores a \f$\vert V \vert \times \vert E \vert\f$ flat matrix, where vertices are mapped to rows and hyperedges to columns. Retrieving the hyperedges incident to a specific vertex translates to a fast, contiguous memory read.
115
+
///
86
116
/// @tparam LayoutTag Specifies the memory layout orientation for the underlying data structure (must be asymmetric).
87
117
/// @tparam IdType The underlying integer type used for identifiers.
88
118
/// @see @ref gl::flat_matrix "flat_matrix" for the data structure used for the underlying model implementation.
0 commit comments