Projekt 4: Routenplaner für Fußgänger Projektbetreuer: Timo Leuders Teilnehmer/innen: Jannik Dreier, Städt. Gymnasium, Blomberg Jeremi Dzienian, Gymnasium Leopoldinum, Detmold Juliane Exeler, Städt. Kopernikus-Gymnasium, Rheine Christian Kuster, Gymnasium Im Loekamp, Marl Thomas Petig, Städt. Gymnasium, Barntrup Benedikt Pleie, Städt. Gymnasium, Ochtrup Projekt 4: Routenplaner für Fußgänger Die Grundideen: Ein Strassennetz können wir als Graph aus Knoten und Kanten darstellen Alle möglichen Wege von A nach B zu berechnen, dauert zu lange Die Strategie, Wege, die grob in die richtige Himmelsrichtung führen, bei der Suche zu bevorzugen, führt nicht zwangsläufig schneller zum Ziel Was ist ein optimaler Weg? •Der kürzeste Weg? •Der Weg mit den wenigsten Kanten? •Der schnellste Weg? •Der Weg mit dem geringsten “Engergieverbrauch”? Projekt 4: Routenplaner für Fußgänger Der Dijkstra-Algorithmus: Gehe zum Startknoten Gehe zum nächsten Nachbarn und berechne Entfernung zum Startpunkt Ergebnis < kleinstes gespeichertes Ergebnis? ja Merke Entfernung nein Alle Nachbarn geprüft? ja Alle Knoten geprüft? ja Fertig!! nein nein Gehe zu dem Knoten mit der niedrigsten gemerkten Entfernung zum Startpunkt, der noch nicht bearbeitet wurde Projekt 4: Routenplaner für Fußgänger Aufbau des Programms: Routenplaner Eingabemodul Datenkonvertierungs-Modul Manuelle Eingabe Automatische Kartenerkennung Vielen Dank an die Projektgruppe Gesichtserkennung!! Weg-Berechnungs-Modul Ausgabemodul Projekt 4: Routenplaner für Fußgänger Eingabe des Stadtplans: Erfassung des Strassennetzes durch Markieren von Kreuzungen und Strassen Es entsteht ein Graph aus Knoten und Kanten Jeder Knoten wird mit Koordinaten und benachbarten Knoten in einer Textdatei abgelegt Projekt 4: Routenplaner für Fußgänger Das Eingabemodul: manuelle und computergerechte Eingabe der Straßen und Kreuzungen durch Punkte und Linien z.B. auf Karten oder Luftbildern Projekt 4: Routenplaner für Fußgänger Datenkonvertierungs-Modul: Projekt 4: Routenplaner für Fußgänger Dijkstra-Implementierungen im Vergleich: Implementierung 1: Berechnung erfolgt direkt auf Strings PRO: Keine Komplizierten Umwandlungen; schnell, wenn oft neue Karten eingelesen werden CONTRA: Langsam bei vielen Berechnungen auf einer Karte Implementierung 2: Umrechnung in eine Baumstruktur mit Pointer PRO: Sehr schnell bei vielen Berechnungen auf einer Karte CONTRA: Langsam beim Einlesen der Daten Implementierung 3: Umrechnung in eine Baumstruktur ohne echte Pointer Kompromiss aus beiden Implementierungen Projekt 4: Routenplaner für Fußgänger Testläufe der drei Implementierungen und ihre Ergebnisse: Gesamtlaufzeit 350 300 250 200 Zeit/s 150 100 50 0 5000 10000 20000 30000 40000 Knoten 5000 Kanten Implementierung 1 50000 (teilweise unvollendet) 1000 400 200 8 30000 Berechnungszeit Gesamtlaufzeit 300 20000 30000 40000 Knoten 1000 400 200 8 30000 5000 Kanten (Kantenanzahl hat kaum Einfluss auf Berechnungszeit; sehr grosse Graphen lassen sich nicht in dem Baum darstellen) 250 5000 200 10000 Zeit/s 150 100 20000 30000 50 0 Knoten 5000 Kanten Berechnungszeit Gesamtlaufzeit 300 350 300 5000 250 10000 200 20000 150 30000 40000 100 50000 50 30000 250 5000 200 Implementierung 3 10000 Zeit/s 150 20000 100 30000 50 500 300 5000 1000 Kanten 400 Knoten 200 8 0 Knoten 40000 30000 100 400 500 5000 1000 Kanten 300 200 8 0 100 Zeit/s 40000 30000 1000 Implementierung 2 400 10000 200 5000 8 350 300 250 200 Zeit/s 150 100 50 0 50000 Projekt 4: Routenplaner für Fußgänger Ausgabemodul: Die rote Linie entspricht dem kürzesten Weg. Projekt 4: Routenplaner für Fußgänger …Das war… Projektgruppe 4 schreibt einen Routenplaner für Fussgänger ODER ZITAT: “Das ist das absolute Chaos hier. Aber WIR finden den kürzesten Weg wieder heraus!!”