private GraphModel groupHelpVertexes(GraphModel newGraph, int K) {

		ArrayList<GraphPoint> p = new ArrayList<GraphPoint>();
		for (Vertex v : newGraph.getVertexArray()) {
			// Alle Punkte, die 'noch zu Relokalisieren' sind (Hilfspunkte)
			// werden gesammelt...
			if (v.getLabel().equals("noch zu Relokalisieren"))
				p.add(v.getLocation());
		}
		GraphPoint[] pArray = p.toArray(new GraphPoint[p.size()]);
		// ... und an den KMeans uebergeben....
		Cluster[] c = LloydKMeans.cluster(pArray, K);
		// ... um die Clustermenge zu erhalten.

		for (Cluster cluster : c) {
			// Fuer jeden Cluster wird ein Mittelpunktvertex angelegt...
			Vertex centerVertex = new Vertex();
			centerVertex.setLabel("");
			centerVertex.setLocation(cluster.getCenter());
			newGraph.addVertex(centerVertex);

			for (GraphPoint pointC : cluster.getMembers()) {
				// ... und alle Hilfspunkte des Clusters auf diesen umgelegt...
				for (int i = 0; i < newGraph.getVerticesCount(); i++) {
					if (newGraph.getVertex(i).getLocation().equals(pointC)) {
						// ... indem sie im Graph gefunden werden,...
						Vertex actualVertex = newGraph.getVertex(i);
						Iterator<Vertex> list = newGraph.getNeighbors(actualVertex).iterator();
						Vertex a = list.next();
						Vertex b = list.next();
						// ...ihre Verbindungen mit ihren Nachbarn fuer den
						// Mittelpunktvertex uebernommen werden...
						Edge edge = new Edge(centerVertex, b);
						edge.setWeight(newGraph.getEdge(a, actualVertex).getWeight());

						if (newGraph.isEdge(edge.source, edge.target)) {
							// Sollte eine Kante bereits im Graph vorkommen,
							// werden nur die gewichte erhoeht.
							newGraph.getEdge(edge.source, edge.target).setWeight(
									newGraph.getEdge(edge.source, edge.target).getWeight() + edge.getWeight());
						} else {
							newGraph.addEdge(edge);
						}

						Edge baseEdge = new Edge(a, centerVertex);
						baseEdge.setWeight(newGraph.getEdge(actualVertex, b).getWeight());

						if (newGraph.isEdge(baseEdge.source, baseEdge.target)) {
							// Sollte eine Kante bereits im Graph vorkommen,
							// werden nur die gewichte erhoeht.
							newGraph.getEdge(baseEdge.source, baseEdge.target)
									.setWeight(newGraph.getEdge(baseEdge.source, baseEdge.target).getWeight()
											+ baseEdge.getWeight());
						} else {
							newGraph.addEdge(baseEdge);
						}

						// ... und der alte Vertex mit seinen Kanten entfernt
						// wird.
						newGraph.removeEdge(newGraph.getEdge(a, actualVertex));
						newGraph.removeEdge(newGraph.getEdge(actualVertex, b));
						newGraph.removeVertex(actualVertex);

						i--;// Die Vertexmenge in der for-Schleife wird
							// reduziert.
							// Somit wuerde nicht Vertex_(i+1) sondern
							// Vertex_(i+2)
						// als naechster Vertex betrachtet werden. Um
						// gegenzusteuern i--.
						break;
					}
				}
			}
		}
		return newGraph;
	}