Welfenlab - Leibniz 
                        Universität Hannover Welfenlab Leibniz Universität Hannover

Welfenlab Competition 2005

Aktuell

 

03.07.2006 09:53

  1. Platz: Christian Hoffmeister, Schillerschule Hannover
  2. Platz: Jan Gosmann, Bismarckschule Hannover
  3. Platz: Andre Ryll, Fachgymnasium Technik Oldenburg

Anerkennungspreise (alphabetisch)

  • Sebastian Albert, Hölty-Gymnasium Celle
  • Martin Binder, Leibnizschule Hannover
  • Ilya Elenski, KGS Ronnenberg
  • Maximilian Klein, Georg BĂŒchner Gymnasium Letter
  • Timo Nachstedt, Matthias-Claudius-Gymnasium Gehrden

 

 

26.01.2006 17:55  Neue Beispieldateien

Es sind jetzt zwei neue Beispieldateien online.

SchĂŒlerwettbewerb Informatik

Wir, d.h. der Lehrstuhl Graphische Datenverarbeitung in der FakultĂ€t Elektrotechnik und Informatik veranstalten fĂŒr SchĂŒler an niedersĂ€chsischen Gymnasien einen Wettbewerb im Bereich der Computergeometrie. Wir nennen unser Fachgebiet Welfenlab, nach dem HauptgebĂ€ude der UniversitĂ€t, dem Welfenschloss, daher der Name "Welfenlab Competition". Bisher fand der Wettbewerb viermal statt und auch in diesem Jahr gibt es ihn wieder.

Anmeldung

Die Teilnahmebedingungen stehen am Ende dieser Seite.

Worum geht es?


Nachdem wir uns in den letzten Jahren mit Knoten und ihren Eigenarten beschĂ€ftigt haben, widmen wir uns dieses Mal der Graphentheorie. Ein Graph ist dabei sehr theoretisch, man kann ihn jedoch durchaus zur Lösung ganz realer Probleme einsetzen. Dazu ein kleines Beispiel: Wir wollen in der Abbildung 1 links vom Punkt A den kĂŒrzesten Weg zum Punkt B bestimmen. UngĂŒnstigerweise ist der direkte Weg versperrt, in diesem einfachen Beispiel ist einer der beiden kĂŒrzesten Wege jedoch problemlos durch hinschauen zu erkennen. In der Abbildung in der Mitte ist dies nicht mehr so einfach. Um gar auf einer Land- oder Stadtkarte den kĂŒrzesten Weg zu finden braucht man entweder viel Zeit oder einen Algorithmus, den auch ein Computer beherrscht. Um dem Computer unser Problem zugĂ€nglich zu machen und es gleichzeitig zu verallgemeinern, transformieren wir unsere Umgebung (hier eine Art Landkarte) in einen Graphen. Wir suchen also kĂŒrzeste Wege in einem Graphen.

 




Abbildung 1: zwei relativ einfache Szenarien und ein Beispielgraph

 

Ziel der Competition ist es, ein Programm zu schreiben, das gewisse vorgegebene Szenarien in einen Graph transformiert, um in diesem Graph das KĂŒrzeste-Wege-Problem mittels eines bereits bekannten Algorithmus zu lösen. Der kĂŒrzeste Weg im Graph entspricht dann dem kĂŒrzesten Weg im Szenario.

Und was gibt es zu gewinnen?

UnabhÀngig von viel Erfahrung, Ehre und Ruhm gibt es auch etwas Handfestes zu gewinnen:

 

1. Platz:2. Platz:3. Platz:

Digicam
Canon PowerShot Pro1 o.Ă€.

mp3-Player
Apple iPod mini 6 GB o.Ă€.

Lautsprecher
Logitech - X620 6.1 o.Ă€.

 

 

Hintergrund


Als KĂŒrzeste-Wege-Problem dient uns ein Szenario, das einer Landkarte Ă€hnelt. Wir haben einen Startpunkt und einen Zielpunkt. Weiterhin gibt es Hindernisse, die wir nicht ĂŒberwinden können. Um ein solches Szenario zu speichern,benötigen wir eine Art Szenariodatei. In dieser Datei stehen alle nötigen Informationen, d.h. die Koordinaten der Start- und Zielpunkte und die Lage der Hindernisse, die bei uns durch geschlossene Polygone reprĂ€sentiert werden. (Ein geschlossenes Polygon ist eine Menge von Punkten bei denen jeder mit dem nĂ€chsten und der letzte mit dem ersten Punkt verbunden sind. Unsere Polygone haben keine SelbstĂŒberschneidungen.) Um das Problem noch ein wenig komplexer zu machen, fĂŒhren wir noch sogenannte Beamspots ein, an denen man sich zu einem anderen Spot beamen lassen kann. Beamspots treten immer gruppenweise auf (d.h. mindestens zwei), und innerhalb einer Gruppe kann man von jedem Spot zu jedem anderen reisen. Das folgende Beispiel zeigt eine solche Datei und das zugehörige Szenario.

