CMR  1.3.0
Loading...
Searching...
No Matches
Classes | Typedefs | Enumerations | Functions
seymour.h File Reference

Functionality for Seymour decomposition. More...

#include <cmr/env.h>
#include <cmr/matrix.h>
#include <cmr/matroid.h>
#include <cmr/graph.h>
#include <cmr/network.h>
#include <cmr/series_parallel.h>
#include <stdio.h>
#include <stdint.h>

Go to the source code of this file.

Classes

struct  CMR_SEYMOUR_PARAMS
 Parameters for Seymour decomposition algorithm. More...
 
struct  CMR_SEYMOUR_STATS
 Statistics for Seymour decomposition algorithm. More...
 

Typedefs

typedef struct _CMR_SEYMOUR_NODE CMR_SEYMOUR_NODE
 

Enumerations

enum  CMR_SEYMOUR_DECOMPOSE_FLAG {
  CMR_SEYMOUR_DECOMPOSE_FLAG_DISTRIBUTED_MASK = 15 , CMR_SEYMOUR_DECOMPOSE_FLAG_DISTRIBUTED_PIVOT = 1 , CMR_SEYMOUR_DECOMPOSE_FLAG_DISTRIBUTED_DELTASUM = 2 , CMR_SEYMOUR_DECOMPOSE_FLAG_DISTRIBUTED_YSUM = 3 ,
  CMR_SEYMOUR_DECOMPOSE_FLAG_CONCENTRATED_MASK = 240 , CMR_SEYMOUR_DECOMPOSE_FLAG_CONCENTRATED_PIVOT = 16 , CMR_SEYMOUR_DECOMPOSE_FLAG_CONCENTRATED_THREESUM = 32 , CMR_SEYMOUR_DECOMPOSE_FLAG_SEYMOUR ,
  CMR_SEYMOUR_DECOMPOSE_FLAG_TRUEMPER
}
 Flags that indicate how to decompose as a \( 3 \)-sum. More...
 
enum  CMR_SEYMOUR_NODE_TYPE {
  CMR_SEYMOUR_NODE_TYPE_IRREGULAR = -1 , CMR_SEYMOUR_NODE_TYPE_UNKNOWN = 0 , CMR_SEYMOUR_NODE_TYPE_SERIES_PARALLEL = 1 , CMR_SEYMOUR_NODE_TYPE_PIVOTS = 2 ,
  CMR_SEYMOUR_NODE_TYPE_GRAPH = 3 , CMR_SEYMOUR_NODE_TYPE_COGRAPH = 4 , CMR_SEYMOUR_NODE_TYPE_PLANAR = 5 , CMR_SEYMOUR_NODE_TYPE_R10 = 6 ,
  CMR_SEYMOUR_NODE_TYPE_ONESUM = 7 , CMR_SEYMOUR_NODE_TYPE_TWOSUM = 8 , CMR_SEYMOUR_NODE_TYPE_DELTASUM = 9 , CMR_SEYMOUR_NODE_TYPE_THREESUM = 10 ,
  CMR_SEYMOUR_NODE_TYPE_YSUM = 11
}
 

Functions

CMR_EXPORT CMR_ERROR CMRseymourParamsInit (CMR_SEYMOUR_PARAMS *params)
 Initializes the default parameters for regularity testing.
 
CMR_EXPORT CMR_ERROR CMRseymourStatsInit (CMR_SEYMOUR_STATS *stats)
 Initializes all statistics for Seymour decomposition computations.
 
CMR_EXPORT CMR_ERROR CMRseymourStatsPrint (FILE *stream, CMR_SEYMOUR_STATS *stats, const char *prefix)
 Prints statistics for Seymour decomposition computations.
 
CMR_EXPORT bool CMRseymourIsTernary (CMR_SEYMOUR_NODE *node)
 Returns true iff the decomposition is over \( \mathbb{F}_3 \).
 
