Informatik-Olympiade – was macht man da?

Was macht man an einem Informatikwettbewerb? Das werde ich oft gefragt. Wenn ich dann antworte, dass man programmieren müsse, denken viele, man reiche einfach ein Programm oder ein Spiel ein, das dann bewertet werde. Klar gibt es auch solche Wettbewerbe, doch die SOI gehört nicht dazu. Bei dieser geht es um das Programmieren von Algorithmen.

Nun, was ist ein Algorithmus? Ein Algorithmus ist nicht etwas, das ursprünglich aus der Informatik kommt – selbst die alten Griechen kannten Algorithmen. Ein Beispiel für ein solcher ist die Berechnung des ggT von Euklid. Ein Algorithmus ist eine Abfolge von Befehlen, um eine bestimmte Aufgabe zu lösen. Dieser kann man in Pseudocode (das ist wie eine Programmiersprache, jedoch kann diese nicht für echte Programme verwendet werden, da die genaue Begriffe nicht festgelegt sind. So kann man auf einfache Art und Weise einen Algorithmus – also eine Abfolge von Befehlen – aufschreiben) wie folgt beschreiben (Quelle: Wikipedia):

EUCLID(a,b)
wenn a = 0
2      dann return b
sonst solange b ≠ 0
4      wenn a > b
5          dann a \leftarrow a - b
6      sonst b \leftarrow b - a
return a

Die return-Anweisung bedeutet, dass die Funktion diesen Wert zurückgeben soll. Der Algorithmus ist somit beendet. Zu erklären, warum und wie dieser Algorithmus funktioniert, überlasse ich euch (Wikipedia weiss es auch).

Das Ziel an der SOI ist also, ein solcher Algorithmus für ein gegebenes Problem zu finden und umzusetzen. Im nächsten Teil der Serie werde ich dann die Aufgaben näher beschreiben.

Schreibe einen Kommentar