faecher:informatik:oberstufe:graphen:zpg:kuerzeste_pfade:kpfad_dijkstra:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:graphen:zpg:kuerzeste_pfade:kpfad_dijkstra:start [30.08.2024 10:21] – [Der Computer zieht die Fäden] Marco Kuemmelfaecher:informatik:oberstufe:graphen:zpg:kuerzeste_pfade:kpfad_dijkstra:start [19.09.2024 07:46] (aktuell) Marco Kuemmel
Zeile 52: Zeile 52:
 ===== Der Computer zieht die Fäden ===== ===== Der Computer zieht die Fäden =====
  
-Möchte man dieses Trickreiche Vorgehen in einem Algorithmus implementieren, muss man anstelle der Fäden andere Kriterien finden. Der Schlüssel zum Ersatz der Fäden ist die Antwort auf folgenden Frage:+Möchte man dieses trickreiche Vorgehen in einem Algorithmus implementieren, muss man anstelle der Fäden andere Kriterien finden. Der Schlüssel zum Ersatz der Fäden ist die Antwort auf folgenden Frage:
  
 Welcher Knoten ist stets der nächste, der von der Unterlage abgehoben wird? Welcher Knoten ist stets der nächste, der von der Unterlage abgehoben wird?
Zeile 62: Zeile 62:
 Wir benötigen also **zwei Markierungen**: Knoten die in der Liste sind und als nächstes bearbeitet werden können, weil sie Nachbarknoten von Knoten sind, die bereits von der Unterlage abgehoben wurden und die Knoten die sich bereits in der Luft befinden. Im Graphentester kann man z.B, folgende Vereinbarung treffen: Wir benötigen also **zwei Markierungen**: Knoten die in der Liste sind und als nächstes bearbeitet werden können, weil sie Nachbarknoten von Knoten sind, die bereits von der Unterlage abgehoben wurden und die Knoten die sich bereits in der Luft befinden. Im Graphentester kann man z.B, folgende Vereinbarung treffen:
  
-  * Knoten **Besucht**: In der ToDo-Liste, mit einem Entfernungswert versehen. +  * Knoten **Markiert**: In der ToDo-Liste, mit einem Entfernungswert versehen. 
-  * Knoten **Markiert**: In der Luft, Wert entspricht der kürzesten Entfernung vom Startknoten+  * Knoten **Besucht**: In der Luft, Wert entspricht der kürzesten Entfernung vom Startknoten
  
-Damit sieht ein Lückenhafter Pseudocode so aus:+Damit sieht ein lückenhafter Pseudocode so aus:
  
 <code> <code>
-hole den startknoten, markiere in als besucht, füge ihn in die ToDo-liste ein.+hole den startknoten, markiere ihn als markiert, füge ihn in die ToDo-liste ein.
  
 solange die ToDo-liste nicht leer ist:  solange die ToDo-liste nicht leer ist: 
Zeile 79: Zeile 79:
          
     wenn d < wert von n ODER n nicht in der ToDo-liste     wenn d < wert von n ODER n nicht in der ToDo-liste
-      // was muss dann geschehen+      // was muss dann geschehen?
              
     wenn n nicht in der ToDo-Liste:     wenn n nicht in der ToDo-Liste:
Zeile 95: Zeile 95:
 ++++ Lösungsvorschlag |  ++++ Lösungsvorschlag | 
 <code> <code>
-hole den startknoten, markiere in als besucht, trage als Entfernung 0 ein, füge ihn in die ToDo-liste ein.+hole den startknoten, markiere in als markiert, trage als Entfernung 0 ein, füge ihn in die ToDo-liste ein.
  
 solange die ToDo-liste nicht leer ist:  solange die ToDo-liste nicht leer ist: 
   sortiere die ToDo-liste aufsteigend   sortiere die ToDo-liste aufsteigend
   hole das kleinste element _aktuell_ aus der ToDo-liste    hole das kleinste element _aktuell_ aus der ToDo-liste 
-  setze aktuell auf markiert+  setze aktuell auf besucht
      
-  für alle nachbarn n von _aktuell_, die nicht markiert sind, wiederhole:+  für alle nachbarn n von _aktuell_, die nicht besucht sind, wiederhole:
     berechne die entfernung d des knotens n vom startknoten aus über den knoten _aktuell_ // wert von aktuell + abstand zum nachbarn     berechne die entfernung d des knotens n vom startknoten aus über den knoten _aktuell_ // wert von aktuell + abstand zum nachbarn
          
Zeile 109: Zeile 109:
              
     wenn n nicht in der ToDo-Liste:     wenn n nicht in der ToDo-Liste:
-      markiere n als besucht+      markiere n als markiert
       fuege n der ToDo-liste hinzu       fuege n der ToDo-liste hinzu
  
Zeile 139: Zeile 139:
  
 Passe den Algorithmus so an, dass man im Quelltext die Knotennummer des Zielknotens angeben kann, um eine Route vom gewählten Startknoten zum Zielknoten zu berechnen. Gib die Stationen der kürzesten Route aus. Das Bild unten zeigt die Nummerierung der Knoten im Beispiel. Passe den Algorithmus so an, dass man im Quelltext die Knotennummer des Zielknotens angeben kann, um eine Route vom gewählten Startknoten zum Zielknoten zu berechnen. Gib die Stationen der kürzesten Route aus. Das Bild unten zeigt die Nummerierung der Knoten im Beispiel.
 +
 +__Tipp:__ Eine //HashMap// kann sinnvoll sein, um einen Knoten und seinen Vorgänger-Knoten zu speichern. Mach dich kurz schlau im Internet, wie man diese nutzen kann. Alternativ geht z. B. auch ein zweidimensionales Knoten-Array...
  
 {{ :faecher:informatik:oberstufe:graphen:zpg:kuerzeste_pfade:kpfad_dijkstra:knotennummern.png?500 |}} {{ :faecher:informatik:oberstufe:graphen:zpg:kuerzeste_pfade:kpfad_dijkstra:knotennummern.png?500 |}}
  • faecher/informatik/oberstufe/graphen/zpg/kuerzeste_pfade/kpfad_dijkstra/start.1725013317.txt.gz
  • Zuletzt geändert: 30.08.2024 10:21
  • von Marco Kuemmel