CMR_EXPORT bool CMRseymourThreeSumDistributedRanks (CMR_SEYMOUR_NODE *node)
 Returns true iff the 3-sum decomposition node has \( 3 \)-separation with two rank-1 matrices.
 
CMR_EXPORT bool CMRseymourThreeSumConcentratedRank (CMR_SEYMOUR_NODE *node)
 Returns true iff the 3-sum decomposition node has \( 3 \)-separation with one rank-2 matrix.
 
CMR_EXPORT bool CMRseymourHasTranspose (CMR_SEYMOUR_NODE *node)
 Returns true iff the transposed matrix of the decomposition node dec is stored.
 
CMR_EXPORT CMR_CHRMATCMRseymourGetMatrix (CMR_SEYMOUR_NODE *node)
 Returns the matrix of the decomposition node dec (or NULL if it is not stored).
 
CMR_EXPORT CMR_CHRMATCMRseymourGetTranspose (CMR_SEYMOUR_NODE *node)
 Returns the transposed matrix of the decomposition node dec (or NULL if it is not stored).
 
CMR_EXPORT size_t CMRseymourNumChildren (CMR_SEYMOUR_NODE *node)
 Returns the number of children of the decomposition node dec.
 
CMR_EXPORT CMR_SEYMOUR_NODECMRseymourChild (CMR_SEYMOUR_NODE *node, size_t childIndex)
 Returns a child of the decomposition node dec.
 
CMR_EXPORT CMR_SEYMOUR_NODE_TYPE CMRseymourType (CMR_SEYMOUR_NODE *node)
 Returns the type of a decomposition node dec.
 
CMR_EXPORT size_t CMRseymourNumMinors (CMR_SEYMOUR_NODE *node)
 Returns the number of minors of the decomposition node.
 
CMR_EXPORT CMR_MINORCMRseymourMinor (CMR_SEYMOUR_NODE *node, size_t minorIndex)
 Returns a minor of the decomposition node.
 
CMR_EXPORT int8_t CMRseymourGraphicness (CMR_SEYMOUR_NODE *node)
 Indicates graphicness/being network.
 
CMR_EXPORT int8_t CMRseymourCographicness (CMR_SEYMOUR_NODE *node)
 Indicates cographicness/being conetwork.
 
CMR_EXPORT int8_t CMRseymourRegularity (CMR_SEYMOUR_NODE *node)
 Indicates regularity/total unimodularity.
 
CMR_EXPORT size_t CMRseymourNumRows (CMR_SEYMOUR_NODE *node)
 Returns the number of rows.
 
CMR_EXPORT size_t CMRseymourNumColumns (CMR_SEYMOUR_NODE *node)
 Returns the number of columns.
 
CMR_EXPORT CMR_ELEMENTCMRseymourChildRowsToParent (CMR_SEYMOUR_NODE *node, size_t childIndex)
 Returns the mapping of rows of child childIndex to this node's elements.
 
CMR_EXPORT CMR_ELEMENTCMRseymourChildColumnsToParent (CMR_SEYMOUR_NODE *node, size_t childIndex)
 Returns the mapping of columns of child childIndex to this node's elements.
 
CMR_EXPORT size_t * CMRseymourChildSpecialRows (CMR_SEYMOUR_NODE *node, size_t childIndex)
 Returns the array of special rows of child childIndex.
 
CMR_EXPORT size_t * CMRseymourChildSpecialColumns (CMR_SEYMOUR_NODE *node, size_t childIndex)
 Returns the array of special columns of child childIndex.
 
CMR_EXPORT CMR_GRAPHCMRseymourGraph (CMR_SEYMOUR_NODE *node)
 Returns the graph (if available).
 
CMR_EXPORT CMR_GRAPH_EDGECMRseymourGraphForest (CMR_SEYMOUR_NODE *node)
 Returns the forest of the graph (if available).
 
CMR_EXPORT size_t CMRseymourGraphSizeForest (CMR_SEYMOUR_NODE *dec)
 Returns the number of edges of the graph's forest (if available).
 
