-> Hier kostenlos registrieren
Servus!
Ich möchte eine Förderstrecke , die aus mehreren Knoten und Verzweigungen besteht(Beispiel Anhang), von einem vorgebenen Startknoten zu einem vorgebenen Zielknoten durchlaufen.
Wenn das Ziel gefunden worden ist, dann gehe den gewählten Weg wieder zurück.
Das Einfachste wäre, wenn ich nach dem Verfahren der Tiefensuche (siehe Algorithmus) vorgehe.
Für das zurück gehen muss ich mir Informationen der einzelnen Knoten irgendwie abspeichern (merken).
Für die Einzelnen Knoten lege ich Datenbausteine an.
Algorithmus:
· Zunächst wird ein Startknoten ausgesucht
· Expandiere den Knoten und speichere alle Nachfolger in einem Stack(Stapelspeicher).
· Rufe rekursiv für jeden der Knoten in dem Stack die Methode „Tiefensuche“ auf.
o Falls der Stack leer sein sollte, tue nichts
o Falls das gesuchte Element gefunden worden sein sollte, brich die Suche ab und lieferet ein Ergebnis
Tiefensuche(Knoten, Ziel) //Methode zur Tiefensuche
{
if (Knoten == Ziel) //Wenn Knoten gleich dem Zielknoten
//dann verlasse die Methode und gebe
return Knoten; //den Knoten zurück
else
{
Stapel := expand (Knoten); //Nachfolgenden Knoten auf den Stack
While (Stapel nicht leer ist) //solange der Stack nicht leer ist
{
Knoten := pop (Stapel); //Vom Stapel nehmen
Tiefensuche(Knoten,Ziel); //Rekursiver Aufruf der Methode
}
}
}
Wie kann ich den Algorithmus umsetzen ?
Mit welchen Bausteinen (FB mit DB,...) mache ich das am besten ?
Gruß
Buenne
Ich möchte eine Förderstrecke , die aus mehreren Knoten und Verzweigungen besteht(Beispiel Anhang), von einem vorgebenen Startknoten zu einem vorgebenen Zielknoten durchlaufen.
Wenn das Ziel gefunden worden ist, dann gehe den gewählten Weg wieder zurück.
Das Einfachste wäre, wenn ich nach dem Verfahren der Tiefensuche (siehe Algorithmus) vorgehe.
Für das zurück gehen muss ich mir Informationen der einzelnen Knoten irgendwie abspeichern (merken).
Für die Einzelnen Knoten lege ich Datenbausteine an.
Algorithmus:
· Zunächst wird ein Startknoten ausgesucht
· Expandiere den Knoten und speichere alle Nachfolger in einem Stack(Stapelspeicher).
· Rufe rekursiv für jeden der Knoten in dem Stack die Methode „Tiefensuche“ auf.
o Falls der Stack leer sein sollte, tue nichts
o Falls das gesuchte Element gefunden worden sein sollte, brich die Suche ab und lieferet ein Ergebnis
Tiefensuche(Knoten, Ziel) //Methode zur Tiefensuche
{
if (Knoten == Ziel) //Wenn Knoten gleich dem Zielknoten
//dann verlasse die Methode und gebe
return Knoten; //den Knoten zurück
else
{
Stapel := expand (Knoten); //Nachfolgenden Knoten auf den Stack
While (Stapel nicht leer ist) //solange der Stack nicht leer ist
{
Knoten := pop (Stapel); //Vom Stapel nehmen
Tiefensuche(Knoten,Ziel); //Rekursiver Aufruf der Methode
}
}
}
Wie kann ich den Algorithmus umsetzen ?
Mit welchen Bausteinen (FB mit DB,...) mache ich das am besten ?
Gruß
Buenne