#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 */