MySQL 9.0.0
Source Code Documentation
hypergraph.h File Reference

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.


struct  hypergraph::Node
struct  hypergraph::Hyperedge
struct  hypergraph::Hypergraph


namespace  hypergraph


bool hypergraph::IsSimpleEdge (NodeMap left, NodeMap right)
 Is an edge between "left" and "right" a simple edge? More...

Detailed Description

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.