<pre>A = 5.0 9.0 (Startpunkt)
B = 5.0 1.0 (Endpunkt)
P = 3.0 5.0;5.0 6.0;7.0 5.0 (dreieckiges Polygon als Hindernis)
P = ... (evtl. weitere Hindernisse)
BS = 1.0 9.0;9.0 1.0 (Gruppe von Beamspots)
BS = ... (evtl. weitere Beamspots)</pre>


 

Abbildung 2: zwei denkbare Szenarien mit Beamspots

 

SelbstverstĂ€ndlich brauchen wir auch ein Dateiformat, um einen gewichteten Graphen abzuspeichern. Anhand des folgenden Beispiels sollte die Struktur klar sein. Die in der ersten Zeile angegebenen Ecken werden durchnummeriert beginnend bei 1.In der Datei wird im Weiteren die Nummer als Identifikation fĂŒr die Ecke benutzt. Die Koordinaten der Ecken werden nur der Form halber mit abgespeichert.

<pre>5.0 9.0;5.0 1.0;3.0 5.0;5.0 6.0 (Koordinaten der Eckpunkte)
1 3 3.0 (Kante von 1. zu 3. Ecke mit Gewicht 3)
3 4 2.0 (Kante von 3. zu 4. Ecke mit Gewicht 2)
... (evtl. weitere Kanten)</pre>

Aufgabenstellung


Es soll ein Programm entwickelt werden. In der dazugehörigen Dokumentation sollen Algorithmen und Programmaufbau verstÀndlich dargestellt werden. Folgende Teilaufgaben sollen gelöst werden:

  1. Überleg dir, wie man ĂŒberprĂŒft ob eine Strecke ein Polygon schneidet. Entwickle daraus einen Algorithmus. Als Eingabe erhĂ€lt der Algorithmus ein geschlossenes Polygon und zwei Ecken (siehe Szenariodatei), und als Ausgabe erhĂ€lt man die Antwort ob die direkte Verbindung der beiden Ecken das Polygon schneidet oder nicht. Dokumentiere deine Überlegungen und dein Vorgehen und beachte, dass der Algorithmus möglichst schnell/effizient ist, da er in der nĂ€chsten Teilaufgabe viel benutzt wird.

  2. Entwickle einen Algorithmus der als Eingabe eine Szenariodatei erhÀlt, diese einliest und als Ausgabe eine Graphendatei liefert und diese speichert. Dabei ist folgendes Vorgehen sinnvoll, damit sich ein Graph ergibt, der unser Szenario reprÀsentiert.
    • Start-, End- und jeder Eckpunkt eines Polygons wird zu einer Ecke im Graph.
    • Zwischen zwei Ecken gibt es genau dann eine Kante falls es im Szenario möglich ist eine direkte Verbindung zu ziehen, ohne ein Hindernis, d.h. ein Polygon zu schneiden. Die Kante erhĂ€lt als Gewicht bzw. Kosten die Entfernung der Punkte im Szenario.
    • Überlege dir und begrĂŒnde warum dieses Vorgehen zweckmĂ€ĂŸig ist

    Abbildung 3: Transformation eines Szenarios in einen Graphen.

  3. Es soll der kĂŒrzeste/billigste Weg in einem Graph gefunden werden. Da dieses Gebiet bereits gut erforscht ist wollen wir uns einiger Ergebnisse bedienen. Der Dijkstra-Algorithmus ist ein Algorithmus, der den kĂŒrzesten Weg in einem Graphen anschaulich konstruiert. Er ist relativ einfach, und es gibt sehr gute Beispiele im Internet:
    Implementiere nun einen Algorithmus, der eine Graphendatei einliest und auf den Graph den Dijkstra-Algorithmus anwendet, um den kĂŒrzesten Weg von der Startecke (diejenige Ecke, die den Startpunkt des Szenarios im Graphen reprĂ€sentiert) zur Endecke zu bestimmen. Als Ergebnis soll der Algorithmus den genauen Weg (also eine Folge von Kanten im Graph) und die LĂ€nge des Weges ausgeben. Falls es mehrere gleichlange kĂŒrzeste Wege gibt, sollen alle ausgegeben werden.

  4. Nachdem wir es geschafft haben den kĂŒrzesten Weg in sehr komplexen Szenarien zu bestimmen, wollen wir versuchen unsere Fragestellungen ein wenig zu verallgemeinern und fragen nun nach dem Weg vom Start- zum Zielpunkt mit minimaler Winkelsumme. Diese ergibt sich durch Aufaddieren aller beim Übergang von einer Kante zu einer anderen auftretenden Winkel, die sich durch die RichtungsĂ€nderung ergeben. Als Beispiel betrachte man folgende Abbildung rechts in denen zwei Wege (einmal als durchgezogene und einmal als gestrichelte Linie) eingezeichnet sind.

    Abbildung 4: Messen der Winkelsummen

    Der Weg mit der höheren Winkelsumme ist der zackigere Weg. Wir wollen also einen möglichst wenig zackigen Weg finden. Bei genauem Vergleich der Problemstellungen fÀllt auf, dass es sich wiederum um ein Minimierungsproblem in einem Graphen handelt. Es stellt sich die Frage, inwiefern unser bisheriges Vorgehen geeignet ist, um auch den Weg mit minimaler Winkelsumme zu bestimmen. Entwickle analog zum Vorgehen in den Teilaufgaben 1 bis 3 einen Algorithmus, der zu einer gegebenen Szenariodatei den Weg mit der geringsten Winkelsumme findet. Falls es mehrere gibt sollen selbstverstÀndlich alle ausgegeben werden.

    Benutzt man einen Beamspot, guckt man nach dem Beamen in die gleiche Richtung wie vorher, d.h. Beamspots verkĂŒrzen zwar den Weg enorm, die Winkelsumme aber eventuell nicht.

    Vergleiche nun bei gleicher Szenariodatei die Ergebnisse des kĂŒrzesten Weges und der minimalen Winkelsumme. Was lĂ€sst sich sagen, falls Beamspots beteiligt sind? Was, wenn nicht? Halte deine Ergebnisse fest und begrĂŒnde deine Schlussfolgerungen oder liefere Gegenbeispiele.

