Examples of WeightedEdge


Examples of lt.refactory.primsAlgo.graph.WeightedEdge

    Graph<WeightedEdge> smallestTreeWithSteinersPoint = new Graph<WeightedEdge>(smallestTreeFull);
    BigDecimal biggestDifference = BigDecimal.ZERO;
    try {
     
      while (smallestTree.getEdgeListSize() > 1) {
        WeightedEdge leave = SteinersAlgorithm.getGraphLeave(smallestTree);
       
        // if no more leaves are in graph return result
        if (leave == null) {
          return smallestTreeWithSteinersPoint;
        }
       
        WeightedEdge nearEdge = smallestTree.getNearEdges(leave).get(0)// leave always have one near edge
        BigDecimal angleBetweenEdges = SteinersAlgorithm.getAngleBetweenTwoEdges(leave, nearEdge);
       
        if (angleBetweenEdges.compareTo(BigDecimal.valueOf(120)) == -1) {
          // Torichelli procedure for steiners point:
          Graph<WeightedEdge> triangle = SteinersAlgorithm.getTriangleWithWeights(leave, nearEdge);
          Graph<WeightedEdge> equilateralTriangle = SteinersAlgorithm.getEquilateralTriangle(triangle);
          Circle circumscribedCircle = SteinersAlgorithm.getCircumscribedCircle(equilateralTriangle);
          WeightedEdge edgeThroughTriangles = SteinersAlgorithm.getEdgeThroughTriangles(triangle, equilateralTriangle);
          Node steinersPoint = SteinersAlgorithm.getSteinersPoint(edgeThroughTriangles, circumscribedCircle);
         
          if (steinersPoint != null) {
            // Calculate how much graph is shorter than initial graph
            Graph<WeightedEdge> changedGraph = SteinersAlgorithm.changeGraphEdges(smallestTreeFull, leave, nearEdge, steinersPoint);
View Full Code Here

Examples of lt.refactory.primsAlgo.graph.WeightedEdge

    // circle radius equation r = sqrt(3) / 3 * a
    BigDecimal radius = BigDecimal.valueOf((Math.sqrt(3) / 3) * triangle.getEdgeList().get(0).getWeight().doubleValue());
   
    // we need two edges for center point finding
    WeightedEdge firstEdge = triangle.getEdgeList().get(0);
    WeightedEdge secondEdge = triangle.getEdgeList().get(1);
   
    // find middle-edge edges
    WeightedEdge firstMiddleEdge = getMiddleEdge(firstEdge, secondEdge);
    WeightedEdge secondMiddleEdge = getMiddleEdge(secondEdge, firstEdge);
   
    LinearFunctionParameters firstEdgeParameters = getLinearFunctionParameters(firstMiddleEdge.getStart(), firstMiddleEdge.getEnd());
    LinearFunctionParameters secondEdgeParameters = getLinearFunctionParameters(secondMiddleEdge.getStart(), secondMiddleEdge.getEnd());
   
    BigDecimal centerX = null;
    BigDecimal centerY = null;
   
    // special case when one of the edges is vertical
    if (firstEdgeParameters.getDx().compareTo(BigDecimal.ZERO) == 0) {
     
      centerX = firstMiddleEdge.getStart().getPointX();
      centerY = secondEdgeParameters.getK()
          .multiply(centerX)
          .add(secondEdgeParameters.getB());
     
    } else if (secondEdgeParameters.getDx().compareTo(BigDecimal.ZERO) == 0 ) {
     
      centerX = secondMiddleEdge.getStart().getPointX();
      centerY = firstEdgeParameters.getK()
          .multiply(centerX)
          .add(firstEdgeParameters.getB());
    } else {
      // x = (b2 - b1) / ( k1 - k2 )
View Full Code Here

Examples of lt.refactory.primsAlgo.graph.WeightedEdge

    BigDecimal midX = mainEdge.getEnd().getPointX().add(mainEdge.getStart().getPointX()).divide(BigDecimal.valueOf(2));
    BigDecimal midY = mainEdge.getEnd().getPointY().add(mainEdge.getStart().getPointY()).divide(BigDecimal.valueOf(2));
    Node anotherPoint = mainEdge.containsNode(nearEdge.getStart()) ? nearEdge.getEnd() : nearEdge.getStart();
    Edge midEdge = new Edge(new Node(midX, midY), anotherPoint);
   
    return new WeightedEdge(midEdge, getEdgeLength(midEdge));
  }
View Full Code Here

Examples of lt.refactory.primsAlgo.graph.WeightedEdge

    }
   
    Edge resultEdge = new Edge(resultNodes.get(0), resultNodes.get(1));
    BigDecimal weight = getEdgeLength(resultEdge);
   
    return new WeightedEdge(resultEdge, weight);
  }
View Full Code Here

Examples of lt.refactory.primsAlgo.graph.WeightedEdge

      thirdNewEdge = new Edge(nearEdge.getEnd(), steinerPoint);
    } else {
      thirdNewEdge = new Edge(nearEdge.getStart(), steinerPoint);
    }
   
    WeightedEdge firstWeightedEdge = new WeightedEdge(firstNewEdge, getEdgeLength(firstNewEdge));
    WeightedEdge secondWeightedEdge = new WeightedEdge(secondNewEdge, getEdgeLength(secondNewEdge));
    WeightedEdge thirdWeightedEdge = new WeightedEdge(thirdNewEdge, getEdgeLength(thirdNewEdge));
   
    // add new edges
    try {
      currentGraph.addEdgeWithNodes(firstWeightedEdge);
      currentGraph.addEdgeWithNodes(secondWeightedEdge);
View Full Code Here

Examples of lt.refactory.primsAlgo.graph.WeightedEdge

  public static Graph<WeightedEdge> getWeightedGraph(Graph<Edge> graph) {
    Graph<WeightedEdge> resultGraph = new Graph<WeightedEdge>();
   
    for (Edge edge : graph.getEdgeList()) {
      try {
        resultGraph.addEdgeWithNodes(new WeightedEdge(edge, getEdgeLength(edge)));
      } catch (AddEdgeException ex) {
        ex.printStackTrace();
      }
    }
   
View Full Code Here

Examples of lt.refactory.primsAlgo.graph.WeightedEdge

    for (Edge edge : graph.getEdgeList()) {
      BigDecimal length = lengthBetweenNodes(edge.getStart(),
          edge.getEnd());
      @SuppressWarnings("unchecked")
      T edgeWithWeight = (T) new WeightedEdge(edge, length);

      try {
        resultGraph.addEdge(edgeWithWeight);
      } catch (AddEdgeException e) {
        e.printStackTrace();
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.