Hallo an alle,
Ich melde mich heute wieder zu später Stunde, um euch nach einen Rat zu fragen. Ich habe vor zwei Tagen eine ähnliche Frage gehabt, in der ich mit der Modellierung von einer Breiten -und Tiefensuche Probleme hatte.
Jetzt erschließt sich mir ein weiteres Problem.
Ich habe den Code soweit durch eure Hilfe mir zusammenbauen können, jedoch stoße ich an die nächste Wand, wo ich nicht weiter komme.
Der Code sieht momentan so aus:
Hierbei habe ich jedoch ein Problem, dass ich die Methoden nicht insofern verändern kann, dass beispielsweise der skizzierte Graph über die Knoten
A----B----C------D---E
verbunden ist und wenn man nun den Knoten D entfernt, dass der Graph dann nicht mehr zusammenhängend ist.
Hat jemand von euch eine Idee oder eine Richtung, wie sich dies implementieren lässt?
Wie immer bin ich tierisch dankbar über jede Hilfe! [/CODE]
Ich melde mich heute wieder zu später Stunde, um euch nach einen Rat zu fragen. Ich habe vor zwei Tagen eine ähnliche Frage gehabt, in der ich mit der Modellierung von einer Breiten -und Tiefensuche Probleme hatte.
Jetzt erschließt sich mir ein weiteres Problem.
Ich habe den Code soweit durch eure Hilfe mir zusammenbauen können, jedoch stoße ich an die nächste Wand, wo ich nicht weiter komme.
Der Code sieht momentan so aus:
Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class ConstructionWorker<T> {
private Map<T, List<T>> edgesBetweenTwoPoints = new HashMap<>();
public void addEdge(T firstCoordinate, T secondCoordinate) {
edgesBetweenTwoPoints.computeIfAbsent(firstCoordinate, x -> new ArrayList<T>());
edgesBetweenTwoPoints.get(firstCoordinate).add(secondCoordinate);
edgesBetweenTwoPoints.computeIfAbsent(secondCoordinate, x -> new ArrayList<T>());
edgesBetweenTwoPoints.get(secondCoordinate).add(firstCoordinate);
}
public List<T> getEdges(T node) {
return Collections.unmodifiableList(edgesBetweenTwoPoints.get(node));
}
public boolean isConnected() {
if (edgesBetweenTwoPoints.isEmpty()) { return true; }
Set<T> nodes = new HashSet<>(edgesBetweenTwoPoints.keySet());
Iterator<T> it = nodes.iterator();
if (it.hasNext()) {
visitAndRemove(nodes, it.next());
}
return nodes.isEmpty();
}
private void visitAndRemove(Set<T> nodes, T node) {
if (nodes.contains(node)) {
nodes.remove(node);
List<T> nextNodes = getEdges(node);
for (T next : nextNodes) {
visitAndRemove(nodes, next);
}
}
}
}
A----B----C------D---E
verbunden ist und wenn man nun den Knoten D entfernt, dass der Graph dann nicht mehr zusammenhängend ist.
Hat jemand von euch eine Idee oder eine Richtung, wie sich dies implementieren lässt?
Wie immer bin ich tierisch dankbar über jede Hilfe! [/CODE]