CMR  1.3.0
Classes | Typedefs | Enumerations | Functions
Seymour decomposition

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_THREESUM_FLAG {
  CMR_SEYMOUR_THREESUM_FLAG_NO_PIVOTS = 0 , CMR_SEYMOUR_THREESUM_FLAG_DISTRIBUTED_RANKS = 1 , CMR_SEYMOUR_THREESUM_FLAG_CONCENTRATED_RANK = 2 , CMR_SEYMOUR_THREESUM_FLAG_FIRST_WIDE = 4 ,
  CMR_SEYMOUR_THREESUM_FLAG_FIRST_TALL = 8 , CMR_SEYMOUR_THREESUM_FLAG_FIRST_MIXED = 64 , CMR_SEYMOUR_THREESUM_FLAG_FIRST_ALLREPR = 128 , CMR_SEYMOUR_THREESUM_FLAG_SECOND_WIDE = 16 ,
  CMR_SEYMOUR_THREESUM_FLAG_SECOND_TALL = 32 , CMR_SEYMOUR_THREESUM_FLAG_SECOND_MIXED = 256 , CMR_SEYMOUR_THREESUM_FLAG_SECOND_ALLREPR = 512 , CMR_SEYMOUR_THREESUM_FLAG_SEYMOUR ,
  CMR_SEYMOUR_THREESUM_FLAG_TRUEMPER
}
 Flags that indicate the type of \( 3 \)-separation. More...
 
enum  CMR_SEYMOUR_NODE_TYPE {
  CMR_SEYMOUR_NODE_TYPE_IRREGULAR = -1 , CMR_SEYMOUR_NODE_TYPE_UNKNOWN = 0 , CMR_SEYMOUR_NODE_TYPE_ONE_SUM = 1 , CMR_SEYMOUR_NODE_TYPE_TWO_SUM = 2 ,
  CMR_SEYMOUR_NODE_TYPE_THREE_SUM = 3 , CMR_SEYMOUR_NODE_TYPE_SERIES_PARALLEL = 4 , CMR_SEYMOUR_NODE_TYPE_PIVOTS = 5 , CMR_SEYMOUR_NODE_TYPE_GRAPH = 6 ,
  CMR_SEYMOUR_NODE_TYPE_COGRAPH = 7 , CMR_SEYMOUR_NODE_TYPE_PLANAR = 8 , CMR_SEYMOUR_NODE_TYPE_R10 = 9
}
 

Functions

CMR_EXPORT CMR_ERROR CMRseymourParamsInit (CMR_SEYMOUR_PARAMS *params)
 Initializes the default parameters for regularity testing. More...
 
CMR_EXPORT CMR_ERROR CMRseymourStatsInit (CMR_SEYMOUR_STATS *stats)
 Initializes all statistics for Seymour decomposition computations. More...
 
CMR_EXPORT CMR_ERROR CMRseymourStatsPrint (FILE *stream, CMR_SEYMOUR_STATS *stats, const char *prefix)
 Prints statistics for Seymour decomposition computations. More...
 
CMR_EXPORT bool CMRseymourIsTernary (CMR_SEYMOUR_NODE *node)
 Returns true iff the decomposition is over \( \mathbb{F}_3 \). More...
 
CMR_EXPORT bool CMRseymourThreeSumDistributedRanks (CMR_SEYMOUR_NODE *node)
 Returns true iff the 3-sum decomposition node has \( 3 \)-separation with two rank-1 matrices. More...
 
CMR_EXPORT bool CMRseymourThreeSumConcentratedRank (CMR_SEYMOUR_NODE *node)
 Returns true iff the 3-sum decomposition node has \( 3 \)-separation with one rank-2 matrix. More...
 
CMR_EXPORT bool CMRseymourHasTranspose (CMR_SEYMOUR_NODE *node)
 Returns true iff the transposed matrix of the decomposition node dec is stored. More...
 
