MySQL 9.1.0
Source Code Documentation
|
Definition of an undirected (join) hypergraph. More...
#include <stddef.h>
#include <algorithm>
#include <bit>
#include <vector>
#include "sql/join_optimizer/node_map.h"
#include "sql/mem_root_array.h"
Go to the source code of this file.
Classes | |
struct | hypergraph::Node |
struct | hypergraph::Hyperedge |
struct | hypergraph::Hypergraph |
Namespaces | |
namespace | hypergraph |
Functions | |
bool | hypergraph::IsSimpleEdge (NodeMap left, NodeMap right) |
Is an edge between "left" and "right" a simple edge? More... | |
Definition of an undirected (join) hypergraph.
A hypergraph in this context is an undirected graph consisting of nodes and hyperedges, where hyperedges are edges that can have more than one node in each side of the edge. For instance, in a graph with nodes {A, B, C, D}, a regular undirected edge could be e.g. (A,B), while in a hypergraph, an edge such as ({A,C},B) would also be allowed. Note that this definition of hypergraphs differs from that on Wikipedia.
The main user of Hypergraph is subgraph_enumeration.h.