functions to solve many standard b-matching problems More...
Functions | |
SparseMatrix< bool > * | bMatchBipartiteMatrixCache (int rows, int cols, double **W, int *brows, int *bcols, int cacheSize, int maxIters, bool verbose=false) |
SparseMatrix< bool > * | bMatchBipartiteMatrixSparse (int rows, int cols, double **W, int *brows, int *bcols, int maxIters) |
SparseMatrix< bool > * | bMatchBipartiteMatrixSparse (int rows, int cols, double **W, int *brows, int *bcols) |
bool ** | bMatchBipartiteMatrix (int rows, int cols, double **W, int *brows, int *bcols, int maxIters) |
bool ** | bMatchBipartiteMatrix (int rows, int cols, double **W, int *brows, int *bcols) |
SparseMatrix< bool > * | bMatchBipartiteEuclideanCache (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols, int cacheSize, int maxIters, bool verbose=false) |
SparseMatrix< bool > * | bMatchBipartiteEuclideanSparse (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols, int maxIters) |
SparseMatrix< bool > * | bMatchBipartiteEuclideanSparse (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols) |
bool ** | bMatchBipartiteEuclidean (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols, int maxIters) |
bool ** | bMatchBipartiteEuclidean (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols) |
SparseMatrix< bool > * | bMatchBipartiteInnerProductCache (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols, int cacheSize, int maxIters, bool verbose=false) |
SparseMatrix< bool > * | bMatchBipartiteInnerProductSparse (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols, int maxIters) |
SparseMatrix< bool > * | bMatchBipartiteInnerProductSparse (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols) |
bool ** | bMatchBipartiteInnerProduct (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols, int maxIters) |
bool ** | bMatchBipartiteInnerProduct (int rows, int cols, int d, double **X, double **Y, int *brows, int *bcols) |
SparseMatrix< bool > * | bMatchMatrixCache (int size, double **W, int *b, int cacheSize, int maxIters, bool verbose=false) |
SparseMatrix< bool > * | bMatchMatrixSparse (int size, double **W, int *b, int maxIters) |
SparseMatrix< bool > * | bMatchMatrixSparse (int size, double **W, int *b) |
bool ** | bMatchMatrix (int size, double **W, int *b, int maxIters) |
bool ** | bMatchMatrix (int size, double **W, int *b) |
SparseMatrix< bool > * | bMatchEuclideanCache (int size, int d, double **X, int *b, int cacheSize, int maxIters, bool verbose=false) |
SparseMatrix< bool > * | bMatchEuclideanSparse (int size, int d, double **X, int *b, int maxIters) |
SparseMatrix< bool > * | bMatchEuclideanSparse (int size, int d, double **X, int *b) |
bool ** | bMatchEuclidean (int size, int d, double **X, int *b, int maxIters) |
bool ** | bMatchEuclidean (int size, int d, double **X, int *b) |
SparseMatrix< bool > * | bMatchInnerProductCache (int size, int d, double **X, int *b, int cacheSize, int maxIters, bool verbose=false) |
SparseMatrix< bool > * | bMatchInnerProductSparse (int size, int d, double **X, int *b, int maxIters) |
SparseMatrix< bool > * | bMatchInnerProductSparse (int size, int d, double **X, int *b) |
bool ** | bMatchInnerProduct (int size, int d, double **X, int *b, int maxIters) |
bool ** | bMatchInnerProduct (int size, int d, double **X, int *b) |
SparseMatrix< bool > * | solveBMatchingSparse (WeightOracle *wo, int *b, int maxIters, bool verbose=false) |
bool ** | convertToBool (SparseMatrix< bool > *solution) |
int * | cat (int *a, int *b, int aSize, int bSize) |
functions to solve many standard b-matching problems
Contains helper functions that construct the appropriate objects to solve b-matching and executes the solver using standard weight functions
bool ** bmatchingLibrary::bMatchBipartiteEuclidean | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols, | ||
int | maxIters | ||
) |
solves a bipartite matching with negative Euclidean weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
[in] | maxIters | maximum iterations before aborting optimization |
bool ** bmatchingLibrary::bMatchBipartiteEuclidean | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols | ||
) |
solves a bipartite matching with negative Euclidean weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
SparseMatrix< bool > * bmatchingLibrary::bMatchBipartiteEuclideanCache | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols, | ||
int | cacheSize, | ||
int | maxIters, | ||
bool | verbose = false
|
||
) |
solves a bipartite matching with negative Euclidean weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
[in] | cacheSize | number of entries per row to cache |
[in] | maxIters | maximum iterations before aborting optimization |
[in] | verbose | whether to print status |
SparseMatrix< bool > * bmatchingLibrary::bMatchBipartiteEuclideanSparse | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols | ||
) |
solves a bipartite matching with negative Euclidean weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
SparseMatrix< bool > * bmatchingLibrary::bMatchBipartiteEuclideanSparse | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols, | ||
int | maxIters | ||
) |
solves a bipartite matching with negative Euclidean weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
[in] | maxIters | maximum iterations before aborting optimization |
bool ** bmatchingLibrary::bMatchBipartiteInnerProduct | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols, | ||
int | maxIters | ||
) |
solves a bipartite matching with inner product weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
[in] | maxIters | maximum iterations before aborting optimization |
bool ** bmatchingLibrary::bMatchBipartiteInnerProduct | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols | ||
) |
solves a bipartite matching with inner product weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
SparseMatrix< bool > * bmatchingLibrary::bMatchBipartiteInnerProductCache | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols, | ||
int | cacheSize, | ||
int | maxIters, | ||
bool | verbose = false
|
||
) |
solves a bipartite matching with inner product weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
[in] | cacheSize | number of elements per row to cache |
[in] | maxIters | maximum iterations before aborting optimization |
[in] | verbose | whether to print status |
SparseMatrix< bool > * bmatchingLibrary::bMatchBipartiteInnerProductSparse | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols, | ||
int | maxIters | ||
) |
solves a bipartite matching with inner product weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
[in] | maxIters | maximum iterations before aborting optimization |
SparseMatrix< bool > * bmatchingLibrary::bMatchBipartiteInnerProductSparse | ( | int | rows, |
int | cols, | ||
int | d, | ||
double ** | X, | ||
double ** | Y, | ||
int * | brows, | ||
int * | bcols | ||
) |
solves a bipartite matching with inner product weights given the node descriptors
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node, first bipartition |
[in] | Y | node descriptor matrix with each row as vector descriptor of a node, second bipartition |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
bool ** bmatchingLibrary::bMatchBipartiteMatrix | ( | int | rows, |
int | cols, | ||
double ** | W, | ||
int * | brows, | ||
int * | bcols | ||
) |
solves a bipartite matching given the explicit weight matrix
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | W | weight matrix |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
bool ** bmatchingLibrary::bMatchBipartiteMatrix | ( | int | rows, |
int | cols, | ||
double ** | W, | ||
int * | brows, | ||
int * | bcols, | ||
int | maxIters | ||
) |
solves a bipartite matching given the explicit weight matrix
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | W | weight matrix |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
[in] | maxIters | maximum iterations before aborting optimization |
SparseMatrix< bool > * bmatchingLibrary::bMatchBipartiteMatrixCache | ( | int | rows, |
int | cols, | ||
double ** | W, | ||
int * | brows, | ||
int * | bcols, | ||
int | cacheSize, | ||
int | maxIters, | ||
bool | verbose = false
|
||
) |
solves a bipartite matching given the explicit weight matrix
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | W | weight matrix |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
[in] | cacheSize | number of entries to cache per row |
[in] | maxIters | maximum iterations before aborting optimization |
[in] | verbose | whether to print status |
SparseMatrix< bool > * bmatchingLibrary::bMatchBipartiteMatrixSparse | ( | int | rows, |
int | cols, | ||
double ** | W, | ||
int * | brows, | ||
int * | bcols, | ||
int | maxIters | ||
) |
solves a bipartite matching given the explicit weight matrix
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | W | weight matrix |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
[in] | maxIters | maximum iterations before aborting optimization |
SparseMatrix< bool > * bmatchingLibrary::bMatchBipartiteMatrixSparse | ( | int | rows, |
int | cols, | ||
double ** | W, | ||
int * | brows, | ||
int * | bcols | ||
) |
solves a bipartite matching given the explicit weight matrix
[in] | rows | total number of rows (number of nodes in first bipartition) |
[in] | cols | total number of columns (number of nodes in second bipartition) |
[in] | W | weight matrix |
[in] | brows | int vector of target degrees for rows (first bipartition) |
[in] | bcols | int vector of target degrees for columns (second bipartition) |
bool ** bmatchingLibrary::bMatchEuclidean | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b, | ||
int | maxIters | ||
) |
solves a unipartite matching with negative Euclidean weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
[in] | maxIters | maximum iterations before aborting optimization |
bool ** bmatchingLibrary::bMatchEuclidean | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b | ||
) |
solves a unipartite matching with negative Euclidean weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
SparseMatrix< bool > * bmatchingLibrary::bMatchEuclideanCache | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b, | ||
int | cacheSize, | ||
int | maxIters, | ||
bool | verbose = false
|
||
) |
solves a unipartite matching with negative Euclidean weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
[in] | cacheSize | number of entries per row to cache |
[in] | maxIters | maximum iterations before aborting optimization |
[in] | verbose | whether to print status |
SparseMatrix< bool > * bmatchingLibrary::bMatchEuclideanSparse | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b, | ||
int | maxIters | ||
) |
solves a unipartite matching with negative Euclidean weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
[in] | maxIters | maximum iterations before aborting optimization |
SparseMatrix< bool > * bmatchingLibrary::bMatchEuclideanSparse | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b | ||
) |
solves a unipartite matching with negative Euclidean weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
bool ** bmatchingLibrary::bMatchInnerProduct | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b | ||
) |
solves a unipartite matching with negative inner product weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
bool ** bmatchingLibrary::bMatchInnerProduct | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b, | ||
int | maxIters | ||
) |
solves a unipartite matching with negative inner product weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
[in] | maxIters | maximum iterations before aborting optimization |
SparseMatrix< bool > * bmatchingLibrary::bMatchInnerProductCache | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b, | ||
int | cacheSize, | ||
int | maxIters, | ||
bool | verbose = false
|
||
) |
solves a unipartite matching with negative inner product weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
[in] | cacheSize | number of entries per row to cache |
[in] | maxIters | maximum iterations before aborting optimization |
[in] | verbose | whether to print status |
SparseMatrix< bool > * bmatchingLibrary::bMatchInnerProductSparse | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b, | ||
int | maxIters | ||
) |
solves a unipartite matching with negative inner product weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
[in] | maxIters | maximum iterations before aborting optimization |
SparseMatrix< bool > * bmatchingLibrary::bMatchInnerProductSparse | ( | int | size, |
int | d, | ||
double ** | X, | ||
int * | b | ||
) |
solves a unipartite matching with negative inner product weights given the node descriptors
[in] | size | total number of nodes |
[in] | d | dimensionality of descriptor vectors |
[in] | X | node descriptor matrix with each row as vector descriptor of a node |
[in] | b | int vector of target degrees for all nodes |
bool ** bmatchingLibrary::bMatchMatrix | ( | int | size, |
double ** | W, | ||
int * | b, | ||
int | maxIters | ||
) |
solves a unipartite matching given explicit weight matrix
[in] | size | total number of nodes |
[in] | W | weight matrix |
[in] | b | int vector of target degrees for each node |
[in] | maxIters | maximum iterations before aborting optimization |
bool ** bmatchingLibrary::bMatchMatrix | ( | int | size, |
double ** | W, | ||
int * | b | ||
) |
solves a unipartite matching given explicit weight matrix
[in] | size | total number of nodes |
[in] | W | weight matrix |
[in] | b | int vector of target degrees for each node |
SparseMatrix< bool > * bmatchingLibrary::bMatchMatrixCache | ( | int | size, |
double ** | W, | ||
int * | b, | ||
int | cacheSize, | ||
int | maxIters, | ||
bool | verbose = false
|
||
) |
solves a unipartite matching given explicit weight matrix
[in] | size | total number of nodes |
[in] | W | weight matrix |
[in] | b | int vector of target degrees for each node |
[in] | maxIters | maximum iterations before aborting optimization |
[in] | cacheSize | number of entries per row to cache |
[in] | verbose | whether to print status |
SparseMatrix< bool > * bmatchingLibrary::bMatchMatrixSparse | ( | int | size, |
double ** | W, | ||
int * | b, | ||
int | maxIters | ||
) |
solves a unipartite matching given explicit weight matrix
[in] | size | total number of nodes |
[in] | W | weight matrix |
[in] | b | int vector of target degrees for each node |
[in] | maxIters | maximum iterations before aborting optimization |
SparseMatrix< bool > * bmatchingLibrary::bMatchMatrixSparse | ( | int | size, |
double ** | W, | ||
int * | b | ||
) |
solves a unipartite matching given explicit weight matrix
[in] | size | total number of nodes |
[in] | W | weight matrix |
[in] | b | int vector of target degrees for each node |
int * bmatchingLibrary::cat | ( | int * | a, |
int * | b, | ||
int | aSize, | ||
int | bSize | ||
) |
concatonates two vectors
[in] | a | first vector |
[in] | b | second vector |
[in] | aSize | length of a |
[in] | bSize | length of b |
bool ** bmatchingLibrary::convertToBool | ( | SparseMatrix< bool > * | solution ) |
converts a SparseMatrix object to a full boolean matrix
[in] | solution | pointer to solution SparseMatrix |
SparseMatrix< bool > * bmatchingLibrary::solveBMatchingSparse | ( | WeightOracle * | wo, |
int * | b, | ||
int | maxIters, | ||
bool | verbose = false
|
||
) |
solves a b-matching given the weight oracle and degree constraints
[in] | wo | weight oracle for edge weights of graph |
[in] | b | int vector of target degrees for nodes |
[in] | maxIters | maximum iterations before aborting optimization |
[in] | verbose | whether to print status |