CMR_EXPORT CMR_CHRMATCMRseymourGetMatrix (CMR_SEYMOUR_NODE *node)
 Returns the matrix of the decomposition node dec (or NULL if it is not stored). More...
 
CMR_EXPORT CMR_CHRMATCMRseymourGetTranspose (CMR_SEYMOUR_NODE *node)
 Returns the transposed matrix of the decomposition node dec (or NULL if it is not stored). More...
 
CMR_EXPORT size_t CMRseymourNumChildren (CMR_SEYMOUR_NODE *node)
 Returns the number of children of the decomposition node dec. More...
 
CMR_EXPORT CMR_SEYMOUR_NODECMRseymourChild (CMR_SEYMOUR_NODE *node, size_t childIndex)
 Returns a child of the decomposition node dec. More...
 
CMR_EXPORT CMR_SEYMOUR_NODE_TYPE CMRseymourType (CMR_SEYMOUR_NODE *node)
 Returns the type of a decomposition node dec. More...
 
CMR_EXPORT size_t CMRseymourNumMinors (CMR_SEYMOUR_NODE *node)
 Returns the number of minors of the decomposition node. More...
 
CMR_EXPORT CMR_MINORCMRseymourMinor (CMR_SEYMOUR_NODE *node, size_t minorIndex)
 Returns a minor of the decomposition node. More...
 
CMR_EXPORT int8_t CMRseymourGraphicness (CMR_SEYMOUR_NODE *node)
 Indicates graphicness/being network. More...
 
CMR_EXPORT int8_t CMRseymourCographicness (CMR_SEYMOUR_NODE *node)
 Indicates cographicness/being conetwork. More...
 
CMR_EXPORT int8_t CMRseymourRegularity (CMR_SEYMOUR_NODE *node)
 Indicates regularity/total unimodularity. More...
 
CMR_EXPORT size_t CMRseymourNumRows (CMR_SEYMOUR_NODE *node)
 Returns the number of rows. More...
 
CMR_EXPORT size_t CMRseymourNumColumns (CMR_SEYMOUR_NODE *node)
 Returns the number of columns. More...
 
CMR_EXPORT CMR_ELEMENTCMRseymourChildRowsToParent (CMR_SEYMOUR_NODE *node, size_t childIndex)
 Returns the mapping of rows of child childIndex to this node's elements. More...
 
CMR_EXPORT CMR_ELEMENTCMRseymourChildColumnsToParent (CMR_SEYMOUR_NODE *node, size_t childIndex)
 Returns the mapping of columns of child childIndex to this node's elements. More...
 
CMR_EXPORT CMR_GRAPHCMRseymourGraph (CMR_SEYMOUR_NODE *node)
 Returns the graph (if available). More...
 
CMR_EXPORT CMR_GRAPH_EDGECMRseymourGraphForest (CMR_SEYMOUR_NODE *node)
 Returns the forest of the graph (if available). More...
 
CMR_EXPORT size_t CMRseymourGraphSizeForest (CMR_SEYMOUR_NODE *dec)
 Returns the number of edges of the graph's forest (if available). More...
 
CMR_EXPORT CMR_GRAPH_EDGECMRseymourGraphCoforest (CMR_SEYMOUR_NODE *node)
 Returns the coforest of the graph (if available). More...
 
CMR_EXPORT size_t CMRseymourGraphSizeCoforest (CMR_SEYMOUR_NODE *node)
 Returns the number of edges of the graph's coforest (if available). More...
 
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). More...
 
CMR_EXPORT CMR_GRAPHCMRseymourCograph (CMR_SEYMOUR_NODE *node)
 Returns the cograph (if available). More...
 
CMR_EXPORT size_t CMRseymourCographSizeForest (CMR_SEYMOUR_NODE *node)
 Returns the number of edges of the cograph's forest (if available). More...
 
CMR_EXPORT CMR_GRAPH_EDGECMRseymourCographForest (CMR_SEYMOUR_NODE *node)
 Returns the forest of the cograph (if available). More...
 
