Skip to content
Snippets Groups Projects
test_FindOptimalPathMatching.c 3.14 KiB
Newer Older
  • Learn to ignore specific revisions
  • #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 */