Guten Tag,
habe einen kleinen Graph geschrieben der eine Innere Klasse Node hat. Jetzt möchte ich sehr gerne das Node mir die Anzahl der Knoten zurück gibt mit denen der Knoten verbunden ist.
Des weiteren soll ich/möchte ich eine Methode im Graph schreiben die mir die gesamte Anzahl der Zusammenhangskomponenten des Graphen zurück gibt als ArrayList<Integer>.
Mein Programm sieht derzeit so aus:
Nun meine Frage dazu.
Ist size() korrekt? Ich bekomme ja die Anzahl eines Knotens zurück
Und wie bekomme ich im Graph nun eine Methode hin die erkennt das die Knoten 1,2 und 3 zusammen einen Graph ergibt, Knoten 4 und 5 einen Graph und 6 ein Knoten = 1 Graph für sich. Die Anzahl der Knoten dann als Liste also so z. B. (3,2,1) <- ein Graph mit 3 Knoten ein Graph mit 2 Knoten ein Graph mit 1 Knoten.
Ich vermute es wäre leichter wenn man den Knoten selbst wieder am Anfang speichern würde in der adjacencylist damit könnte man doch überprüfen ob für jeden Knoten die adjacencylist gleich wäre und damit weiß man das sind die selben Graphen, oder vergesse ich hier Theoretisch mal wieder etwas?
Das Thema mit den AbstraktenDatenTypen ist noch nicht so meins doch ich gebe mir MÜHE
Vielen Dank schon mal für die Antworten
Liebe Grüße
habe einen kleinen Graph geschrieben der eine Innere Klasse Node hat. Jetzt möchte ich sehr gerne das Node mir die Anzahl der Knoten zurück gibt mit denen der Knoten verbunden ist.
Des weiteren soll ich/möchte ich eine Methode im Graph schreiben die mir die gesamte Anzahl der Zusammenhangskomponenten des Graphen zurück gibt als ArrayList<Integer>.
Mein Programm sieht derzeit so aus:
Java:
import java.util.*;
public class Graph {
static class Node {
int element;
Node() {
}
Node(int i) {
element=i;
}
List<Node> adjacencylist = new ArrayList<>();
boolean mark = false;
public int size() {
return adjacencylist.size()+1;
}
public String toString() {
return element+"";
}
}
private List<Node> nodes = new ArrayList<>(); //soll eigentlich ein Set genutzt werden! wollte es aber erst mal mit einer Liste versuchen
public boolean insert(Node element) {
if(nodes.add(element))
return true;
return false;
}
public boolean addEdge(Node a, Node b) {
if(a.adjacencylist.add(b))
return true;
return false;
}
public void output() {
for( Node n : nodes) {
if(n.adjacencylist != null)
System.out.println(n+"->"+n.adjacencylist);
else System.out.println(n);
}
}
public String toString() {
return nodes.toString();
}
public static void main(String[] args) {
Graph g = new Graphh();
Graph.Node n1 = new Node(1);
Graph.Node n2= new Node(2);
Graph.Node n3 = new Node(3);
Graph.Node n4 = new Node(4);
Graph.Node n5 = new Node(5);
Graph.Node n6 = new Node(6);
System.out.println(g.insert(n1));
System.out.println(g.insert(n2));
System.out.println(g.insert(n3));
System.out.println(g.insert(n4));
System.out.println(g.insert(n5));
System.out.println(g.insert(n6));
System.out.println(g.addEdge(n1, n2));
System.out.println(g.addEdge(n1, n3));
System.out.println(g.addEdge(n2, n1));
System.out.println(g.addEdge(n2, n3));
System.out.println(g.addEdge(n3, n1));
System.out.println(g.addEdge(n3, n2));
System.out.println(g.addEdge(n4, n5));
System.out.println(g.addEdge(n5, n4));
System.out.println(g);
g.output();
int size = n1.size();
System.out.println(size);
}
}
Nun meine Frage dazu.
Ist size() korrekt? Ich bekomme ja die Anzahl eines Knotens zurück
Und wie bekomme ich im Graph nun eine Methode hin die erkennt das die Knoten 1,2 und 3 zusammen einen Graph ergibt, Knoten 4 und 5 einen Graph und 6 ein Knoten = 1 Graph für sich. Die Anzahl der Knoten dann als Liste also so z. B. (3,2,1) <- ein Graph mit 3 Knoten ein Graph mit 2 Knoten ein Graph mit 1 Knoten.
Ich vermute es wäre leichter wenn man den Knoten selbst wieder am Anfang speichern würde in der adjacencylist damit könnte man doch überprüfen ob für jeden Knoten die adjacencylist gleich wäre und damit weiß man das sind die selben Graphen, oder vergesse ich hier Theoretisch mal wieder etwas?
Das Thema mit den AbstraktenDatenTypen ist noch nicht so meins doch ich gebe mir MÜHE
Vielen Dank schon mal für die Antworten
Liebe Grüße