This commit is contained in:
arnekeller 2019-04-10 21:45:28 +02:00
parent ff60607044
commit da04175b83

View File

@ -225,7 +225,7 @@ Der letzte Abschnitt ihrer Route trifft die y-Achse immer in einem 60\degree-Win
\section{Bedienung des Programms}
Das Programm liest die Problemstellung von der Standardeingabe ein. Die grafische Ausgabe wird in die Standardausgabe geschrieben. Wird $-t$ übergeben, kann die Ausgabe in einem \LaTeX-Dokument verwendet werden. Standardmäßig wird ein SVG-Dokument erzeugt. Falls man die Geschwindigkeit von Lisa oder dem Bus verändern will, kann man dies mit $-l$ bzw. $-b$ tun. Für zusätzliche Debug-Ausgaben kann man $-d$ verwenden. Die Standardoptionen $-h$ und $-V$ zeigen die Hilfe und die Version des Programms an.
\lstinputlisting[caption=Hilfetext des Programmes,frame=single,breaklines=true]{help.txt}
Das vorgegebene Eingabeformat ist mühsam zu schreiben. Daher kann das Programm auch SVG-Dateien einlesen. Punkte werden als Startpunkte interpretiert, sonstige Pfade sind Hindernisse. Wegen Gründen ist die y-Achse in SVGs umgedreht, was vom Programm ausgeglichen wird. So sehen das SVG und die Lösung gleich aus.
Das vorgegebene Eingabeformat ist mühsam zu schreiben. Daher kann das Programm auch SVG-Dateien einlesen. Punkte werden als Startpunkte interpretiert, sonstige Pfade sind Hindernisse. Interessanterweise ist die y-Achse in SVGs umgedreht, was vom Programm ausgeglichen wird. So sehen das SVG und die Lösung gleich aus.
\section{Umsetzung}
Das Programm benutzt den Dijkstra-Algorithmus, um die beste Route für Lisa zu finden. Lisas Haus und die Ecken aller Polygone kann als Graph darstellen. Die Kanten des Graphen haben ein Gewicht, das der Zeit entspricht, die Lisa früher aufstehen müsste, wenn sie zu einem bestimmten Punkt geht, statt direkt zum Bus zu gehen. Die Distanz zwischen zwei Punkten wäre definitv eine falsche Gewichtung, weil Lisa die y-Achse in einem bestimmten Winkel treffen sollte. Der kürzeste Weg würde höchstwahrscheinlich relativ direkt zur y-Achse führen, was nicht optimal ist. Um die Route abzuschließen, probiert das Programm danach immer, auf direktem Weg die y-Achse zu erreichen. Die Route, bei dem Lisa sich am meisten Zeit lassen kann, wird gespeichert.