Teilnahmebedingungen

  • Anmeldeschluss ist der 30. November 2005.
  • Gruppenmeldungen sind nicht möglich.
  • Als Programmiersprache sind Pascal, C, C++ und Java zugelassen. Die Sprache muss bei der Anmeldung mit angegeben werden. Es dĂŒrfen nur die Standard-Bibliotheken und keine Codegeneratoren verwendet werden.
  • Es muss eine 5 bis 10-seitige Ausarbeitung angefertigt werden, in der die benutzten Algorithmen erklĂ€rt werden, und in der das Programm ausfĂŒhrlich dokumentiert wird.
  • Das erstellte Programm und die Ausarbeitung sowie ein Ausdruck eines Testdurchlaufs bzw. die Ergebnisse mit von uns gestellten Daten sind spĂ€testens bis zum 20. Februar 2006 bei uns einzureichen. Es ist möglich anstelle eines Ausdrucks die Dokumente auch als PDF mit dem Programm per Mail abzugeben.
  • Es dĂŒrfen nur SchĂŒler der Sekundarstufe I oder II an allgemeinbildenden Schulen, sowie an Fachgymnasien aus Niedersachsen an dem Wettbewerb teilnehmen. Die Teilnehmer dĂŒrfen max. 19 Jahre alt sein. Familienangehörige von Mitarbeitern des Fachgebietes Graphische Datenverarbeitung an der UniversitĂ€t Hannover sind leider ausgeschlossen.
  • Der Rechtsweg ist ausgeschlossen.

 

Bewertungskriterien

  • LauffĂ€higkeit und Korrektheit des Programms
  • Gut verstĂ€ndliche Dokumentation der Algorithmen, ggf. mit Ergebnissen von Beispieldaten
  • Besondere eigenstĂ€ndige Ideen
  • In ZweifelsfĂ€llen: Strukturierter Programmierstil

So, das war's erstmal. Hoffentlich hast Du ein wenig Lust bekommen, an diesem Wettbewerb teilzunehmen. Es geht bei dieser Competition nicht darum, alles perfekt zu machen. Wir freuen uns auch ĂŒber Teillösungen. Wenn wir merken, dass Du Dich mit der Problematik beschĂ€ftigt hast, hier und da ein paar interessante eigene Ideen hattest und Deine Gedanken und Algorithmen dokumentierst, hast Du gute Chancen unter den Besten zu sein. Bei RĂŒckfragen kannst Du Dich gerne bei uns melden.

E-Mail: competition(at)gdv.uni-hannover.de

Viel Erfolg,
Hannes Thielhelm
Dipl.-Math. Dennis Allerkamp
Prof. Dr. F.-E. Wolter

Lehrstuhl Graphische Datenverarbeitung

Top | Letzte Änderung 25.06.2007 | Verantwortlich Philipp Blanke
| Impressum | © FG Graphische Datenverarbeitung