MySQL 9.1.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.

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...
 

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.