private String relax(Vertex currVertex, Vertex neighbor) {
    StringBuilder returnValue = new StringBuilder("");

    // Kantengewicht der Kante zwischen dem aktuellen Knoten und seinem Nachbarn
    Object o = graph.getEdgeMap().get(currVertex.getId(), neighbor.getId());
    if (o == null) {
      o = graph.getEdgeMap().get(neighbor.getId(), currVertex.getId());
    }
    int weight = (int) o;

    // gesamte alternative Distanz zum Nachbarknoten
    int alternativeDist = currVertex.getDist() + weight;

    // wenn alternative Distanz kürzer als die aktuelle ist (Verbesserung)
    if (alternativeDist < neighbor.getDist()) {

      // textarea-Ausgabe
      String oldDistance = "" + neighbor.getDist();
      if (neighbor.getDist() == Integer.MAX_VALUE) {
        oldDistance = "\u221E";
      }
      returnValue.append("Kante zwischen " + currVertex.getId() + " und " + neighbor.getId() + " wurde verbessert ("
          + oldDistance + " \u21D2 " + alternativeDist + ")");

      // neue Distanz setzen
      neighbor.setDist(alternativeDist);
      // neuen Vorgänger setzen
      pred[neighbor.getId()] = currVertex;
    }

    return returnValue.toString();
  }