CMR_EXPORT size_t CMRseymourCographSizeCoforest (CMR_SEYMOUR_NODE *node)
 Returns the number of edges of the cograph's coforest (if available). More...
 
CMR_EXPORT CMR_GRAPH_EDGECMRseymourCographCoforest (CMR_SEYMOUR_NODE *node)
 Returns the coforest of the cograph (if available). More...
 
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). More...
 
CMR_EXPORT size_t CMRseymourNumPivots (CMR_SEYMOUR_NODE *node)
 Returns the number of pivots (if available). More...
 
CMR_EXPORT size_t * CMRseymourPivotRows (CMR_SEYMOUR_NODE *node)
 Returns the array with the pivot rows (if available). More...
 
CMR_EXPORT size_t * CMRseymourPivotColumns (CMR_SEYMOUR_NODE *node)
 Returns the array with the pivot columns (if available). More...
 
CMR_EXPORT size_t CMRseymourGetUsed (CMR_SEYMOUR_NODE *node)
 Returns node's reference counter. More...
 
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. More...
 
CMR_EXPORT CMR_ERROR CMRseymourCapture (CMR *cmr, CMR_SEYMOUR_NODE *node)
 Increases the reference counter by 1. More...
 
CMR_EXPORT CMR_ERROR CMRseymourRelease (CMR *cmr, CMR_SEYMOUR_NODE **pnode)
 Releases a decomposition node, freeing it if this was the last reference. More...
 
CMR_EXPORT CMR_ERROR CMRseymourCreate (CMR *cmr, CMR_SEYMOUR_NODE **pnode, bool isTernary, CMR_CHRMAT *matrix)
 Creates an unknown decomposition node as a root. More...
 
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. More...
 
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. More...
 

Detailed Description

Typedef Documentation

◆ CMR_SEYMOUR_NODE

Enumeration Type Documentation

◆ CMR_SEYMOUR_NODE_TYPE

Enumerator
CMR_SEYMOUR_NODE_TYPE_IRREGULAR 

Node represents 3-connected irregular matrix.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_NODE_TYPE_UNKNOWN 

Type of node is not yet determined.

CMR_SEYMOUR_NODE_TYPE_ONE_SUM 

Node represents a \( 1 \)-sum of matrices; has at least 2 child nodes.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_NODE_TYPE_TWO_SUM 

Node represents a 2-sum of matrices; has two child nodes.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_NODE_TYPE_THREE_SUM 

Node represents a 3-sum of matrices; has two child nodes.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_NODE_TYPE_SERIES_PARALLEL 

Node represents a series-parallel reduction; has one child node.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_NODE_TYPE_PIVOTS 

Node represents an application of pivots; has one child node.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_NODE_TYPE_GRAPH 

Node represents a graphic or network leaf.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_NODE_TYPE_COGRAPH 

Node represents a cographic or conetwork leaf.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_NODE_TYPE_PLANAR 

Node represents a graphic and cographic (network and conetwork) leaf.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_NODE_TYPE_R10 

Node represents a representation matrix of \( R_{10} \).

See also
Decomposition of regular matroids.

◆ CMR_SEYMOUR_THREESUM_FLAG

Flags that indicate the type of \( 3 \)-separation.

See also
The desired types can be set by modifying CMR_SEYMOUR_PARAMS::threeSumStrategy.
Enumerator
CMR_SEYMOUR_THREESUM_FLAG_NO_PIVOTS 

Indicate to not change the rank distribution; only serves as an option; each constructed node will have either CMR_SEYMOUR_THREESUM_FLAG_DISTRIBUTED_RANKS or CMR_SEYMOUR_THREESUM_FLAG_CONCENTRATED_RANK set.

CMR_SEYMOUR_THREESUM_FLAG_DISTRIBUTED_RANKS 

The two off-diagonal submatrices both have rank 1.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_CONCENTRATED_RANK 

The bottom-left submatrix has rank 2 and the top-right submatrix has rank 0.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_FIRST_WIDE 

