CMR  1.3.0
total_unimodularity.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cmr/config.h>
4 #include <cmr/export.h>
5 
6 #include "common.hpp"
7 
8 namespace tu
9 {
11 
12  class decomposed_matroid;
13 
23  CMR_EXPORT
24  decomposed_matroid* decompose_binary_matroid(const integer_matrix& matrix, log_level level = LOG_QUIET);
25 
36  CMR_EXPORT
37  bool is_totally_unimodular(const integer_matrix& matrix, log_level level = LOG_QUIET);
38 
53  CMR_EXPORT
54  bool is_totally_unimodular(const integer_matrix& matrix, decomposed_matroid*& decomposition, log_level level = LOG_QUIET);
55 
69  CMR_EXPORT
70  bool is_totally_unimodular(const integer_matrix& matrix, submatrix_indices& violator, log_level level = LOG_QUIET);
71 
89  CMR_EXPORT
90  bool is_totally_unimodular(const integer_matrix& matrix, decomposed_matroid*& decomposition, submatrix_indices& violator, log_level level =
91  LOG_QUIET);
92 
100  CMR_EXPORT
101  bool is_zero_plus_minus_one_matrix(const integer_matrix& matrix);
102 
112  CMR_EXPORT
113  bool is_zero_plus_minus_one_matrix(const integer_matrix& matrix, std::pair <integer_matrix::size_type, integer_matrix::size_type>& position);
114 
122  CMR_EXPORT
123  bool is_zero_one_matrix(const integer_matrix& matrix);
124 
134  CMR_EXPORT
135  bool is_zero_one_matrix(const integer_matrix& matrix, std::pair <integer_matrix::size_type, integer_matrix::size_type>& position);
136 
145  CMR_EXPORT
146  bool is_signed_matrix(const integer_matrix& matrix);
147 
158  CMR_EXPORT
159  bool is_signed_matrix(const integer_matrix& matrix, submatrix_indices& violator);
160 
169  CMR_EXPORT
170  bool sign_matrix(integer_matrix& matrix);
171 
178  CMR_EXPORT
179  void support_matrix(integer_matrix& matrix);
180 
189  CMR_EXPORT
190  int submatrix_determinant(const integer_matrix& matrix, const submatrix_indices& submatrix);
191 
199  CMR_EXPORT
201 
211  CMR_EXPORT
212  bool determinant_is_totally_unimodular(const integer_matrix& matrix, submatrix_indices& violator);
213 
221  CMR_EXPORT
223 
231  CMR_EXPORT
233 
242  CMR_EXPORT
244 
245 } /* namespace tu */
Definition: algorithm.hpp:14
bool is_signed_matrix(const integer_matrix &matrix)
Definition: total_unimodularity.cpp:397
bool ghouila_houri_is_totally_unimodular(const integer_matrix &matrix)
Definition: ghouila_houri.cpp:159
void support_matrix(integer_matrix &matrix)
Definition: total_unimodularity.cpp:462
int submatrix_determinant(const integer_matrix &matrix, const submatrix_indices &submatrix)
Definition: determinant.cpp:21
log_level
Definition: common.hpp:36
@ LOG_QUIET
Definition: common.hpp:37
CMR_EXPORT bool is_zero_one_matrix(const integer_matrix &matrix)
Definition: zero_plus_minus_one.cpp:87
bool ghouila_houri_is_totally_unimodular_enum_rows(const integer_matrix &matrix)
Definition: ghouila_houri.cpp:131
bool ghouila_houri_is_totally_unimodular_enum_columns(const integer_matrix &matrix)
Definition: ghouila_houri.cpp:144
boost::numeric::ublas::matrix< long long > integer_matrix
Definition: common.hpp:27
bool sign_matrix(M &matrix, submatrix_indices *violator)
Definition: signing.hpp:138
bool determinant_is_totally_unimodular(const integer_matrix &matrix)
Definition: determinant.cpp:100
std::pair< bool, decomposed_matroid * > decompose_binary_matroid(MatroidType &matroid, MatrixType &matrix, matroid_element_set extra_elements, bool construct_decomposition, logger &log)
Forward declaration.
Definition: algorithm.hpp:484
CMR_EXPORT bool is_zero_plus_minus_one_matrix(const integer_matrix &matrix)
Definition: zero_plus_minus_one.cpp:45
bool is_totally_unimodular(const integer_matrix &matrix, log_level level)
Definition: total_unimodularity.cpp:47