45namespace cluster_planarity {
76 <<
"\tReturn=" << (ret ?
"(error)" :
"(ok)") <<
"\n";
90 while (v != parent[v]) {
199 for (
int i = num; i-- > 0;) {
Declaration and implementation of ArrayBuffer class.
Declaration of the wrapper class of the Boyer-Myrvold planarity test.
Declaration of the CPlanarityMaster class for the Branch&Cut algorithm for c-planarity testing via an...
Abstract base class for all branching rules.
The master of the optimization.
BranchRule * branchRule() const
Returns a pointer to the branching rule of the subproblem.
int id() const
Returns the identity number of the subproblem.
Variable * variable(int i) const
Returns a pointer to the i-th active variable.
virtual int optimize()
Performs the optimization of the subproblem.
virtual int addCons(ArrayBuffer< Constraint * > &constraints, Pool< Constraint, Variable > *pool=nullptr, ArrayBuffer< bool > *keepInPool=nullptr, ArrayBuffer< double > *rank=nullptr)
Tries to add new constraints to the constraint buffer and a pool.
double dualBound() const
Returns a bound which is "better" than the optimal solution of the subproblem w.r....
virtual int constraintPoolSeparation(int ranking=0, Pool< Constraint, Variable > *pool=nullptr, double minViolation=0.001)
Tries to generate inactive constraints from a pool.
Master * master_
A pointer to the corresponding master of the optimization.
virtual bool removeNonLiftableCons()
virtual int addVars(ArrayBuffer< Variable * > &variables, Pool< Variable, Constraint > *pool=nullptr, ArrayBuffer< bool > *keepInPool=nullptr, ArrayBuffer< double > *rank=nullptr)
Tries to add new variables to the variable buffer and a pool.
const Sub * father() const
Returns a pointer to the father of the subproblem in the branch-and-bound tree.
An array that keeps track of the number of inserted elements; also usable as an efficient stack.
INDEX size() const
Returns number of elements in the buffer.
Dynamic arrays indexed with clusters.
Representation of clusters in a clustered graph.
Representation of clustered graphs.
Dynamic arrays indexed with edges.
Copies of graphs supporting edge splitting.
Doubly linked lists (maintaining the length of the list).
static std::ostream & slout(Level level=Level::Default)
stream for logging-output (global)
Dynamic arrays indexed with nodes.
Class for the representation of nodes.
Encapsulates a pointer to an ogdf::SList element.
int createVariablesForBufferedConstraints()
virtual int improve(double &primalValue) override
Can be redefined in order to implement primal heuristics for finding feasible solutions.
CPlanaritySub(abacus::Master *master, abacus::Sub *father, abacus::BranchRule *branchRule, List< abacus::Constraint * > &criticalConstraints)
void childClusterSpanningTree(GraphCopy &GC, List< edgeValue > &clusterEdges, List< NodePair > &MSTEdges)
CPlanaritySub(abacus::Master *master)
ArrayBuffer< abacus::Constraint * > bufferedForCreation
int separateRealO(double minViolate)
virtual int solveLp() override
Solves the LP-relaxation of the subproblem.
int separateCutPool(abacus::StandardPool< abacus::Constraint, abacus::Variable > *pool, double minViolation)
int addPoolCons(ArrayBuffer< abacus::Constraint * > &cons, abacus::StandardPool< abacus::Constraint, abacus::Variable > *pool)
Adds the given constraints to the given pool.
List< abacus::Constraint * > criticalSinceBranching
void kuratowskiSupportGraph(GraphCopy &support, double low, double high)
virtual int separate() override
Must be redefined in derived classes for the generation of cutting planes.
node getRepresentative(node v, NodeArray< node > &parent)
run through the pointer list parent and return the representative i.e. the node with parent[v] == v
bool checkCConnectivityOld(const GraphCopy &support)
bool checkCConnectivity(const GraphCopy &support)
Checks if the cluster induced graphs and their complement are connected in the current solution.
int addCutCons(ArrayBuffer< abacus::Constraint * > cons)
Adds the given constraints to the connectivity cut pool.
int separateConnPool(double minViolation)
int addKuraCons(ArrayBuffer< abacus::Constraint * > cons)
Adds the given constraints to the planarity cut pool.
virtual int selectBranchingVariableCandidates(ArrayBuffer< int > &candidates) override
Selects candidates for branching variables.
virtual int selectBranchingVariable(int &variable) override
Chooses a branching variable.
CPlanarityMaster * master()
void connectivitySupportGraph(GraphCopy &support, EdgeArray< double > &weight)
bool detectedInfeasibility
virtual int optimize() override
Performs the optimization of the subproblem.
int separateReal(double minViolate)
these functions are mainly reporting to let abacus think everthing is normal.
int getArrayIndex(double lpValue)
double heuristicImprovePrimalBound(List< NodePair > &connectionEdges)
int clusterBags(ClusterGraph &CG, cluster c)
int separateKuraPool(double minViolation)
void clusterSpanningTree(ClusterGraph &C, cluster c, ClusterArray< List< NodePair > > &treeEdges, ClusterArray< List< edgeValue > > &clusterEdges)
virtual bool feasible() override
Must check the feasibility of a solution of the LP-relaxation.
void intSolutionInducedGraph(GraphCopy &support)
virtual abacus::Sub * generateSon(abacus::BranchRule *rule) override
Returns a pointer to an object of a problem specific subproblem, which is generated from the current ...
void myAddVars(ArrayBuffer< abacus::Variable * > &b)
virtual int makeFeasible() override
The default implementation of makeFeasible()does nothing.
KuraSize subdivisionLefthandSide(SListConstIterator< KuratowskiWrapper > it, GraphCopy *gc, SListPure< NodePair > &subDivOrig)
virtual int pricing() override
Should generate inactive variables which do not price out correctly.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.