The first child node is of the form \( M_1^{\text{wide}} \); valid for distributed ranks.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_FIRST_TALL 

The first child node is of the form \( M_1^{\text{tall}} \); valid for distributed ranks.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_FIRST_MIXED 

The first child node is of the form \( M_1^{\text{mixed}} \); valid for concentrated rank.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_FIRST_ALLREPR 

The first child node is of the form \( M_1^{\text{all-repr}} \); valid for concentrated rank.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_SECOND_WIDE 

The second child node is of the form \( M_2^{\text{wide}} \); valid for distributed ranks.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_SECOND_TALL 

The second child node is of the form \( M_2^{\text{tall}} \); valid for distributed ranks.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_SECOND_MIXED 

The second child node is of the form \( M_2^{\text{mixed}} \); valid for concentrated rank.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_SECOND_ALLREPR 

The second child node is of the form \( M_2^{\text{all-repr}} \); valid for concentrated rank.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_SEYMOUR 

This combination of flags indicates a \( 3 \)-sum as defined by Seymour.

See also
Decomposition of regular matroids.
CMR_SEYMOUR_THREESUM_FLAG_TRUEMPER 

This combination of flags indicates a \( 3 \)-sum as defined by Truemper.

See also
Decomposition of regular matroids.

Function Documentation

◆ CMRseymourCapture()

CMR_EXPORT CMR_ERROR CMRseymourCapture ( CMR cmr,
CMR_SEYMOUR_NODE node 
)

Increases the reference counter by 1.

Parameters
cmrCMR environment.
nodeSeymour decomposition node.

◆ CMRseymourChild()

CMR_EXPORT CMR_SEYMOUR_NODE* CMRseymourChild ( CMR_SEYMOUR_NODE node,
size_t  childIndex 
)

Returns a child of the decomposition node dec.

Parameters
nodeSeymour decomposition node.
childIndexIndex of child.

◆ CMRseymourChildColumnsToParent()

CMR_EXPORT CMR_ELEMENT* CMRseymourChildColumnsToParent ( CMR_SEYMOUR_NODE node,
size_t  childIndex 
)

Returns the mapping of columns of child childIndex to this node's elements.

Parameters
nodeSeymour decomposition node.
childIndexIndex of child to consider.

◆ CMRseymourChildRowsToParent()

CMR_EXPORT CMR_ELEMENT* CMRseymourChildRowsToParent ( CMR_SEYMOUR_NODE node,
size_t  childIndex 
)

Returns the mapping of rows of child childIndex to this node's elements.

Parameters
nodeSeymour decomposition node.
childIndexIndex of child to consider.

◆ CMRseymourCloneSubtrees()

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.

The set of Seymour decomposition nodes that are (grand-)children of any of the numSubtrees nodes subtreeRoots is cloned. The respective clones are returned in clonedSubtrees.

◆ CMRseymourCloneUnknown()

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.

Parameters
cmrCMR environment.
nodeSeymour decomposition node.
pclonePointer for storing the clone.

◆ CMRseymourCograph()

CMR_EXPORT CMR_GRAPH* CMRseymourCograph ( CMR_SEYMOUR_NODE node)

