|
CMR_ERROR | CMRseymourParamsInit (CMR_SEYMOUR_PARAMS *params) |
| Initializes the default parameters for regularity testing.
|
|
CMR_ERROR | CMRseymourStatsInit (CMR_SEYMOUR_STATS *stats) |
| Initializes all statistics for Seymour decomposition computations.
|
|
CMR_ERROR | CMRseymourStatsPrint (FILE *stream, CMR_SEYMOUR_STATS *stats, const char *prefix) |
| Prints statistics for Seymour decomposition computations.
|
|
bool | CMRseymourIsTernary (CMR_SEYMOUR_NODE *node) |
| Returns true iff the decomposition is over \( \mathbb{F}_3 \).
|
|
CMR_CHRMAT * | CMRseymourGetMatrix (CMR_SEYMOUR_NODE *node) |
| Returns the matrix of the decomposition node dec (or NULL if it is not stored).
|
|
bool | CMRseymourHasTranspose (CMR_SEYMOUR_NODE *node) |
| Returns true iff the transposed matrix of the decomposition node dec is stored.
|
|
CMR_CHRMAT * | CMRseymourGetTranspose (CMR_SEYMOUR_NODE *node) |
| Returns the transposed matrix of the decomposition node dec (or NULL if it is not stored).
|
|
size_t | CMRseymourNumChildren (CMR_SEYMOUR_NODE *node) |
| Returns the number of children of the decomposition node dec .
|
|
CMR_SEYMOUR_NODE * | CMRseymourChild (CMR_SEYMOUR_NODE *node, size_t childIndex) |
| Returns a child of the decomposition node dec .
|
|
CMR_SEYMOUR_NODE_TYPE | CMRseymourType (CMR_SEYMOUR_NODE *node) |
| Returns the type of a decomposition node dec .
|
|
int8_t | CMRseymourGraphicness (CMR_SEYMOUR_NODE *node) |
| Indicates graphicness/being network.
|
|
int8_t | CMRseymourCographicness (CMR_SEYMOUR_NODE *node) |
| Indicates cographicness/being conetwork.
|
|
int8_t | CMRseymourRegularity (CMR_SEYMOUR_NODE *node) |
| Indicates regularity/total unimodularity.
|
|
size_t | CMRseymourNumRows (CMR_SEYMOUR_NODE *node) |
| Returns the number of rows.
|
|
CMR_ELEMENT * | CMRseymourChildRowsToParent (CMR_SEYMOUR_NODE *node, size_t childIndex) |
| Returns the mapping of rows of child childIndex to this node's elements.
|
|
CMR_ELEMENT * | CMRseymourChildColumnsToParent (CMR_SEYMOUR_NODE *node, size_t childIndex) |
| Returns the mapping of columns of child childIndex to this node's elements.
|
|
size_t * | CMRseymourChildSpecialRows (CMR_SEYMOUR_NODE *node, size_t childIndex) |
| Returns the array of special rows of child childIndex .
|
|
size_t * | CMRseymourChildSpecialColumns (CMR_SEYMOUR_NODE *node, size_t childIndex) |
| Returns the array of special columns of child childIndex .
|
|
size_t | CMRseymourNumColumns (CMR_SEYMOUR_NODE *node) |
| Returns the number of columns.
|
|
CMR_GRAPH * | CMRseymourGraph (CMR_SEYMOUR_NODE *node) |
| Returns the graph (if available).
|
|
CMR_GRAPH_EDGE * | CMRseymourGraphForest (CMR_SEYMOUR_NODE *node) |
| Returns the forest of the graph (if available).
|
|
size_t | CMRseymourGraphSizeForest (CMR_SEYMOUR_NODE *node) |
| Returns the number of edges of the graph's forest (if available).
|
|
CMR_GRAPH_EDGE * | CMRseymourGraphCoforest (CMR_SEYMOUR_NODE *node) |
| Returns the coforest of the graph (if available).
|
|
size_t | CMRseymourGraphSizeCoforest (CMR_SEYMOUR_NODE *node) |
| Returns the number of edges of the graph's coforest (if available).
|
|
bool * | CMRseymourGraphArcsReversed (CMR_SEYMOUR_NODE *node) |
| Returns an array that indicates for the graph's edges whether they must be reversed (if available).
|
|
CMR_GRAPH * | CMRseymourCograph (CMR_SEYMOUR_NODE *node) |
| Returns the cograph (if available).
|
|
size_t | CMRseymourCographSizeForest (CMR_SEYMOUR_NODE *node) |
| Returns the number of edges of the cograph's forest (if available).
|
|
CMR_GRAPH_EDGE * | CMRseymourCographForest (CMR_SEYMOUR_NODE *node) |
| Returns the forest of the cograph (if available).
|
|
size_t | CMRseymourCographSizeCoforest (CMR_SEYMOUR_NODE *node) |
| Returns the number of edges of the cograph's coforest (if available).
|
|
CMR_GRAPH_EDGE * | CMRseymourCographCoforest (CMR_SEYMOUR_NODE *node) |
| Returns the coforest of the cograph (if available).
|
|
bool * | CMRseymourCographArcsReversed (CMR_SEYMOUR_NODE *node) |
| Returns an array that indicates for the cograph's edges whether they must be reversed (if available).
|
|
size_t | CMRseymourNumPivots (CMR_SEYMOUR_NODE *node) |
| Returns the number of pivots (if available).
|
|
size_t * | CMRseymourPivotRows (CMR_SEYMOUR_NODE *node) |
| Returns the array with the pivot rows (if available).
|
|
size_t * | CMRseymourPivotColumns (CMR_SEYMOUR_NODE *node) |
| Returns the array with the pivot columns (if available).
|
|
size_t | CMRseymourGetUsed (CMR_SEYMOUR_NODE *node) |
| Returns node's reference counter.
|
|
CMR_ERROR | CMRseymourPrintChild (CMR *cmr, CMR_SEYMOUR_NODE *child, CMR_SEYMOUR_NODE *parent, size_t childIndex, FILE *stream, size_t indent, bool printChildren, bool printParentElements, bool printMatrices, bool printGraphs, bool printReductions, bool printPivots) |
| Prints the decomposition child to stream .
|
|
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_ERROR | CMRseymourCapture (CMR *cmr, CMR_SEYMOUR_NODE *node) |
| Increases the reference counter by 1.
|
|
CMR_ERROR | CMRseymourRelease (CMR *cmr, CMR_SEYMOUR_NODE **pnode) |
| Releases a decomposition node, freeing it if this was the last reference.
|
|
static CMR_ERROR | createNode (CMR *cmr, CMR_SEYMOUR_NODE **pnode, bool isTernary, CMR_SEYMOUR_NODE_TYPE type, size_t numRows, size_t numColumns) |
|
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.
|
|
static CMR_ERROR | updateRowsColumnsToParent (CMR *cmr, CMR_SEYMOUR_NODE *parent, size_t childIndex, size_t *parentRows, size_t *parentColumns) |
| Allocates and sets childRowsToParent and childColumnsToParent of the child of parent indicated by childIndex .
|
|
static CMR_ERROR | updateRowsColumnsToChild (CMR_SEYMOUR_NODE *parent, size_t childIndex, size_t *parentRows, size_t firstRow, size_t beyondRow, size_t *parentColumns, size_t firstColumn, size_t beyondColumn) |
| Updates rowsToChild and columnsToChild of the parent.
|
|
static CMR_ERROR | updateChildMatrix (CMR *cmr, CMR_SEYMOUR_NODE *parent, size_t childIndex) |
| Updates matrix of dec from parent using rowsParent and columnsParent arrays.
|
|
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_ERROR | CMRseymourAddMinor (CMR *cmr, CMR_SEYMOUR_NODE *node, CMR_MINOR *minor) |
| Adds a minor to a Seymour decomposition node.
|
|
size_t | CMRseymourNumMinors (CMR_SEYMOUR_NODE *node) |
| Returns the number of minors of the decomposition node.
|
|
CMR_MINOR * | CMRseymourMinor (CMR_SEYMOUR_NODE *node, size_t minorIndex) |
| Returns a minor of the decomposition node.
|
|
CMR_ERROR | CMRseymourSetNumChildren (CMR *cmr, CMR_SEYMOUR_NODE *node, size_t numChildren) |
| Sets the number of children and allocates memory accordingly.
|
|
CMR_ERROR | CMRseymourCreateChildFromMatrices (CMR *cmr, CMR_SEYMOUR_NODE *parent, size_t childIndex, CMR_CHRMAT *matrix, CMR_CHRMAT *transpose, CMR_ELEMENT *rowsToParent, CMR_ELEMENT *columnsToParent) |
| Creates a decomposition node as a child.
|
|
CMR_ERROR | CMRseymourUpdateOnesum (CMR *cmr, CMR_SEYMOUR_NODE *node, size_t numChildren) |
| Initialize an existing unknown decomposition node as a 1-sum with numChildren children.
|
|
CMR_ERROR | CMRseymourUpdateViolator (CMR *cmr, CMR_SEYMOUR_NODE *node, CMR_SUBMAT *violator) |
| Initialize an existing unknown decomposition node to be irregular with a violator submatrix.
|
|
CMR_ERROR | CMRseymourUpdateSeriesParallel (CMR *cmr, CMR_SEYMOUR_NODE *node, CMR_SUBMAT *reducedSubmatrix) |
| Updates an existing unknown Seymour decomposition node to be a series-parallel node.
|
|
CMR_ERROR | CMRseymourUpdateTwosum (CMR *cmr, CMR_SEYMOUR_NODE *node, CMR_SEPA *separation) |
| Initialize an existing unknown decomposition node as a 2-separation node according to the given separation .
|
|
CMR_ERROR | CMRseymourUpdatePivots (CMR *cmr, CMR_SEYMOUR_NODE *node, size_t numPivots, size_t *pivotRows, size_t *pivotColumns, CMR_CHRMAT *matrix, CMR_CHRMAT *transpose) |
| Initialize an existing unknown decomposition node as a pivot node according to the given arrays of pivots.
|
|
CMR_ERROR | CMRseymourSetAttributes (CMR_SEYMOUR_NODE *node) |
| Set regularity and (co)graphicness attributes of a decomposition tree.
|
|
static CMR_ERROR | cloneRecursively (CMR *cmr, CMR_SEYMOUR_NODE *node, CMR_SEYMOUR_NODE **pclone, CMR_LISTHASHTABLE *nodesToClonesHashtable, ClonePair **pclonePairs, size_t *pmemClonePairs, size_t *pnumClonePairs) |
| Clones node to *pclone , updates cloning data structures and calls itself recursively.
|
|
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.
|
|
CMR_ERROR | CMRregularityTaskCreateRoot (CMR *cmr, CMR_SEYMOUR_NODE *node, DecompositionTask **ptask, CMR_SEYMOUR_PARAMS *params, CMR_SEYMOUR_STATS *stats, clock_t startClock, double timeLimit) |
| Creates a decomposition task for the root of the decomposition.
|
|
CMR_ERROR | CMRregularityTaskFree (CMR *cmr, DecompositionTask **ptask) |
| Frees a decomposition task.
|
|
CMR_ERROR | CMRregularityQueueCreate (CMR *cmr, DecompositionQueue **pqueue) |
| Initializes a decomposition queue.
|
|
CMR_ERROR | CMRregularityQueueFree (CMR *cmr, DecompositionQueue **pqueue) |
| Frees the decomposition queue.
|
|
bool | CMRregularityQueueEmpty (DecompositionQueue *queue) |
| Returns whether a queue is empty.
|
|
DecompositionTask * | CMRregularityQueueRemove (DecompositionQueue *queue) |
| Removes a task from a decomposition queue.
|
|
void | CMRregularityQueueAdd (DecompositionQueue *queue, DecompositionTask *task) |
| Adds a task to a decomposition queue.
|
|
static CMR_ERROR | CMRregularityTaskRun (CMR *cmr, DecompositionTask *task, DecompositionQueue *queue) |
| Runs a task for processing the associated decomposition node.
|
|
CMR_ERROR | CMRseymourDecompose (CMR *cmr, CMR_CHRMAT *matrix, bool ternary, CMR_SEYMOUR_NODE **proot, CMR_SEYMOUR_PARAMS *params, CMR_SEYMOUR_STATS *stats, double timeLimit) |
| Tests ternary or binary linear matroid for regularity.
|
|
CMR_ERROR | CMRregularityCompleteDecomposition (CMR *cmr, CMR_SEYMOUR_NODE *subtree, CMR_SEYMOUR_PARAMS *params, CMR_SEYMOUR_STATS *stats, double timeLimit) |
| Replaces the subtree of a matroid decomposition tree by a new one.
|
|
CMR_ERROR | CMRregularityRefineDecomposition (CMR *cmr, size_t numNodes, CMR_SEYMOUR_NODE **nodes, CMR_SEYMOUR_PARAMS *params, CMR_SEYMOUR_STATS *stats, double timeLimit) |
| Replaces the subtrees of several nodes of a matroid decomposition tree by new ones.
|
|