Concorde fmatch.h functions
CCfmatch_fractional_2match
File:
FMATCH/fmatch.c
Header:
fmatch.h
Prototype:
int CCfmatch_fractional_2match (int ncount, int ecount, int *elist,
int *elen, CCdatagroup *dat, double *val, int *thematching,
int *thedual, int *thebasis, int wantbasic, int silent,
CCrandstate *rstate)
Description:
int ncount (the number of nodes in the graph)
int ecount (the number of edges)
int *elist (the edgelist in end1 end2 format)
int *elen (the weights on the edges)
CCdatagroup *dat (the info to price edges - NULL if no pricing)
double *xcoord (the x-coordinates for geometric problems - this
field can be NULL)
double *ycoord (the y-coordinates)
int innorm (the NORM for pricing the complete edgeset)
double *val (returns the optimal weight)
int *thematching (if non-NULL, then returns the optimal matching
in end1 end2 value format, where value is 1 if
edge gets assigned 0.5 and value is 2 if edge
gets 1.0 - note that the array should be
allocated by the calling routine, and should
be 6 * ncount + 1 long - it is terminated by a
-1)
int *thedual (if non-NULL, then returns the optimal dual solution
with values twice their actual value (so they will
be integers - the array should be alloced by the
calling routine, and should be ncount long)
int *thebasis (if non-NULL, then returns the edges in the optimal
basis in end1 end2 format)
int wantbasis (if nonzero, then the optimal basic solution will
be found)
int silent (if nonzero, will suppress print messages)
NOTES:
Use to find an optimal basis for the initial tsp LP. By changing
MATCHDEGREE to 1, it should find min-wieght fractional matchings.
The nodes should be numbered from 0 up to ncount - 1. If dat
is specified, then the code will use a price-repair loop to solve
the problem over the complete graph.