561 bool printParentElements,
564 bool printReductions,
int CMR_ELEMENT
Definition: element.h:20
Basic functionality of the software library.
CMR_ERROR
Type for return codes of library functions.
Definition: env.h:32
Functionality for graphs.
int CMR_GRAPH_EDGE
Reference to an edge of CMR_GRAPH.
Definition: graph.h:31
CMR_EXPORT size_t CMRmatroiddecGraphSizeCoforest(CMR_MATROID_DEC *dec)
Returns the number of edges of the graph's coforest (if available).
Definition: matroid.c:500
CMR_EXPORT CMR_ERROR CMRchrmatTernaryPivot(CMR *cmr, CMR_CHRMAT *matrix, size_t pivotRow, size_t pivotColumn, CMR_CHRMAT **presult)
Applies a sequence of pivots to matrix and returns the resulting matrix in *presult.
Definition: matroid.c:229
CMR_EXPORT size_t CMRmatroiddecCographSizeCoforest(CMR_MATROID_DEC *dec)
Returns the number of edges of the cograph's coforest (if available).
Definition: matroid.c:549
CMR_EXPORT CMR_ERROR CMRchrmatBinaryPivots(CMR *cmr, CMR_CHRMAT *matrix, size_t numPivots, size_t *pivotRows, size_t *pivotColumns, CMR_CHRMAT **presult)
Applies a sequence of pivots to matrix and returns the resulting matrix in *presult.
Definition: matroid.c:242
CMR_EXPORT bool CMRmatroiddecHasTranspose(CMR_MATROID_DEC *dec)
Returns true iff the transposed matrix of the decomposition node dec is stored.
Definition: matroid.c:373
CMR_EXPORT bool CMRmatroiddecThreeSumDistributedRanks(CMR_MATROID_DEC *dec)
Returns true iff the 3-sum decomposition node has -separation with two rank-1 matrices.
Definition: matroid.c:350
CMR_EXPORT CMR_ERROR CMRmatroiddecPrint(CMR *cmr, CMR_MATROID_DEC *dec, FILE *stream, bool printChildren, bool printParentElements, bool printMatrices, bool printGraphs, bool printReductions, bool printPivots)
Prints the decomposition dec to stream.
Definition: matroid.c:832
CMR_EXPORT bool CMRmatroiddecIsTernary(CMR_MATROID_DEC *dec)
Returns true iff the decomposition is over .
Definition: matroid.c:343
CMR_EXPORT CMR_ERROR CMRchrmatTernaryPivots(CMR *cmr, CMR_CHRMAT *matrix, size_t numPivots, size_t *pivotRows, size_t *pivotColumns, CMR_CHRMAT **presult)
Applies a sequence of pivots to matrix and returns the resulting matrix in *presult.
Definition: matroid.c:256
CMR_EXPORT int8_t CMRmatroiddecGraphicness(CMR_MATROID_DEC *dec)
Indicates graphicness/being network.
Definition: matroid.c:410
CMR_EXPORT size_t CMRmatroiddecCographSizeForest(CMR_MATROID_DEC *dec)
Returns the number of edges of the cograph's forest (if available).
Definition: matroid.c:528
CMR_EXPORT CMR_GRAPH * CMRmatroiddecCograph(CMR_MATROID_DEC *dec)
Returns the cograph (if available).
Definition: matroid.c:521
CMR_EXPORT size_t CMRmatroiddecNumColumns(CMR_MATROID_DEC *dec)
Returns the number of columns.
Definition: matroid.c:458
CMR_EXPORT int8_t CMRmatroiddecCographicness(CMR_MATROID_DEC *dec)
Indicates cographicness/being conetwork.
Definition: matroid.c:417
CMR_ERROR CMRmatroiddecCreateMatrixRoot(CMR *cmr, CMR_MATROID_DEC **pdec, bool isTernary, CMR_CHRMAT *matrix)
Creates an unknown decomposition node as a root.
Definition: matroid.c:1149
CMR_EXPORT CMR_ERROR CMRmatroiddecRelease(CMR *cmr, CMR_MATROID_DEC **pdec)
Releases a decomposition node, freeing it if this was the last reference.
Definition: matroid.c:854
CMR_EXPORT CMR_ELEMENT * CMRmatroiddecChildColumnsToParent(CMR_MATROID_DEC *dec, size_t childIndex)
Returns the mapping of columns of child childIndex to this node's elements.
Definition: matroid.c:448
CMR_EXPORT int8_t CMRmatroiddecRegularity(CMR_MATROID_DEC *dec)
Indicates regularity/total unimodularity.
Definition: matroid.c:424
CMR_MATROID_DEC_TYPE
Definition: matroid.h:160
CMR_EXPORT CMR_ERROR CMRchrmatBinaryPivot(CMR *cmr, CMR_CHRMAT *matrix, size_t pivotRow, size_t pivotColumn, CMR_CHRMAT **presult)
Applie a pivot to matrix and returns the resulting matrix in *presult.
Definition: matroid.c:218
CMR_EXPORT CMR_GRAPH_EDGE * CMRmatroiddecGraphForest(CMR_MATROID_DEC *dec)
Returns the forest of the graph (if available).
Definition: matroid.c:472
CMR_EXPORT CMR_ERROR CMRminorPrint(CMR *cmr, CMR_MINOR *minor, size_t numRows, size_t numColumns, FILE *stream)
Writes the minor minor to the file \fileName by means of lists of row and column indices as well as p...
Definition: matroid.c:306
CMR_EXPORT CMR_CHRMAT * CMRmatroiddecGetMatrix(CMR_MATROID_DEC *dec)
Returns the matrix of the decomposition node dec (or NULL if it is not stored).
Definition: matroid.c:366
CMR_MATROID_DEC_THREESUM_FLAG
Flags that indicate the type of -separation.
Definition: matroid.h:212
CMR_EXPORT CMR_ELEMENT * CMRmatroiddecChildRowsToParent(CMR_MATROID_DEC *dec, size_t childIndex)
Returns the mapping of rows of child childIndex to this node's elements.
Definition: matroid.c:438
CMR_EXPORT CMR_ERROR CMRminorWriteToFile(CMR *cmr, CMR_MINOR *minor, size_t numRows, size_t numColumns, const char *fileName)
Writes the minor minor to the file \fileName by means of lists of row and column indices as well as p...
Definition: matroid.c:318
CMR_EXPORT CMR_ERROR CMRminorCreate(CMR *cmr, CMR_MINOR **pminor, size_t numPivots, CMR_SUBMAT *submatrix)
Creates a minor, allocating space for numPivots pivots and a remaining submatrix.
Definition: matroid.c:273
CMR_EXPORT size_t CMRmatroiddecNumPivots(CMR_MATROID_DEC *dec)
Returns the number of pivots (if available).
Definition: matroid.c:577
CMR_EXPORT bool * CMRmatroiddecCographArcsReversed(CMR_MATROID_DEC *dec)
Returns an array that indicates for the cograph's edges whether they must be reversed (if available).
Definition: matroid.c:570
CMR_EXPORT bool * CMRmatroiddecGraphArcsReversed(CMR_MATROID_DEC *dec)
Returns an array that indicates for the graph's edges whether they must be reversed (if available).
Definition: matroid.c:514
CMR_EXPORT CMR_ERROR CMRminorFree(CMR *cmr, CMR_MINOR **pminor)
Frees the minor *pminor (if pminor is not NULL).
Definition: matroid.c:289
CMR_EXPORT size_t CMRmatroiddecGraphSizeForest(CMR_MATROID_DEC *dec)
Returns the number of edges of the graph's forest (if available).
Definition: matroid.c:479
CMR_EXPORT size_t CMRmatroiddecNumChildren(CMR_MATROID_DEC *dec)
Returns the number of children of the decomposition node dec.
Definition: matroid.c:388
CMR_EXPORT size_t CMRmatroiddecNumRows(CMR_MATROID_DEC *dec)
Returns the number of rows.
Definition: matroid.c:431
CMR_EXPORT CMR_MATROID_DEC_TYPE CMRmatroiddecType(CMR_MATROID_DEC *dec)
Returns the type of a decomposition node dec.
Definition: matroid.c:403
CMR_EXPORT CMR_ERROR CMRmatroiddecCloneUnknown(CMR *cmr, CMR_MATROID_DEC *dec, CMR_MATROID_DEC **pclone)
Clones a decomposition node dec into *pclone which represents the same matrix but has type CMR_MATROI...
Definition: matroid.c:1013
CMR_EXPORT CMR_GRAPH_EDGE * CMRmatroiddecCographForest(CMR_MATROID_DEC *dec)
Returns the forest of the cograph (if available).
Definition: matroid.c:542
CMR_EXPORT size_t * CMRmatroiddecPivotColumns(CMR_MATROID_DEC *dec)
Returns the array with the pivot columns (if available).
Definition: matroid.c:591
CMR_EXPORT CMR_GRAPH * CMRmatroiddecGraph(CMR_MATROID_DEC *dec)
Returns the graph (if available).
Definition: matroid.c:465
CMR_EXPORT CMR_GRAPH_EDGE * CMRmatroiddecCographCoforest(CMR_MATROID_DEC *dec)
Returns the coforest of the cograph (if available).
Definition: matroid.c:563
CMR_EXPORT CMR_MATROID_DEC * CMRmatroiddecChild(CMR_MATROID_DEC *dec, size_t childIndex)
Returns a child of the decomposition node dec.
Definition: matroid.c:395
CMR_EXPORT size_t * CMRmatroiddecPivotRows(CMR_MATROID_DEC *dec)
Returns the array with the pivot rows (if available).
Definition: matroid.c:584
CMR_EXPORT CMR_ERROR CMRmatroiddecCapture(CMR *cmr, CMR_MATROID_DEC *dec)
Increases the reference counter by 1.
Definition: matroid.c:844
CMR_EXPORT CMR_GRAPH_EDGE * CMRmatroiddecGraphCoforest(CMR_MATROID_DEC *dec)
Returns the coforest of the graph (if available).
Definition: matroid.c:493
CMR_EXPORT bool CMRmatroiddecThreeSumConcentratedRank(CMR_MATROID_DEC *dec)
Returns true iff the 3-sum decomposition node has -separation with one rank-2 matrix.
Definition: matroid.c:358
CMR_EXPORT CMR_CHRMAT * CMRmatroiddecGetTranspose(CMR_MATROID_DEC *dec)
Returns the transposed matrix of the decomposition node dec (or NULL if it is not stored).
Definition: matroid.c:380
@ CMR_MATROID_DEC_TYPE_K5_DUAL
Definition: matroid.h:195
@ CMR_MATROID_DEC_TYPE_FANO_DUAL
Definition: matroid.h:191
@ CMR_MATROID_DEC_TYPE_COGRAPH
Definition: matroid.h:182
@ CMR_MATROID_DEC_TYPE_SERIES_PARALLEL
Definition: matroid.h:173
@ CMR_MATROID_DEC_TYPE_R10
Definition: matroid.h:187
@ CMR_MATROID_DEC_TYPE_K5
Definition: matroid.h:193
@ CMR_MATROID_DEC_TYPE_SUBMATRIX
Definition: matroid.h:177
@ CMR_MATROID_DEC_TYPE_IRREGULAR
Definition: matroid.h:161
@ CMR_MATROID_DEC_TYPE_K33
Definition: matroid.h:197
@ CMR_MATROID_DEC_TYPE_ONE_SUM
Definition: matroid.h:165
@ CMR_MATROID_DEC_TYPE_UNKNOWN
Definition: matroid.h:163
@ CMR_MATROID_DEC_TYPE_K33_DUAL
Definition: matroid.h:199
@ CMR_MATROID_DEC_TYPE_GRAPH
Definition: matroid.h:180
@ CMR_MATROID_DEC_TYPE_FANO
Definition: matroid.h:189
@ CMR_MATROID_DEC_TYPE_TWO_SUM
Definition: matroid.h:169
@ CMR_MATROID_DEC_TYPE_PIVOTS
Definition: matroid.h:175
@ CMR_MATROID_DEC_TYPE_DETERMINANT
Definition: matroid.h:201
@ CMR_MATROID_DEC_TYPE_THREE_SUM
Definition: matroid.h:171
@ CMR_MATROID_DEC_TYPE_PLANAR
Definition: matroid.h:184
@ CMR_MATROID_DEC_THREESUM_FLAG_SECOND_TALL
Definition: matroid.h:240
@ CMR_MATROID_DEC_THREESUM_FLAG_FIRST_ALLREPR
Definition: matroid.h:233
@ CMR_MATROID_DEC_THREESUM_FLAG_FIRST_MIXED
Definition: matroid.h:230
@ CMR_MATROID_DEC_THREESUM_FLAG_SECOND_MIXED
Definition: matroid.h:243
@ CMR_MATROID_DEC_THREESUM_FLAG_TRUEMPER
Definition: matroid.h:254
@ CMR_MATROID_DEC_THREESUM_FLAG_FIRST_TALL
Definition: matroid.h:227
@ CMR_MATROID_DEC_THREESUM_FLAG_DISTRIBUTED_RANKS
Definition: matroid.h:217
@ CMR_MATROID_DEC_THREESUM_FLAG_CONCENTRATED_RANK
Definition: matroid.h:220
@ CMR_MATROID_DEC_THREESUM_FLAG_FIRST_WIDE
Definition: matroid.h:224
@ CMR_MATROID_DEC_THREESUM_FLAG_SECOND_ALLREPR
Definition: matroid.h:246
@ CMR_MATROID_DEC_THREESUM_FLAG_SECOND_WIDE
Definition: matroid.h:237
@ CMR_MATROID_DEC_THREESUM_FLAG_NO_PIVOTS
Definition: matroid.h:213
@ CMR_MATROID_DEC_THREESUM_FLAG_SEYMOUR
Definition: matroid.h:250
Functionality for sparse matrices.
Row-wise representation of sparse char matrix.
Definition: matrix.h:204
Definition: env_internal.h:45
A minor of a matroid.
Definition: matroid.h:97
size_t * pivotColumns
Definition: matroid.h:100
size_t numPivots
Definition: matroid.h:98
CMR_SUBMAT * remainingSubmatrix
Definition: matroid.h:101
size_t * pivotRows
Definition: matroid.h:99
Row and column indices for a submatrix.
Definition: matrix.h:28
Definition: matroid_internal.h:16
CMR_CHRMAT * matrix
Matrix representing this node.
Definition: matroid_internal.h:30
bool isTernary
Indicates whether this node belongs to a ternary matrix.
Definition: matroid_internal.h:19