13.11.2014 Aufrufe

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Aufgabe</strong> 3<br />

Stefan Hansch, Markus Wirsing, <strong>Matthias</strong> <strong>Springer</strong><br />

2.2 Die Wahrscheinlichkeitsfunktion<br />

Der Wert der Wahrscheinlichkeitsfunktion ergibt sich, indem die Differenzen einer<br />

Geschwindigkeit zu allen Geschwindigkeiten in der Log-Datei aufsummiert<br />

werden (siehe Lösungsidee). Dazu wird die Wahrscheinlichkeitsfunktion bei jedem<br />

Aufruf neu berechnet. Es wäre möglich, diesen Vorgang etwas effizienter<br />

zu gestalten, indem die Durchschnittsgeschwindigkeit verwendet wird, jedoch<br />

ergibt sich dadurch effektiv nur ein geringer Laufzeitgewinn, da es sich bei den<br />

<strong>BWINF</strong>-Testfällen um kleine Eingabedaten handelt.<br />

Nach dem Einlesen der Eingabedateien gilt es, die Wahrscheinlichkeitstabelle<br />

aufzubauen. Da in der Log-Datei nur Zeitangaben und Positionswerte eingetragen<br />

sind, müssen Geschwindigkeiten aus diesen Daten berechnet werden. Nach<br />

diesem Vorgang ist für jedes Paar von aufeinanderfolgenden Log-Einträgen ein<br />

entsprechender Geschwindigkeitseintrag vorhanden (Array db p segment).<br />

√<br />

(db pos x[i+1]−db pos x[i])2 +(db pos y[i+1]−db pos y[i]) 2<br />

Definition 3 Jeder Eintrag im Geschwindigkeitsarray ergibt sich durch die Formel<br />

db p segment[i] =<br />

db time[i+1]−db time[i]<br />

. Dabei<br />

bezeichnen der im Zähler stehende Term den geometrischen Abstand zweier<br />

Punkte und der im Nenner stehende Term den zeitlichen Abstand zweier Punkte.<br />

Nun iteriert das Programm über alle Punkte in der Log-Datei und sucht für<br />

jeden solchen Punkt den wahrscheinlichsten Nachfolger. Dazu wird die Wahrscheinlichkeitsfunktion<br />

auf jeden potentiellen Nachfolger eines solchen Punktes<br />

angewendet. Als Eingabe erwartet die Wahrscheinlichkeitsfunktion eine Geschwindigkeit<br />

die sich analog zu Definition 3 ergibt, nur dass es sich nun nicht<br />

notwendigerweise um aufeinanderfolgende Punkte handeln muss. Je kleiner die<br />

Ausgabe der Wahrscheinlichkeitsfunktion ist, desto wahrscheinlicher ist es, dass<br />

der aktuelle Punkt der beste Nachfolger ist.<br />

In der Funktion db p getProbability wird die Summe der Geschwindigkeitsdifferenzen<br />

wird durch die Durchschnittsgeschwindigkeit und durch n−1 geteilt<br />

(n ist die Anzahl der Punkte). Dadurch erhält man sozusagen eine prozentuale<br />

Abweichung von der Durchschnittsgeschwindigkeit. Ursprünglich hatte ich eine<br />

andere Idee, die ich jedoch aus Zeitgründen nicht realisieren konnte (deshalb so<br />

umständlich). Im Kapitel Lösungsidee wurde bereits angedeutet, wie eine Wahrscheinlichkeitsfunktion<br />

aussehen kann. Ich habe schließlich keine Exponentialfunktion<br />

gewählt. Stattdessen wird die Anzahl der übersprungenen Punkte mit<br />

dem Faktor 0, 45 gewichtet und einfach aufaddiert. Der Nachteil dieser Methode<br />

liegt darin, dass sie speziell auf die in den Testfällen auftretenden Geschwindigkeiten<br />

optimiert ist. Diese Geschwindigkeiten wirken sich auf die Ausgabe<br />

der Wahrscheinlichkeitsfunktion (Funktion db p getProbability, ohne Beachtung<br />

der übersprungenen Punkte) aus. Wenn sich Dominic nun beispielsweise immer<br />

doppelt so schnell bewegt, oder allgemein die auftretenden Geschwindigkeiten<br />

zwischen zwei aufeinanderfolgenden Punkten proportional zueinander um einen<br />

relativen Wert vergrößert werden, nimmt der Einfluss der übersprungenen Punkte<br />

ab. Man müsste in diesem Fall den Faktor 0, 45 ebenfalls vergrößern, nämlich<br />

um den Faktor 2.<br />

Man könnte das Problem auch lösen, indem man den Wert nicht aufaddiert,<br />

sondern multipliziert. Dann müsste man aber einen anderen Faktor als 0, 45<br />

verwenden. In meinen eigenen Versuchen habe ich mit dem Aufaddieren die<br />

besten Ergebnisse erzielt.<br />

9

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!