Tulip  5.2.1 Large graphs analysis and drawing
tlp::AcyclicTest Class Reference

`#include <AcyclicTest.h>`

Inheritance diagram for tlp::AcyclicTest:
Collaboration diagram for tlp::AcyclicTest:

## 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)

## Detailed Description

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 58 of file AcyclicTest.h.

## ◆ acyclicTest()

 static bool tlp::AcyclicTest::acyclicTest ( const Graph * graph, std::vector< edge > * obstructionEdges = `nullptr` )
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.

Parameters
 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.
Returns
bool

## ◆ isAcyclic()

 static bool tlp::AcyclicTest::isAcyclic ( const Graph * graph )
static

Checks whether the graph is acyclic or not. The result is cached so subsequent calls are in O(1).

Parameters
 graph The graph on which to perform the acyclicity test.
Returns
bool True if the graph is acyclic, false otherwise.

## ◆ makeAcyclic()

 static void tlp::AcyclicTest::makeAcyclic ( Graph * graph, std::vector< edge > & reversed, std::vector< tlp::SelfLoops > & selfLoops )
static

Makes the graph acyclic by removing edges.

Parameters
 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.
Returns
void