libFirm 1.20
|
Solves bipartite matching problems (minimize/maximize cost function) More...
Typedefs | |
typedef struct hungarian_problem_t | hungarian_problem_t |
Internal representation of a bipartite matching problem. | |
Enumerations | |
enum | match_type_t { HUNGARIAN_MATCH_NORMAL, HUNGARIAN_MATCH_PERFECT } |
type of matching More... | |
enum | hungarian_mode_t { HUNGARIAN_MODE_MINIMIZE_COST, HUNGARIAN_MODE_MAXIMIZE_UTIL } |
mode of matching (the optimization goal) More... | |
Functions | |
hungarian_problem_t * | hungarian_new (unsigned num_rows, unsigned num_cols, match_type_t match_type) |
This method initialize the hungarian_problem structure and init the cost matrix (missing lines or columns are filled with 0). | |
void | hungarian_add (hungarian_problem_t *p, unsigned left, unsigned right, unsigned cost) |
Adds an edge from left to right with some costs. | |
void | hungarian_remove (hungarian_problem_t *p, unsigned left, unsigned right) |
Removes the edge from left to right. | |
void | hungarian_prepare_cost_matrix (hungarian_problem_t *p, hungarian_mode_t mode) |
Prepares the cost matrix dependent on the given mode. | |
void | hungarian_free (hungarian_problem_t *p) |
Destroys the hungarian object. | |
int | hungarian_solve (hungarian_problem_t *p, unsigned *assignment, unsigned *final_cost, unsigned cost_threshold) |
This method computes the optimal assignment. | |
void | hungarian_print_cost_matrix (hungarian_problem_t *p, int cost_width) |
Print the cost matrix. |
Solves bipartite matching problems (minimize/maximize cost function)
typedef struct hungarian_problem_t hungarian_problem_t |
Internal representation of a bipartite matching problem.
Definition at line 60 of file hungarian.h.
enum hungarian_mode_t |
mode of matching (the optimization goal)
Definition at line 52 of file hungarian.h.
enum match_type_t |
type of matching
HUNGARIAN_MATCH_NORMAL |
ever nodes matches another node |
HUNGARIAN_MATCH_PERFECT |
matchings of nodes having no edge getting removed |
Definition at line 45 of file hungarian.h.
void hungarian_add | ( | hungarian_problem_t * | p, |
unsigned | left, | ||
unsigned | right, | ||
unsigned | cost | ||
) |
Adds an edge from left to right with some costs.
void hungarian_free | ( | hungarian_problem_t * | p | ) |
Destroys the hungarian object.
hungarian_problem_t* hungarian_new | ( | unsigned | num_rows, |
unsigned | num_cols, | ||
match_type_t | match_type | ||
) |
This method initialize the hungarian_problem structure and init the cost matrix (missing lines or columns are filled with 0).
num_rows | Number of rows in the given matrix |
num_cols | Number of cols in the given matrix |
match_type | The type of matching |
void hungarian_prepare_cost_matrix | ( | hungarian_problem_t * | p, |
hungarian_mode_t | mode | ||
) |
Prepares the cost matrix dependent on the given mode.
p | The hungarian object |
mode | specify whether to minimize or maximize the costs |
void hungarian_print_cost_matrix | ( | hungarian_problem_t * | p, |
int | cost_width | ||
) |
Print the cost matrix.
p | The hungarian object |
cost_width | The minimum field width of the costs |
void hungarian_remove | ( | hungarian_problem_t * | p, |
unsigned | left, | ||
unsigned | right | ||
) |
Removes the edge from left to right.
int hungarian_solve | ( | hungarian_problem_t * | p, |
unsigned * | assignment, | ||
unsigned * | final_cost, | ||
unsigned | cost_threshold | ||
) |
This method computes the optimal assignment.
p | The hungarian object |
assignment | The final assignment |
final_cost | The final costs |
cost_threshold | Matchings with costs >= this limit will be removed (if limit > 0) |