Newer
Older
#include "Options.h"
#include "MatchMatchers.h"
#define LENGTH 4
int main(int argc, char **argv) {
long Size;
long t;
/* Working arrays for creating optimal path matchings. */
char *_PathMatchings = NULL, **PathMatchings = NULL, *PathMatchingOpt = NULL;
double *_PathMatchingWeights = NULL, *PathMatchingWeights[2];
/* Array containing the matching weights along the constructed path. */
double *PathWeights = (double *)malloc(LENGTH*sizeof(double));
/* Array containing the indices of the vertices along this path. */
long *PathIndices = (long *)malloc(LENGTH*sizeof(long));
long MaxNrVtxInMatch = 2;
/* Set up PathMatchings */
_PathMatchings = (char *)malloc(MaxNrVtxInMatch * LENGTH * sizeof(char));
PathMatchings = (char **)malloc(LENGTH * sizeof(char *));
for(t=0; t<LENGTH; ++t) {
PathMatchings[t] = &(_PathMatchings[t*MaxNrVtxInMatch]);
}
/* Set up PathMatchingWeights */
_PathMatchingWeights = (double *)malloc(2*MaxNrVtxInMatch * sizeof(double));
PathMatchingWeights[0] = &(_PathMatchingWeights[0]);
PathMatchingWeights[1] = &(_PathMatchingWeights[MaxNrVtxInMatch]);
/* Set up PathMatchingOpt */
PathMatchingOpt = (char *)malloc(LENGTH * sizeof(char));
printf("Test FindOptimalPathMatching: ");
/* Solution *=*-*=*-* */
for (t = 0; t < LENGTH; t++) PathMatchingOpt[t] = PathMatchings[t][0] = PathMatchings[t][1] = -1;
PathWeights[0] = 2.0;
PathWeights[1] = 1.9;
PathWeights[2] = 0.5;
PathWeights[3] = 0.4;
Size = FindOptimalPathMatching(PathMatchings, PathMatchingWeights, PathMatchingOpt, PathWeights, LENGTH + 1, MaxNrVtxInMatch);
if (Size != 2 || PathMatchingOpt[0] != 1 || PathMatchingOpt[1] != 0 || PathMatchingOpt[2] != 1 || PathMatchingOpt[3] != 0) {
printf("Error\n");
exit(1);
}
/* Solution *-*=*-*=* */
for (t = 0; t < LENGTH; t++) PathMatchingOpt[t] = PathMatchings[t][0] = PathMatchings[t][1] = -1;
PathWeights[0] = 1.9;
PathWeights[1] = 2.0;
PathWeights[2] = 0.5;
PathWeights[3] = 0.5;
Size = FindOptimalPathMatching(PathMatchings, PathMatchingWeights, PathMatchingOpt, PathWeights, LENGTH + 1, MaxNrVtxInMatch);
if (Size != 2 || PathMatchingOpt[0] != 0 || PathMatchingOpt[1] != 1 || PathMatchingOpt[2] != 0 || PathMatchingOpt[3] != 1) {
printf("Error\n");
exit(1);
}
/* Solution *=*-*-*=* */
for (t = 0; t < LENGTH; t++) PathMatchingOpt[t] = PathMatchings[t][0] = PathMatchings[t][1] = -1;
PathWeights[0] = 2.0;
PathWeights[1] = 1.9;
PathWeights[2] = 0.5;
PathWeights[3] = 0.6;
Size = FindOptimalPathMatching(PathMatchings, PathMatchingWeights, PathMatchingOpt, PathWeights, LENGTH + 1, MaxNrVtxInMatch);
if (Size != 2 || PathMatchingOpt[0] != 1 || PathMatchingOpt[1] != 0 || PathMatchingOpt[2] != 0 || PathMatchingOpt[3] != 1) {
printf("Error\n");
exit(1);
}
free(PathWeights);
free(PathIndices);
free(_PathMatchings);
free(PathMatchings);
free(_PathMatchingWeights);
free(PathMatchingOpt);
printf("OK\n");
exit(0);
} /* end main */