Package graphmatcher.graph

Examples of graphmatcher.graph.Edge


      break;
    }
    case EDGE_MATCHING: {
      System.out.println("Kantenmatching:");
      for (int i = 0; i < matching.length; i++) {
        Edge patternEdge = pattern.virtualEdges()[i];
        Edge templateEdge = null;
        if (matching[i] != -1) {
          templateEdge = template.virtualEdges()[matching[i]];
        }
        System.out.println(patternEdge + " -> " + templateEdge);
      }
View Full Code Here


    Edge[] templateVirtualEdges = template.virtualEdges();
    int numberOfMatchedEdges = 0;
    int numberOfEdgeOnEdgeMatches = 0;
    boolean matched;
    for (int i = 0; i < patternEdges.length; i++) {
      Edge patternEdge = patternEdges[i];
      if (matching[patternEdge.vertex1] < 0 || matching[patternEdge.vertex2] < 0) {
        continue;
      }
      numberOfMatchedEdges++;
      matched = false;
      for (int j = 0; j < templateVirtualEdges.length; j++) {
        Edge templateVirtualEdge = templateVirtualEdges[j];
        if (matched(patternEdge, templateVirtualEdge)) {
          matched = true;
          numberOfEdgeOnEdgeMatches++;
          break;
        }
View Full Code Here

      // boolean[][] match1on1 =
      // EdgeRater.getMatch1On1Array(deformedPattern, template);
      boolean[][] match1on1 = EdgeRater.getMatch1On1Array(pattern, template);
      int edgeOnEdgeCounter = 0;
      for (int currentPatternEdgeID = 0; currentPatternEdgeID < pattern.virtualEdges().length; currentPatternEdgeID++) {
        Edge patternEdge = pattern.virtualEdges()[currentPatternEdgeID];
        int templateVertex1 = matching[patternEdge.vertex1];
        int templateVertex2 = matching[patternEdge.vertex2];
        if (templateVertex1 == -1 || templateVertex2 == -1) {
          // Kante wurde nicht gematcht
          continue;
View Full Code Here

    gr.translate(5d, 5d);
    gr.translate((double) -rectangle.x, (double) rectangle.y + rectangle.height);

    gr.setColor(edgeColor);
    for (int i = 0; i < g.edges().length; i++) {
      Edge e = g.edges()[i];

      Vertex p = g.vertices()[e.vertex1];
      Vertex q = g.vertices()[e.vertex2];
      gr.drawLine(p.x, -p.y, q.x, -q.y);
      // gr.drawLine(p.iX, d.height - p.iY, q.iX, d.height - q.iY);
View Full Code Here

      int vertex1 = random.nextInt(numberOfVertices);
      int vertex2 = vertex1;
      while (vertex1 == vertex2) {
        vertex2 = random.nextInt(numberOfVertices);
      }
      edges[i] = new Edge(vertex1, vertex2);
    }
    return new Graph(vertices, edges);
  }
View Full Code Here

    LinkedHashMap<Integer, Vector<Integer>> map = maxCandidate.getMatching();
    Set<Integer> patternEdgeIDs = map.keySet();
    for (Integer patternEdgeID : patternEdgeIDs) {
      Vector<Integer> templateEdgeIDs = map.get(patternEdgeID);
      int bestEdgeID = 0;
      Edge bestEdge;
      double maxRating = -1;
      for (Integer templateEdgeID : templateEdgeIDs) {
        double rating = EdgeRater.computeInitialEdgeRating(pattern, patternEdgeID.intValue(),
            template, templateEdgeID.intValue(), match1On1, matchingOptions);

        Edge templateEdge = template.virtualEdges()[templateEdgeID.intValue()];
        // double length = DistanceHelper.getLength(templateEdge,
        // template);
        if (rating > maxRating) {
          maxRating = rating;
          bestEdge = templateEdge;
View Full Code Here

    logger.info(candidates.size() + " Kandidaten werden ausgewertet");
    for (Candidate candidate : candidates) {
      LinkedHashMap<Integer, Vector<Integer>> candidateMatching = candidate.getMatching();
      Set<Integer> patternEdges = candidateMatching.keySet();
      for (Integer patternEdgeID : patternEdges) {
        Edge patternEdge = pattern.virtualEdges()[patternEdgeID];

        // TODO: ist das korrekt ;-)
        for (Integer templateEdgeID : candidateMatching.get(patternEdgeID)) {
          Edge templateEdge = template.virtualEdges()[templateEdgeID];

          if (match1on1Array[patternEdgeID][templateEdgeID]) {
            put2(vertexMatchingMap, patternEdge.vertex1, templateEdge.vertex1);
            put2(vertexMatchingMap, patternEdge.vertex2, templateEdge.vertex2);
          } else {
View Full Code Here

      for (int ccEdgeID = 0; ccEdgeID < ccEdgeIds.length; ccEdgeID++) {
        int patternEdgeID = ccEdgeIds[ccEdgeID];

        CandidateBundle bundle = new CandidateBundle(pattern, template, patternEdgeID, match1on1,
            matchingOptions);
        Edge e = pattern.virtualEdges()[patternEdgeID];
        Edge gesuchtePatternEdge = new Edge(32, 22);
        if (e.equals(gesuchtePatternEdge)) {
          System.out.println("PatternEdge gefunden.");
        }
        double bestRating = 0;
        int bestTemplateEdgeID = -1;

        for (int templateEdgeID = 0; templateEdgeID < numberOfVirtualEdgesInTemplate; templateEdgeID++) {
          Edge e2 = template.virtualEdges()[templateEdgeID];
          Edge gesuchteTemplateEdge = new Edge(24, 18);
          if (e.equals(gesuchtePatternEdge) && e2.equals(gesuchteTemplateEdge)) {
            System.out.println("Kantenpaar gefunden");
          }

          double rating = EdgeRater.computeInitialEdgeRating(pattern, patternEdgeID, template,
View Full Code Here

      int templateEdge, boolean[][] match1on1Array, MatchingOptions matchingOptions) {
    boolean match1on1 = match1On1(pattern, template, patternEdge, templateEdge, matchingOptions
        .isNoRotation());
    match1on1Array[patternEdge][templateEdge] = match1on1;

    Edge pEdge = pattern.virtualEdges()[patternEdge];
    double pEdgeLength = DistanceHelper.getLength(pEdge, pattern);
    double pMaxEdgeLength = pattern.getLengthOfLongestEdge();
    // double pEdgeDistanceToCenter =
    // DistanceHelper.getDistanceToCenter(pEdge, pattern);
    double pMaxDistanceToCenter = pattern.getMaximumVertexDistanceToCenter();
    // pMaxDistanceToCenter = pattern.getLengthOfAllEdges();
    double pLengthBonus = getBonus(pEdgeLength, pMaxEdgeLength);
    // double pDistanceBonus = getBonus(pEdgeDistanceToCenter,
    // pMaxDistanceToCenter);

    Edge tEdge = template.virtualEdges()[templateEdge];
    double tEdgeLength = DistanceHelper.getLength(tEdge, template);
    double tMaxEdgeLength = template.getLengthOfLongestEdge();
    // double tEdgeDistanceToCenter =
    // DistanceHelper.getDistanceToCenter(tEdge, template);
    double tMaxDistanceToCenter = template.getMaximumVertexDistanceToCenter();
View Full Code Here

  public static double rateMatchingPair(Graph pattern, Graph template, int patternEdge1, int templateEdge1,
      int patternEdge2, int templateEdge2, boolean[][] match1on1Array) {
    // if (patternEdge1 >= pattern.virtualEdges().length) {
    // System.out.println("?");
    // }
    Edge pEdge1 = pattern.virtualEdges()[patternEdge1];
    Edge tEdge1 = template.virtualEdges()[templateEdge1];
    Edge pEdge2 = pattern.virtualEdges()[patternEdge2];
    Edge tEdge2 = template.virtualEdges()[templateEdge2];

    boolean match1On1_1 = match1on1Array[patternEdge1][templateEdge1];
    boolean match1On1_2 = match1on1Array[patternEdge2][templateEdge2];

    double ratio = rateMatchingPair2(pattern, template, pEdge1, tEdge1, match1On1_1, pEdge2, tEdge2,
View Full Code Here

TOP

Related Classes of graphmatcher.graph.Edge

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.