CMR_EXPORT CMR_GRAPH_EDGECMRseymourGraphCoforest (CMR_SEYMOUR_NODE *node)
 Returns the coforest of the graph (if available).
 
CMR_EXPORT size_t CMRseymourGraphSizeCoforest (CMR_SEYMOUR_NODE *node)
 Returns the number of edges of the graph's coforest (if available).
 
CMR_EXPORT bool * CMRseymourGraphArcsReversed (CMR_SEYMOUR_NODE *node)
 Returns an array that indicates for the graph's edges whether they must be reversed (if available).
 
CMR_EXPORT CMR_GRAPHCMRseymourCograph (CMR_SEYMOUR_NODE *node)
 Returns the cograph (if available).
 
CMR_EXPORT size_t CMRseymourCographSizeForest (CMR_SEYMOUR_NODE *node)
 Returns the number of edges of the cograph's forest (if available).
 
CMR_EXPORT CMR_GRAPH_EDGECMRseymourCographForest (CMR_SEYMOUR_NODE *node)
 Returns the forest of the cograph (if available).
 
CMR_EXPORT size_t CMRseymourCographSizeCoforest (CMR_SEYMOUR_NODE *node)
 Returns the number of edges of the cograph's coforest (if available).
 
CMR_EXPORT CMR_GRAPH_EDGECMRseymourCographCoforest (CMR_SEYMOUR_NODE *node)
 Returns the coforest of the cograph (if available).
 
CMR_EXPORT bool * CMRseymourCographArcsReversed (CMR_SEYMOUR_NODE *node)
 Returns an array that indicates for the cograph's edges whether they must be reversed (if available).
 
CMR_EXPORT size_t CMRseymourNumPivots (CMR_SEYMOUR_NODE *node)
 Returns the number of pivots (if available).
 
CMR_EXPORT size_t * CMRseymourPivotRows (CMR_SEYMOUR_NODE *node)
 Returns the array with the pivot rows (if available).
 
CMR_EXPORT size_t * CMRseymourPivotColumns (CMR_SEYMOUR_NODE *node)
 Returns the array with the pivot columns (if available).
 
CMR_EXPORT size_t CMRseymourGetUsed (CMR_SEYMOUR_NODE *node)
 Returns node's reference counter.
 
CMR_EXPORT CMR_ERROR CMRseymourPrint (CMR *cmr, CMR_SEYMOUR_NODE *node, FILE *stream, bool printChildren, bool printParentElements, bool printMatrices, bool printGraphs, bool printReductions, bool printPivots)
 Prints the decomposition dec to stream.
 
CMR_EXPORT CMR_ERROR CMRseymourCapture (CMR *cmr, CMR_SEYMOUR_NODE *node)
 Increases the reference counter by 1.
 
CMR_EXPORT CMR_ERROR CMRseymourRelease (CMR *cmr, CMR_SEYMOUR_NODE **pnode)
 Releases a decomposition node, freeing it if this was the last reference.
 
CMR_EXPORT CMR_ERROR CMRseymourCreate (CMR *cmr, CMR_SEYMOUR_NODE **pnode, bool isTernary, CMR_CHRMAT *matrix, bool copyMatrix)
 Creates an unknown decomposition node as a root.
 
CMR_EXPORT CMR_ERROR CMRseymourCloneUnknown (CMR *cmr, CMR_SEYMOUR_NODE *node, CMR_SEYMOUR_NODE **pclone)
 Clones a decomposition node node into *pclone which represents the same matrix but has type CMR_SEYMOUR_NODE_TYPE_UNKNOWN type and no child nodes.
 
CMR_EXPORT CMR_ERROR CMRseymourCloneSubtrees (CMR *cmr, size_t numSubtrees, CMR_SEYMOUR_NODE **subtreeRoots, CMR_SEYMOUR_NODE **clonedSubtrees)
 Clones the union of subtrees of a Seymour decomposition, returning the copies.
 

Detailed Description

Functionality for Seymour decomposition.

Author
Matthias Walter