CMR  1.3.0
regularity_internal.h
Go to the documentation of this file.
1 #ifndef CMR_REGULAR_INTERNAL_H
2 #define CMR_REGULAR_INTERNAL_H
3 
4 #include <time.h>
5 
6 #include <cmr/regular.h>
7 
8 #include "matroid_internal.h"
9 
10 typedef struct DecompositionTask
11 {
16  clock_t startClock;
17  double timeLimit;
19 
25  CMR* cmr,
27  DecompositionTask** ptask,
30  clock_t startClock,
31  double timeLimit
32 );
33 
39  CMR* cmr,
40  DecompositionTask** ptask
41 );
42 
43 typedef struct DecompositionQueue
44 {
50 
56  CMR* cmr,
57  DecompositionQueue** pqueue
58 );
59 
65  CMR* cmr,
66  DecompositionQueue** pqueue
67 );
68 
74  DecompositionQueue* queue
75 );
76 
82  DecompositionQueue* queue
83 );
84 
85 
91  DecompositionQueue* queue,
92  DecompositionTask* task
93 );
94 
101  CMR* cmr,
102  DecompositionTask* task,
103  DecompositionQueue* queue,
104  CMR_SEPA* separation
105 );
106 
111 CMR_ERROR
113  CMR* cmr,
114  DecompositionTask* task,
115  DecompositionQueue* queue
116 );
117 
124 CMR_ERROR
126  CMR* cmr,
127  DecompositionTask* task,
128  DecompositionQueue* queue
129 );
130 
137 CMR_ERROR
139  CMR* cmr,
140  DecompositionTask* task,
141  DecompositionQueue* queue
142 );
143 
151 CMR_ERROR
153  CMR* cmr,
154  DecompositionTask* task,
155  DecompositionQueue* queue
156 );
157 
163  CMR* cmr,
164  DecompositionTask* task,
165  DecompositionQueue* queue
166 );
167 
173  CMR* cmr,
174  DecompositionTask* task,
175  CMR_SUBMAT* wheelSubmatrix
176 );
177 
189  CMR* cmr,
190  DecompositionTask* task,
191  DecompositionQueue* queue
192 );
193 
199  CMR* cmr,
200  DecompositionTask* task,
201  DecompositionQueue* queue
202 );
203 
209  CMR* cmr,
210  DecompositionTask* task,
211  DecompositionQueue* queue
212 );
213 
223  CMR* cmr,
224  DecompositionTask* task,
225  DecompositionQueue* queue
226 );
227 
238  CMR* cmr,
239  CMR_CHRMAT* matrix,
240  bool ternary,
241  bool *pisRegular,
242  CMR_MATROID_DEC** pdec,
243  CMR_MINOR** pminor,
244  CMR_REGULAR_PARAMS* params,
245  CMR_REGULAR_STATS* stats,
246  double timeLimit
247 );
248 
254  CMR* cmr,
255  CMR_MATROID_DEC* subtree,
256  CMR_REGULAR_PARAMS* params,
257  CMR_REGULAR_STATS* stats,
258  double timeLimit
259 );
260 
261 #endif /* CMR_REGULAR_INTERNAL_H */
CMR_ERROR
Type for return codes of library functions.
Definition: env.h:32
Recognition of regular matrices.
CMR_ERROR CMRregularityNestedMinorSequenceSearchThreeSeparation(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue)
Searches for 3-separations along the sequence of nested minors and decomposes as a 3-sum.
Definition: regularity_partition.c:717
CMR_ERROR CMRregularityTestGraphicness(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue)
Tests matrix for graphicness/network and stores it in dec.
Definition: regularity_graphic.c:1802
CMR_ERROR CMRregularityTest(CMR *cmr, CMR_CHRMAT *matrix, bool ternary, bool *pisRegular, CMR_MATROID_DEC **pdec, CMR_MINOR **pminor, CMR_REGULAR_PARAMS *params, CMR_REGULAR_STATS *stats, double timeLimit)
Tests ternary or binary linear matroid for regularity.
Definition: regularity.c:172
CMR_ERROR CMRregularityTestR10(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue)
Tests matrix for representing .
Definition: regularity_r10.c:9
CMR_ERROR CMRregularityDecomposeThreeSum(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue, CMR_SEPA *separation)
Applies a 3-sum decomposition.
Definition: regularity_threesum.c:211
struct DecompositionQueue DecompositionQueue
CMR_ERROR CMRregularityInitNestedMinorSequence(CMR *cmr, DecompositionTask *task, CMR_SUBMAT *wheelSubmatrix)
Initializes a sequence of nested minors with one minor, for a given wheelSubmatrix.
Definition: regularity_nested_minor_sequence.c:1049
CMR_ERROR CMRregularityCompleteDecomposition(CMR *cmr, CMR_MATROID_DEC *subtree, CMR_REGULAR_PARAMS *params, CMR_REGULAR_STATS *stats, double timeLimit)
Replaces the subtree of a matroid decomposition tree by a new one.
Definition: regularity.c:199
CMR_ERROR CMRregularitySearchOneSum(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue)
Performs a 1-sum decomposition of matrix and stores it in dec.
Definition: regularity_onesum.c:21
void CMRregularityQueueAdd(DecompositionQueue *queue, DecompositionTask *task)
Adds a task to a decomposition queue.
Definition: regularity.c:96
DecompositionTask * CMRregularityQueueRemove(DecompositionQueue *queue)
Removes a task from a decomposition queue.
Definition: regularity.c:86
CMR_ERROR CMRregularityQueueCreate(CMR *cmr, DecompositionQueue **pqueue)
Initializes a decomposition queue.
Definition: regularity.c:43
CMR_ERROR CMRregularityExtendNestedMinorSequence(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue)
Extends an incomplete sequence of nested 3-connected minors for the matrix of a decomposition node.
Definition: regularity_nested_minor_sequence.c:627
CMR_ERROR CMRregularityQueueFree(CMR *cmr, DecompositionQueue **pqueue)
Frees the decomposition queue.
Definition: regularity.c:58
CMR_ERROR CMRregularityNestedMinorSequenceGraphicness(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue)
Tests each minor of the sequence of nested 3-connected minors for graphicness.
Definition: regularity_graphic.c:1628
CMR_ERROR CMRregularityNestedMinorSequenceCographicness(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue)
Tests each minor of the sequence of nested 3-connected minors for graphicness.
Definition: regularity_graphic.c:1717
CMR_ERROR CMRregularityTestCographicness(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue)
Tests matrix for cographicness/conetwork and stores it in dec.
Definition: regularity_graphic.c:1883
CMR_ERROR CMRregularityTaskCreateRoot(CMR *cmr, CMR_MATROID_DEC *dec, DecompositionTask **ptask, CMR_REGULAR_PARAMS *params, CMR_REGULAR_STATS *stats, clock_t startClock, double timeLimit)
Creates a decomposition task for the root of the decomposition.
Definition: regularity.c:8
bool CMRregularityQueueEmpty(DecompositionQueue *queue)
Returns whether a queue is empty.
Definition: regularity.c:79
struct DecompositionTask DecompositionTask
CMR_ERROR CMRregularityTaskFree(CMR *cmr, DecompositionTask **ptask)
Frees a decomposition task.
Definition: regularity.c:30
CMR_ERROR CMRregularityDecomposeSeriesParallel(CMR *cmr, DecompositionTask *task, DecompositionQueue *queue)
Splits off series-parallel elements from the matrix of the decomposition node.
Definition: regularity_series_parallel.c:12
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
Definition: regular.h:55
Statistics for regular matroid recognition algorithm.
Definition: regular.h:121
Definition: separation.h:52
Row and column indices for a submatrix.
Definition: matrix.h:28
Definition: regularity_internal.h:44
bool foundNongraphicness
Whether non-graphiness was detected for some node.
Definition: regularity_internal.h:47
DecompositionTask * head
Next task to be processed.
Definition: regularity_internal.h:45
bool foundIrregularity
Whether irregularity was detected for some node.
Definition: regularity_internal.h:46
bool foundNoncographicness
Whether non-cographiness was detected for some node.
Definition: regularity_internal.h:48
Definition: regularity_internal.h:11
struct DecompositionTask * next
Next task in queue.
Definition: regularity_internal.h:13
CMR_REGULAR_STATS * stats
Statistics for the computation (may be NULL).
Definition: regularity_internal.h:15
CMR_REGULAR_PARAMS * params
Parameters for the computation.
Definition: regularity_internal.h:14
clock_t startClock
Clock for the start time.
Definition: regularity_internal.h:16
CMR_MATROID_DEC * dec
Decomposition node that shall be processed.
Definition: regularity_internal.h:12
double timeLimit
Time limit to impose.
Definition: regularity_internal.h:17
Definition: matroid_internal.h:16