Returns the cograph (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourCographArcsReversed()

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

Parameters
nodeSeymour decomposition node.

◆ CMRseymourCographCoforest()

CMR_EXPORT CMR_GRAPH_EDGE* CMRseymourCographCoforest ( CMR_SEYMOUR_NODE node)

Returns the coforest of the cograph (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourCographForest()

CMR_EXPORT CMR_GRAPH_EDGE* CMRseymourCographForest ( CMR_SEYMOUR_NODE node)

Returns the forest of the cograph (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourCographicness()

CMR_EXPORT int8_t CMRseymourCographicness ( CMR_SEYMOUR_NODE node)

Indicates cographicness/being conetwork.

Returns a positive value if the matrix corresponding to dec is cographic/conetwork, zero if it is not known and a negative value otherwise.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourCographSizeCoforest()

CMR_EXPORT size_t CMRseymourCographSizeCoforest ( CMR_SEYMOUR_NODE node)

Returns the number of edges of the cograph's coforest (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourCographSizeForest()

CMR_EXPORT size_t CMRseymourCographSizeForest ( CMR_SEYMOUR_NODE node)

Returns the number of edges of the cograph's forest (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourCreate()

CMR_EXPORT CMR_ERROR CMRseymourCreate ( CMR cmr,
CMR_SEYMOUR_NODE **  pnode,
bool  isTernary,
CMR_CHRMAT matrix 
)

Creates an unknown decomposition node as a root.

Copies matrix into the node.

Parameters
cmrCMR environment.
pnodePointer for storing the Seymour decomposition node.
isTernaryWhether we consider ternary matrices.
matrixThe matrix corresponding to this node; will be copied.

◆ CMRseymourGetMatrix()

CMR_EXPORT CMR_CHRMAT* CMRseymourGetMatrix ( CMR_SEYMOUR_NODE node)

Returns the matrix of the decomposition node dec (or NULL if it is not stored).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourGetTranspose()

CMR_EXPORT CMR_CHRMAT* CMRseymourGetTranspose ( CMR_SEYMOUR_NODE node)

Returns the transposed matrix of the decomposition node dec (or NULL if it is not stored).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourGetUsed()

CMR_EXPORT size_t CMRseymourGetUsed ( CMR_SEYMOUR_NODE node)

Returns node's reference counter.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourGraph()

CMR_EXPORT CMR_GRAPH* CMRseymourGraph ( CMR_SEYMOUR_NODE node)

Returns the graph (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourGraphArcsReversed()

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

Parameters
nodeSeymour decomposition node.

◆ CMRseymourGraphCoforest()

CMR_EXPORT CMR_GRAPH_EDGE* CMRseymourGraphCoforest ( CMR_SEYMOUR_NODE node)

Returns the coforest of the graph (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourGraphForest()

CMR_EXPORT CMR_GRAPH_EDGE* CMRseymourGraphForest ( CMR_SEYMOUR_NODE node)

Returns the forest of the graph (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourGraphicness()

CMR_EXPORT int8_t CMRseymourGraphicness ( CMR_SEYMOUR_NODE node)

Indicates graphicness/being network.

Returns a positive value if the matrix corresponding to dec is graphic/network, zero if it is not known and a negative value otherwise.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourGraphSizeCoforest()

CMR_EXPORT size_t CMRseymourGraphSizeCoforest ( CMR_SEYMOUR_NODE node)

Returns the number of edges of the graph's coforest (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourGraphSizeForest()

CMR_EXPORT size_t CMRseymourGraphSizeForest ( CMR_SEYMOUR_NODE dec)

Returns the number of edges of the graph's forest (if available).

Parameters
decDecomposition node.

◆ CMRseymourHasTranspose()

CMR_EXPORT bool CMRseymourHasTranspose ( CMR_SEYMOUR_NODE node)

Returns true iff the transposed matrix of the decomposition node dec is stored.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourIsTernary()

CMR_EXPORT bool CMRseymourIsTernary ( CMR_SEYMOUR_NODE node)

Returns true iff the decomposition is over \( \mathbb{F}_3 \).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourMinor()

CMR_EXPORT CMR_MINOR* CMRseymourMinor ( CMR_SEYMOUR_NODE node,
size_t  minorIndex 
)

Returns a minor of the decomposition node.

Parameters
nodeSeymour decomposition node.
minorIndexIndex of minor.

◆ CMRseymourNumChildren()

CMR_EXPORT size_t CMRseymourNumChildren ( CMR_SEYMOUR_NODE node)

Returns the number of children of the decomposition node dec.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourNumColumns()

CMR_EXPORT size_t CMRseymourNumColumns ( CMR_SEYMOUR_NODE node)

Returns the number of columns.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourNumMinors()

CMR_EXPORT size_t CMRseymourNumMinors ( CMR_SEYMOUR_NODE node)

Returns the number of minors of the decomposition node.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourNumPivots()

CMR_EXPORT size_t CMRseymourNumPivots ( CMR_SEYMOUR_NODE node)

Returns the number of pivots (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourNumRows()

CMR_EXPORT size_t CMRseymourNumRows ( CMR_SEYMOUR_NODE node)

Returns the number of rows.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourParamsInit()

CMR_EXPORT CMR_ERROR CMRseymourParamsInit ( CMR_SEYMOUR_PARAMS params)

Initializes the default parameters for regularity testing.

These are selected for minimum running time.

Parameters
paramsPointer to parameters.

◆ CMRseymourPivotColumns()

CMR_EXPORT size_t* CMRseymourPivotColumns ( CMR_SEYMOUR_NODE node)

Returns the array with the pivot columns (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourPivotRows()

CMR_EXPORT size_t* CMRseymourPivotRows ( CMR_SEYMOUR_NODE node)

Returns the array with the pivot rows (if available).

Parameters
nodeSeymour decomposition node.

◆ CMRseymourPrint()

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.

Parameters
cmrCMR environment.
nodeSeymour decomposition node.
streamStream to write to.
printChildrenWhether to recurse.
printParentElementsWhether to print mapping of rows/columns to parent elements.
printMatricesWhether to print matrices.
printGraphsWhether to print graphs.
printReductionsWhether to print series-parallel reductions.
printPivotsWhether to print pivots.

◆ CMRseymourRegularity()

CMR_EXPORT int8_t CMRseymourRegularity ( CMR_SEYMOUR_NODE node)

Indicates regularity/total unimodularity.

Returns a positive value if the matrix corresponding to dec is regular/totally unimodular, zero if it is not known and a negative value otherwise.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourRelease()

CMR_EXPORT CMR_ERROR CMRseymourRelease ( CMR cmr,
CMR_SEYMOUR_NODE **  pnode 
)

Releases a decomposition node, freeing it if this was the last reference.

Decreases the reference counter by 1. If it reaches zero then it is freed. In that case, it is also called recursively for the child nodes. Sets *pnode to NULL to prevent accidental usage.

Parameters
cmrCMR environment.
pnodePointer to Seymour decomposition node. *pnode is set to NULL.

◆ CMRseymourStatsInit()

CMR_EXPORT CMR_ERROR CMRseymourStatsInit ( CMR_SEYMOUR_STATS stats)

Initializes all statistics for Seymour decomposition computations.

Parameters
statsPointer to statistics.

◆ CMRseymourStatsPrint()

CMR_EXPORT CMR_ERROR CMRseymourStatsPrint ( FILE *  stream,
CMR_SEYMOUR_STATS stats,
const char *  prefix 
)

Prints statistics for Seymour decomposition computations.

Parameters
streamFile stream to print to.
statsPointer to statistics.
prefixPrefix string to prepend to each printed line (may be NULL).

◆ CMRseymourThreeSumConcentratedRank()

CMR_EXPORT bool CMRseymourThreeSumConcentratedRank ( CMR_SEYMOUR_NODE node)

Returns true iff the 3-sum decomposition node has \( 3 \)-separation with one rank-2 matrix.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourThreeSumDistributedRanks()

CMR_EXPORT bool CMRseymourThreeSumDistributedRanks ( CMR_SEYMOUR_NODE node)

Returns true iff the 3-sum decomposition node has \( 3 \)-separation with two rank-1 matrices.

Parameters
nodeSeymour decomposition node.

◆ CMRseymourType()

CMR_EXPORT CMR_SEYMOUR_NODE_TYPE CMRseymourType ( CMR_SEYMOUR_NODE node)

Returns the type of a decomposition node dec.

Parameters
nodeSeymour decomposition node.