Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
b1562190
Commit
b1562190
authored
Sep 25, 2006
by
Christian Würdig
Browse files
changed api
[r8292]
parent
2a773714
Changes
2
Hide whitespace changes
Inline
Side-by-side
ir/adt/hungarian.c
View file @
b1562190
...
...
@@ -184,7 +184,7 @@ void hungarian_free(hungarian_problem_t* p) {
/**
* Do the assignment.
*/
int
hungarian_solve
(
hungarian_problem_t
*
p
,
int
*
assignment
,
int
*
final_cost
)
{
int
hungarian_solve
(
hungarian_problem_t
*
p
,
int
*
assignment
,
int
*
final_cost
,
int
cost_threshold
)
{
int
i
,
j
,
m
,
n
,
k
,
l
,
s
,
t
,
q
,
unmatched
,
cost
;
int
*
col_mate
;
int
*
row_mate
;
...
...
@@ -408,7 +408,10 @@ done:
/* collect the assigned values */
for
(
i
=
0
;
i
<
m
;
++
i
)
{
assignment
[
i
]
=
col_mate
[
i
];
if
(
cost_threshold
>
0
&&
p
->
cost
[
i
][
col_mate
[
i
]]
>=
cost_threshold
)
assignment
[
i
]
=
-
1
;
/* remove matching having cost > threshold */
else
assignment
[
i
]
=
col_mate
[
i
];
}
/* In case of normal matching: remove impossible ones */
...
...
ir/adt/hungarian.h
View file @
b1562190
...
...
@@ -3,7 +3,8 @@
**
** libhungarian by Cyrill Stachniss, 2004
**
** Added and adapted to libFirm by Christian Wuerdig, 2006
** Added to libFirm by Christian Wuerdig, 2006
** Added several options for not-perfect matchings.
**
** Solving the Minimum Assignment Problem using the
** Hungarian Method.
...
...
@@ -44,7 +45,9 @@ typedef struct _hungarian_problem_t hungarian_problem_t;
* @param rows Number of rows in the given matrix
* @param cols Number of cols in the given matrix
* @param width Element width for matrix dumping
* @param match_type The type of matching HUNGARIAN_MATCH_NORMAL or HUNGARIAN_MATCH_PERFECT
* @param match_type The type of matching:
* HUNGARIAN_MATCH_PERFECT - every nodes matches another node
* HUNGARIAN_MATCH_NORMAL - matchings of nodes having no edge getting removed
* @return The problem object.
*/
hungarian_problem_t
*
hungarian_new
(
int
rows
,
int
cols
,
int
width
,
int
match_type
);
...
...
@@ -74,12 +77,13 @@ void hungarian_free(hungarian_problem_t *p);
/**
* This method computes the optimal assignment.
* @param p The hungarian object
* @param assignment The final assignment
* @param final_cost The final costs
* @param p The hungarian object
* @param assignment The final assignment
* @param final_cost The final costs
* @param cost_threshold Matchings with costs >= this limit will be removed (if limit > 0)
* @return 0 on success, negative number otherwise
*/
int
hungarian_solve
(
hungarian_problem_t
*
p
,
int
*
assignment
,
int
*
final_cost
);
int
hungarian_solve
(
hungarian_problem_t
*
p
,
int
*
assignment
,
int
*
final_cost
,
int
cost_threshold
);
/**
* Print the cost matrix.
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment