Tulip
5.7.0
Large graphs analysis and drawing

#include <AcyclicTest.h>
Static Public Member Functions  
static bool  acyclicTest (const Graph *graph, std::vector< edge > *obstructionEdges=nullptr) 
static bool  isAcyclic (const Graph *graph) 
static void  makeAcyclic (Graph *graph, std::vector< edge > &reversed, std::vector< tlp::SelfLoops > &selfLoops) 
This class provides tests for acyclicity on a graph. Results are cached in a map of graphs and result. This class observes the graphs that have been tested to remove the result from this graph if it is modified. This forces the use of the singleton pattern instead of simply using static functions/members.
Definition at line 60 of file AcyclicTest.h.

static 
Returns whether the graph is acyclic. Collection of obstruction edges takes a bit of time, as iteration over the graph must continue even when it has been found cyclic.
graph  the graph to test for acyclicity 
obstructionEdges  If not null, will be filled with edges that cause the graph to be cyclic. Defaults to 0. 

static 
Checks whether the graph is acyclic or not. The result is cached so subsequent calls are in O(1).
graph  The graph on which to perform the acyclicity test. 

static 
Makes the graph acyclic by removing edges.
graph  The graph to make acyclic. 
reversed  The edges that were reversed during the process. 
selfLoops  Sets of two nodes and three edges that were added instead of self loops. 