Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

LCA.h
Go to the documentation of this file.
1 
34 #pragma once
35 
36 #include <ogdf/basic/Array.h>
37 #include <ogdf/basic/Graph.h>
38 #include <ogdf/basic/basic.h>
39 
40 namespace ogdf {
41 
55 public:
65  explicit LCA(const Graph& G, node root = nullptr);
66 
73  node call(node u, node v) const;
74 
76  int level(node v) const { return m_n == 1 ? 0 : m_level[m_representative[v]]; }
77 
78 private:
79  const node m_root;
80  const int m_n;
81  const int m_len;
82  const int m_rangeJ;
87 
92  void dfs(const Graph& G, node root);
93 
98  void buildTable();
99 
105  const int& sparseTable(int i, int j) const { return m_table[i * m_rangeJ + j - 1]; }
107 
108  int& sparseTable(int i, int j) { return m_table[i * m_rangeJ + j - 1]; }
109 
111 
116  int rmq(int u, int v) const;
117 };
118 
119 }
ogdf
The namespace for all OGDF objects.
Definition: multilevelmixer.cpp:39
ogdf::LCA::level
int level(node v) const
Returns the level of a node. The level of the root is 0.
Definition: LCA.h:76
Graph.h
Includes declaration of graph class.
ogdf::LCA::sparseTable
int & sparseTable(int i, int j)
Definition: LCA.h:108
ogdf::LCA::m_root
const node m_root
the root of the tree
Definition: LCA.h:79
ogdf::LCA::m_n
const int m_n
number of nodes in graph
Definition: LCA.h:80
ogdf::LCA::m_representative
NodeArray< int > m_representative
Euler[Representative[v]] = v.
Definition: LCA.h:84
ogdf::Array< node >
ogdf::LCA::m_rangeJ
const int m_rangeJ
always floor(log(m_len)) (size of a row in the table)
Definition: LCA.h:82
ogdf::LCA::m_table
Array< int > m_table
preprocessed M[i,j] array
Definition: LCA.h:86
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:658
ogdf::LCA
Implements the <O(n log n), O(1)>-time "sparse table" algorithm by Bender and Farach-Colton to comput...
Definition: LCA.h:54
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:869
basic.h
Basic declarations, included by all source files.
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
Array.h
Declaration and implementation of Array class and Array algorithms.
ogdf::LCA::m_level
Array< int > m_level
L[i] is distance of node E[i] from root.
Definition: LCA.h:85
ogdf::LCA::m_len
const int m_len
length of the RMQ array (always 2 m_n - 1)
Definition: LCA.h:81
ogdf::LCA::m_euler
Array< node > m_euler
Euler[i] is i-th node visited in Euler Tour.
Definition: LCA.h:83
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:240