예제 #1
0
  private Node chooseNextNode() {
    int max = Integer.MAX_VALUE;
    Node tmpnode = null;

    for (Node node : this.allNodes) {
      if (!node.isVisited() && node.getDistance() < max && node.distance != -1) {
        max = node.getDistance();
        tmpnode = node;
      }
    }

    return tmpnode;
  }
예제 #2
0
  private void distanz_update() {
    Node aktnode = this.allNodes[this.startNode];

    do { // Solange es noch unbesuchte Knoten gibt
      aktnode.setVisited();

      // Alle Nachbarn des aktuellen Knotens
      for (Node node : aktnode.getNeighbors()) {
        if (node.getDistance()
                > aktnode.getDistance() + graph.getDistance(aktnode.getId(), node.getId())
            || node.getDistance() == -1) {
          node.setDistance(
              aktnode.getDistance() + graph.getDistance(aktnode.getId(), node.getId()));
          node.setPredecessor(aktnode);
        }
      }

      aktnode = chooseNextNode();

    } while (unvisitedNodes());
  }