Hi,
ich habe hier eine kleine Klasse, die einen gerichtete Graphen enthalten soll, welche eine Stadt darstellen.
Städte und Kreuzungen sind als "Knoten"- Klasse definiert. Diese besitzen in sich jeweils eine LinkedList, in welche Elemente der Klasse "Kante", welche die Straßen darstellen sollen. Städte befinden sich immer am Ende einer Straße, Kreuzungen verbinden Straßen untereinander.
Die Knoten (Städte/Kreuzungen) als auch die Straßen in den LinkedListen können seperat ge- und entsperrt werden, falls sich dort jemand bewegt.
Hoffe, der Code ist einigermaßen verständlich?
Jetzt möchte ich von jedem Knoten aus einen wegsuch- Algorithmus durchführen, der aber nur die nächste zu befahrene Kante (Straße) oder Knoten (Stadt/Kreuzung) ausgibt. An jeder angekommenen Kreuzung soll aufs neue geprüft werden, wo man als nächstes hinfährt, da Knoten bzw. Kanten während der Fahrt zwischenzeitlich von jemand anderm gesperrt werden können, daher brauche ich nicht den ganzen Pfad, sondern den nächsten Knoten/Kante!
Ich steh aber grade ganz stark auf dem Schlauch, am liebsten würde ich ja Dijkstra verwenden, da ich dann die Straßenlängen mit berückstigen kann. Ein normaler Breitendurchlauf würde aber auch reichen..
Grüße,
David
ich habe hier eine kleine Klasse, die einen gerichtete Graphen enthalten soll, welche eine Stadt darstellen.
Städte und Kreuzungen sind als "Knoten"- Klasse definiert. Diese besitzen in sich jeweils eine LinkedList, in welche Elemente der Klasse "Kante", welche die Straßen darstellen sollen. Städte befinden sich immer am Ende einer Straße, Kreuzungen verbinden Straßen untereinander.
Die Knoten (Städte/Kreuzungen) als auch die Straßen in den LinkedListen können seperat ge- und entsperrt werden, falls sich dort jemand bewegt.
Hoffe, der Code ist einigermaßen verständlich?
Jetzt möchte ich von jedem Knoten aus einen wegsuch- Algorithmus durchführen, der aber nur die nächste zu befahrene Kante (Straße) oder Knoten (Stadt/Kreuzung) ausgibt. An jeder angekommenen Kreuzung soll aufs neue geprüft werden, wo man als nächstes hinfährt, da Knoten bzw. Kanten während der Fahrt zwischenzeitlich von jemand anderm gesperrt werden können, daher brauche ich nicht den ganzen Pfad, sondern den nächsten Knoten/Kante!
Ich steh aber grade ganz stark auf dem Schlauch, am liebsten würde ich ja Dijkstra verwenden, da ich dann die Straßenlängen mit berückstigen kann. Ein normaler Breitendurchlauf würde aber auch reichen..
Grüße,
David
Code:
import java.util.*;
public class geographie {
//Naechsten anzufahrenden Knoten berechnen
Kante berechne(Knoten start, Knoten ziel){
return null; //Da soll der Roboter hin
}
}
class Knoten {
//Kreuzung oder Stadt
boolean gesperrt; int nr; String name;
LinkedList wege = new LinkedList(); //Wo fuehrt ein Weg hin?
//Neuen Knoten erzeugen
Knoten (int nr, String name){
gesperrt=false;
this.nr=nr;
this.name = name;
}
//Sperren
void sperrung (){
this.gesperrt = true;
}
//Freigeben
void freigabe (){
this.gesperrt = false;
}
//Strasse irgendwohin einfuegen
void einfuegen (Knoten k){
if (k!=null){
Kante ziel = new Kante (k);
wege.add(ziel);
}
}
}
//Strasse
class Kante {
boolean gesperrt; Knoten nach;
Kante(Knoten nach){
this.gesperrt=false;
this.nach=nach;
}
//Sperren
void sperrung (){
this.gesperrt = true;
}
//Freigeben
void freigabe (){
this.gesperrt = false;
}
}