A short introduction to graph theory. Oder: Malen und Zahlen.

Nachdem mein letzter Post über Primzahlen ja durchaus positiv aufgenommen wurde, soll es heute mal um ein anderes Fachgebiet innerhalb der Mathematik gehen, welches auch gleichzeitig mein Lieblingsthemenfeld ist. Die Graphentheorie. “Theorie? Klingt öde. Schnell weg hier.”. Stop! Statt hier groß Definitionen und Sätze anzugeben, habe ich mir vorgenommen ein schönes Beispiel zu bringen, wie Graphentheorie in der Praxis angewandt wird. Und zumindest die, die Auto fahren, werden sich demnächst an einer Kreuzung an das Folgende erinnern. Darauf gestoßen bin ich durch ein Plakat bei uns an der Uni, dass dieses Beispiel erklärt, jedoch in stark verkürzter Weise.

Schauen wir uns das folgende Bild einer Kreuzung an. Ich hoffe ihr könnt erkennen, was ich meine.

Bild einer Kreuzung mit RichtungspfeilenDie Pfeile symbolisieren, in welche Richtung Autos auf den jeweiligen Spuren abbiegen. Wir haben Rechts- und Linksabbieger und Geradeausfahrer. Jeder weiß, dass nicht alle Autos gleichzeitig fahren können (es soll Länder geben, da soll das tagtäglich ohne Unfall passieren), aber wir nehmen jetzt mal eine typische Kreuzung. Um den Verkehr zu regeln gibt es im Normalfall Ampeln. Nehmen wir an, dass die Grünphase genau 1 Minute dauert. Das Problem beseht jetzt darin, dass man jeder Verkehrsrichtung einen Zeitintervall zuweist, in dem die Autos auf dieser Spur grünes Licht haben.

Naja, wir könnten uns jetzt denken: Die beiden Rechtsabbieger-Spuren haben immer grün, da kann nichts passieren (sieht man in der Grafik daran, dass sie keinen andere Fahrtrichtung schneiden). Und für die anderen Spuren gehen wir der Reihenfolger nach. Erst hat rot grüne Ampel für eine Minute, dann blau, dann grün, dann gelb, dann cyan, dann wieder von vorne. Bei einer Grünphase von einer Minute, dauert dann eine vollständige Ampelperiode (der Zeitraum, in dem jede Richtung einmal grün hatte) 5 Minuten. D.h. für mich als Autofahrer: Wenn ich bei grün nicht über die Ampel komme, muss ich 4 Minuten warten. Hm. Irgendwie nicht so berauschend. Schauen wir mal, ob wir da nicht was machen können.

Der erste Schritt besteht darin, dass wir uns überlegen, wie wir das Szenario auf eine andere Weise darstellen können. Wie oben schon gesagt, können wir die Rechtsabbieger vernachlässigen, die kriegen einfach einen grünen Pfeil an die Ampel geklebt und gut ist. Wir haben also 5 Fahrtrichtungen in unterschiedlichen Farben.

Jetzt kommt die Graphentheorie zum Einsatz. Wie der Name sagt, geht es um Graphen. Was ist denn überhaupt ein Graph? Naja, ein Graph aus einer Menge von Punkten (sogenannte Knoten) und Verbindungslinien (sogenannte Kanten) zwischen den Punkten (Graphentheoretiker bitte weghören ;-)). Gut, das sind die zwei wesentlichen Begriffe, die wir hier erstmal benutzen. Nicht schwierig, oder?

Und nun? Nun könnten wir zum Beispiel festlegen, dass jede Fahrtrichtung einem Knoten entspricht. Dann haben wir 5 Knoten.

Die Position der Knoten hat keine Bedeutung, man könnte sich auch beliebig anders anordnen. Ich hoffe ihr erkennt, dass die Farben den Farben aus dem Bild der Kreuzung entsprechen. Jetzt überlegen wir ein bisschen, was wir beachten müssen, bei unserer Ampelschaltung: Wir können auch mehreren Fahrtrichtungen gleichzeitig grün geben, solange sie sich nicht überschneiden. Andersherum: Wenn eine Richtung grün hat, dürfen alle anderen, die diese Richtung schneiden kein grün haben. Wie setzen wir das um? An dieser Stelle kommen die Kanten ins Spiel: Kanten starten an genau einem Knoten und enden an genau einem Knoten.

Wir verbinden jetzt jeden Knoten mit Hilfe einer Kante mit allen anderen Knoten (also Fahrtrichtungen), deren Grün-Phase sich nicht mit unserer überschneiden darf. Verstanden? Nein? Kein Problem, hier die Grafik und Erklärung:

Fangen wir mit der Fahrtrichtung “blau” an. Wenn wir in unsere Kreuzung schauen, so sehen wir, dass die blaue Linie zwei andere Linien schneidet: Die grüne und die gelbe. Das heißt, wenn blau eine Grün-Phase hat, dann dürfen gelb und grün keine Grün-Phase haben. Nach der Idee von eben, müssen wir nun den blauen Knoten einmal mit grün und einmal mit gelb verbinden. So wie es in der Skizze auch getan wurde. Schauen wir uns die gelbe Fahrtrichtung an. Sie schneidet blau und cyan. Zu blau haben wir schon eine Kante. Also noch eine von gelb zu cyan hinzufügen. Der Rest erklärt sich von alleine, denke ich mal. Wir erhalten also eine Art von “Kreis”. Wir wissen jetzt: Für Knoten, die miteinander verbunden sind, dürfen zugehörige Fahrtrichtungen nicht gleichzeitig eine Grün-Phase haben. Oder andersherum: Für Knoten, die nicht miteinander verbunden sind, dürfen die zugehörigen Fahrtrichtungen gleichzeitig grün anzeigen.

Versuchen wir doch einmal, durch eine Nummerierung festzustellen, welche Farben gleichzeitig grün haben dürfen.

Wir geben dem blauen Knoten eine 0. Schauen wir uns jetzt den gelben Knoten an. Er kann keine 0 bekommen, da in Gruppe 0 nur Fahrtrichtungen sein dürfen, die blau nicht schneiden. Dies ist für gelb aber nicht der Fall. Also bekommt der gelbe Knoten eine 1 zugeordnet. Wir machen also einfach eine neue Gruppe auf.

Schön. Weiter gehts mit dem nächsten Knoten. Cyan. Er kann keine 1 haben, denn er ist mit gelb verbunden. Kann er eine 0 haben? Ja, denn mit blau ist er nicht verbunden, also schneiden sich die beiden Fahrtrichtungen auch nicht.

Roter Knoten? Zu Gruppe 0 kann er nicht gehören. Aber zu Gruppe 1. Sehr gut. Das geht ja schön fix.

Bleibt noch der grüne Knoten. Gruppe 0? Geht nicht, er ist mit blau verbunden. Gruppe 1? Geht auch nicht, denn er ist mit rot verbunden. Bleibt uns also nichts anderes übrig, als eine neue Gruppe einzuführen. Der grüne Knoten kommt in Gruppe 2.

Sehr schön, denn jetzt sind wir eigentlich fertig. Wieso, fragt ihr euch? Naja. Wir geben zuerst den Fahrtrichtungen aus Gruppe 0 für eine Minute ein grünes Ampelsignal. Anschließend den Fahrtrichtungen aus Gruppe 1 und danach der Fahrtrichtung aus Gruppe 2. Und fangen wieder von vorne an. Graphisch aufbereitet, sieht das ganze dann so aus:

Die 0 symbolisiert den Start unserer Ampelphase. Dort kriegen blau und cyan grünes Licht. Die 1 symbolisert, dass eine Minute vergangen ist. Also wechselt die grüne Ampel bei blau und cyan auf rot und die Fahrtrichtungen gelb und rot kriegen ihre grüne Ampelphase. Nach einer weiteren Minute sind wir bei der 2 angekommen. Die Autos auf rot und gelb müssen anhalten, da die Grünphase vorbei ist und die grüne Fahrtrichtung kann befahren werden. Nach einer weiteren Minute ist auch diese Phase vorbei und alle Fahrtrichtungen hatten einmal grün – eine vollständige Ampelperiode ist vorbei. In 3 Minuten. Das sind immerhin 2 Minuten weniger als im ersten Ansatz ganz oben und bedeutet für uns Autofahrer, dass wir “nur” zwei Minuten an einer roten Ampel stehen müssen.

Man kann das ganze auch noch ein bisschen mehr optimieren, in dem man den Knoten keine ganzen Zahlen sondern rationale Zahlen zuordnet. Darauf möchte ich jetzt jedoch nicht weiter eingehen, nur soviel: Die Wartezeit kann sich dann auf 1 1/2 Minuten verkürzen.

Das was wir hier gemacht haben, nennt man in der Graphentheorie auch Knotenfärbung. Es gibt auch Kantenfärbungen, Totalfärbungen und noch andere Varianten. Ein Beispiel für eine Kantenfärbung werde ich vielleicht später noch einmal zeigen, nur soviel: Es geht darum, wie man ein Sportturnier effizient planen kann, dass bestimmte Paarungen nicht auftreten oder bestimmte Spieler nicht gleichzeitig an einem Tag spielen dürfen. Auch Stundenpläne lassen sich so erstellen (da dürfen ja keine Räume/ Lehrer doppelt vergeben werden).

Ich hoffe ich konnte euch hier ein bisschen zeigen, dass Mathematik nicht immer nur Theorie ist, sondern durchaus auch auf Probleme in der realen Welt angewandt werden kann.

Kommentare, Anmerkungen, Fragen oder Hinweise (insbesondere Rechtschreibfehler und/oder Grammatikfehler) bitte in die Kommentare. Danke ;-)

Primzahlen…. Prim- was?

Ich hab mir mal gedacht, ich werde jetzt in losen Abständen ein paar mathematische Beweise zeigen, kein schwerer Tobak. Eigentlich ganz einfach (“jaja, das sagt der jetzt nur”, “der studiert das ja schließlich, muss ja für den einfach sein”,…) und ich werde versuchen so ausführlich wie möglich zu erklären worum es geht. Heute geht es mal um Primzahlen. Das sind ganze besondere Zahlen, sozusagen die Bausteine aller natürlichen Zahlen. Natürliche Zahlen? Was war das nochmal? 1,2,3,4,5,…. Achja, da war ja was. Abgekürzt werden sie mit {\mathbb N}. Je nachdem, welchen Lehrer/ Professor man hat(te), zählt manchmal auch noch die 0 dazu, aber die lassen wir jetzt erstmal außen vor, die spielt eh eine Sonderrolle.

Zurück zu den Bausteinen. Wieso Bausteine? Nunja, jeder von euch hat bestimmt schonmal Zahlen zerlegt. Nein? Doch! Schaut euch mal den folgenden Bruch an: \frac{6}{4} Dies ist jedoch kein “echter” Bruch – “echter Bruch? Was will der jetzt schon wieder? Zahl oben, Zahl unten, Strich dazwischen. Das ist ganz klar ein Bruch. Wo gibts da was unechtes?”. Kramt ihr nochmal ein bisschen in eurem Mathewissen, so kommt euch vielleicht der Begriff “kürzen” in den Sinn. Der Bruch ist nicht vollständig gekürzt. Also: \frac{6}{4} = \frac{3}{2}. Okay, und was hat das mit Primzahlen zu tun? Zerlegung? Bei so einfachen Brüchen macht ihr das im Kopf, aber schaut euch mal \frac{143}{91} an. Na? Mit ein bisschen überlegen kommen wir wie folgt voran: \frac{143}{91} = \frac{13 \cdot 11}{7 \cdot 13} = \frac{11}{7}.

Und, habt ihr es gemerkt? Beim Kürzen zerlegen wir mal mehr, mal weniger, die Zahlen in ihre Bestandteile und kürzen gleiche Teile weg. 143 wird zu 13 \cdot 11. Ebenso lässt sich 91 zerlegen.

Jetzt wissen wir also, was Zerlegung ist. 16 wird zu 4 \cdot 4. Doch 4 ist noch keine Primzahl. Dazu schauen wir uns am Besten einmal an, was eine Primzahl ausmacht:

Eine Primzahl ist eine natürliche Zahl, die sich nur durch 1 und sich selber teilen lässt, also nur zwei Teiler hat.

So lautet also die Definition einer Primzahl. Jetzt sehen wir bestimmt auch, wieso 4 keine Primzahl ist. Durch was lässt sie sich denn teilen? Durch sich selber? Ja. Durch 1? Ja (das ist ja logisch). Aber: 4 lässt sich auch noch durch 2 teilen. Also wissen wir sofort, dass 4 keine Primzahl sein kann. Das ist das schöne an der Mathematik. Wir haben eine Definition und können damit eindeutig eine Aussage über eine Zahl treffen.

In diesem Fall können wir feststellen, ob wir es mit einer Primzahl zu tun haben, oder nicht.

Schauen wir uns mal ein bisschen in den natürlichen Zahlen um und suchen ein paar Primzahlen. Welchen fallen euch ein? Da wären 2, 3, 5, 7, 9? Nein. Denn 9 = 3 \cdot 3. Merke: Nicht jede ungerade Zahl ist eine Primzahl. Eins können wir jedoch festhalten: Alle geraden Zahlen, die größer als 2 sind, sind keine Primzahlen. Wieso? Überlegt einfach mal kurz, welche Eigenschaft die geraden Zahlen haben.

Aber zurück zu den Bausteinen. Wir haben eben gesehen, dass 9 = 3 \cdot 3 ist. 3 ist eine Primzahl. Also wird die 9 sozusagen von der 3 “gebaut”. Schauen wir mal weiter. Die 4 haben wir oben schon gesehen. Aber was ist mit der 210 zum Beispiel? Kein Problem: 210 = 3 \cdot 70 = 3 \cdot 7 \cdot 10 = 3 \cdot 7 \cdot 2 \cdot 5 = 2 \cdot 3 \cdot 5 \cdot 7. Sie wird also auch aus Primzahlen gebildet. So könnten wir immer weiter schauen, jede natürliche Zahl ist entweder eine Primzahl oder aus Primzahlen gebildet. Noch wichtiger: Für jede Zahl gibt es genau eine einzige Möglichkeit, sie aus den Primzahlen zu bilden. Abgesehen von der Reihenfolge natürlich, wie wir bei der 210 gesehen haben. Denn 3 \cdot 7 \cdot 2 \cdot 5 und 2 \cdot 3 \cdot 5 \cdot 7 sind natürlich identisch.

“Okay, jetzt kommt der Typ hier mit son Krams und sagt das. Aber stimmt das überhaupt? Jede natürliche Zahl ist aus Primzahlen gebildet? Egal wie groß? Und wenn sie 1000000000 Stellen hat? Und dann soll diese Zerlegung auch noch eindeutig sein? Wie soll das denn gehen”

Kommen wir also zu dem Teil der Mathematik, den die meisten Schüler hassen und den die Mathematiker lieben: Der Beweis. Denn wer so etwas in die Welt wirft, muss auch zeigen können, dass es der Wahrheit entspricht. Ich seh schon, wie ihr beim Wort Beweis zusammengezuckt seid und euer Mauszeiger instinktiv auf den Tab-schließen-Button zuwandert. Aber HALT! Keine Angst. Das ist einfach. Ich zeig euch das.

Schauen wir uns erstmal an, was wir überhaupt zeigen müssen:

Da wäre zum einen: “Jede natürliche Zahl ist aus Primzahlen gebildet” – etwas anders formuliert: “Für jede natürliche Zahl existiert eine Zerlegung in Primzahlen”

Dann hätten wir noch: “Egal wie groß? Und wenn sie 100000000 Stellen hat?” – in der Fachsprache: “Es gibt unendlich viele Primzahlen”

Und zu guter Letzt: “Und dann soll diese Zerlegung auch noch eindeutig sein?” – da gibts nicht viel, was ich umformulieren müsste. Lassen wir so stehen.

Fangen wir mal an, die erste Aussage (so nennen wir Mathematiker so etwas) zu beweisen. Wir möchten also zeigen, dass es für jede natürliche Zahl eine Zerlegung in Primzahlen gibt. Dazu teilen wir die Menge der natürlichen Zahlen in drei Schüsseln auf. Die erste enthält nur die 1. Die zweite enthält alle Primzahlen und die dritte enthält alle anderen Zahlen, das sind die, die zusammengesetzt sind. Die 1 und die Primzahlen müssen wir nicht weiter beachten, uns interessieren nur die zusammengesetzten Zahlen. Überlegen wir ein bisschen: Stellen wir uns vor, es gibt Zahlen, die kein Produkt von Primzahlen sind. Suchen wir uns von diesen Zahlen die kleinste heraus und geben wir ihr einen Namen – und weil wir Mathematiker sehr sparsam mit Buchstaben umgeben, nennen wir sie n. Nicht sehr schön, aber schön kurz ;-) Unser n ist nicht die 1 und auch keine Primzahl, denn sie kommt aus der dritten Schüssel. Da sie zusammengesetzt ist, muss man sie durch irgendeine andere Zahl teilen können. Nennen wir diese Zahl m.Wer gut aufgepasst hat, dem müsste auffallen, dass wir noch eine Zahl brauchen, denn wenn wir unser n durch das m teilen, brauchen wir ja ein Ergebnis. Das nennen wir l. Einfallsreich. Halten wir also fest: n = l \cdot m. Klar? Wenn l und m unser n teilen, so muss ihr Produkt das n ergeben. l und m sind auch kleiner als n. Das weiß jeder, der schon einmal Division durchgeführt hat. Jetzt zum Anfang zurück: n war die kleinste Zahl, die nicht als Produkt aus Primzahlen dargestellt werden kann. Da m und l kleiner als n sind, müssen die beiden als Produkt von Primzahlen dargestellt werden können. Und somit kann auch n als Produkt dargestellt werden. Wie? Indem wir einfach in der Gleichung n = l \cdot m das l und das m durch ihre entsprechenden Primzahlen ersetzen. Das wir n so darstellen können, ist aber ein Widerspruch zu unserer Annahme, dass n nicht aus Primzahlen zusammengesetzt ist.

Puh, das war ein langer Absatz. Aber ich hoffe ihr habt die einzelnen Schritte verstanden und konntet der Logik dahinter gut folgen.

Schauen wir uns mal die zweite Aussage an. Dies ist eine recht einfach zu beweisende Tatsache, dazu ein kurzes Bild

(via Abstruse Goose)

In zwei, drei kurzen Sätzen der Beweis: Wir nehmen an, es gibt nur eine bestimmte Menge von Primzahlen. Wir multiplizieren diese miteinander. Dazu addieren wir 1. Diese Zahl ist auf jeden Fall größer als, die unserer Meinung nach, größte Primzahl unserer Menge. Nun haben wir zwei Möglichkeiten: Entweder die Zahl ist eine neue Primzahl, dann hätten wir bewiesen, dass es doch noch eine weitere Primzahl gibt und könnten unser Spiel von vorne beginnen. Damit hätten wir gezeigt, dass unsere Menge von Primzahlen doch nicht alle Primzahlen enthält. Oder die Zahl ist keine Primzahl, dann aber finden wir einen Teiler. Und dieser Teiler kommt aus unserer Menge von Primzahlen, denn dass sind ja unserer Meinung die Einzigen, die es gibt. Nennen wir diesen Teiler a. a teilt dann also das Produkt unserer Primzahlen, nennen wir es m und auch m+1 – unsere neue Zahl. Doch wie soll das gehen? Dann müsste unser a aber auch die Differenz der beiden Zahlen teilen. m + 1 - m = 1 enthält aber keine Primteiler. Wir haben also schon wieder einen Widerspruch. Somit können wir felsenfest behaupten, dass es unendlich viele Primzahlen gibt. Dieser Beweis stammt übrigens von Euklid, der um 300 v.Chr. lebte. Ist also schon ganz schön alt der Kram.

Es fehlt jetzt natürlich noch der dritte Beweis, aber den möchte ich an dieser Stelle nicht führen, da er ein bisschen ausführlicher wird und der Eintrag jetzt schon eine Menge an Stoff enthält, den ein Nicht-Mathematiker erst einmal verdauen muss ;-)

Warum ausgerechnet Primzahlen als Thema? Nunja, viele von euch sind sicherlich tagtäglich im Internet unterwegs und manche kaufen bestimmt auch ein oder betreiben Online-Banking. Und da begegnen euch Primzahlen. Denn wie kommen eure Daten sicher von eurem Browser zum Händler oder zur Bank? Natürlich verschlüsselt. Und dazu werden Verschlüsselungsmechanismen benutzt, die darauf beruhen, dass es nur mit sehr viel Aufwand möglich ist, ein Produkt aus zwei sehr großen Primzahlen zu zerlegen.
Denn eins wird euch vielleicht klar: Zwei Zahlen zu multiplizieren ist einfach, aber 78457630683971672300324001194081223769 zu zerlegen braucht schon etwas Arbeit. Und jetzt stellt euch Zahlen vor, die mehrerere 100 Stellen lang sind.

Wer mehr Infos haben möchte, kann einfach mal auf der Wikipedia nachschauen. Primzahl ist hier das Stichwort, wer hätte das gedacht ;-)

Nobody’s perfect – außer Zahlen

Ich wollte ja schon länger mal was schreiben, was mit der Mathematik zu tun hat, mir ist nur nix gutes eingefallen, was auch dem nicht so sehr Mathe-affinen Leser verständlich ist. Da ich jetzt aber mal mein LaTex Plugin ausprobieren wollte, habe ich mich für ein Thema entschieden, was nicht zu sehr mathematisch ist, sondern schon eher in die Numerologie geht: Perfekte (oder auch: Vollkommene) Zahlen.

Vollkommene Zahlen sind Zahlen, bei denen die Summe der Teiler die Zahl selbst ergibt. Verstanden? Nein? Kein Problem. Hier ein kleines Beispiel. Nehmen wir die Zahl 28. 28 hat folgende Teiler: 1,2,4,7,14. Addieren wir diese 5 Zahlen miteinander, so erhalten wir: 1+2+4+7+14 = 28. Jetzt sollte jeder verstanden haben, was eine perfekte Zahl ist. Die kleinste perfekte Zahl ist übrigens die 6. Das zu überprüfen, sei euch überlassen ;-) Bis zum 16. Jahrhundert waren erst lediglich 5 vollkommene Zahlen bekannt. Nach und nach wurden immer mehr Zahlen dieser besonderen Bauart entdeckt. Mein Stand ist, dass es momentan 47 entdeckte vollkommene Zahlen gibt. Die letzte wurde 2008 gefunden und hat 25.956.377 Ziffern. Die ersten, die diese Eigenschaft bestimmten Zahlen zuwiesen, waren übrigens die alten Griechen.

Wofür braucht man sowas? Kurz und knapp: In der Mathematik an sich gar nicht. Natürlich ist die Frage interessant, ob es unendlich viele solcher Zahlen gibt (findet vermutlich nicht jeder interessant) oder ob es auch ungerade vollkommene Zahlen gibt (die Zahl müsste größer als 10^{300} sein). Aber rein vom wissenschaftlichen Standpunkt haben diese Zahlen, meines Wissens nach, keine besondere Auswirkung. Aber wer weiß was in Zukunft kommt, auch bei Primzahlen hat man sich lange gefragt, wofür man diese brauchen könnte, und was würden wir heute ohne diese machen?

Interessant wird es, wenn man diese Zahl aus dem Blickwinkel der Numerologie betrachtet, also der Zahlenmystik. Die kleinste vollkommene Zahl 6: Gott erschuf die Welt in 6 Tagen. Der Mond beweget sich in 28 Tagen um die Erde. Dies und vieles mehr findet man in den Artikeln bei der Wikipedia: vollkommene Zahlen und Numerologie.

Ich weiß natürlich, dass dies hier nicht wirklich viel mit Mathematik zu tun hat (ich hätte noch auf die Konstruktion von vollkommenen Zahlen mit Hilfe von Mersenn’schen Primzahlen eingehen können… gähn…. da schläft die Hälfte aber ein ;-) ). Ich wollte einfach nur mal zeigen, dass Mathematik nicht nur stumpfes rechnen ist oder Formeln lernen. Sondern, dass es auch manche Dinge gibt, die der Mathematik das Recht geben, nicht nur als Naturwissenschaft betrachtet zu werden, sondern auch als Kunst.

How Dropbox saved my ass today

Heute musste ich meinen Vortrag beim Bachelor-Seminar halten. Dazu benötigte ich eine Overheadfolie (ja, ich weiß. Overheadprojektor is sowas von Vorkriegszeit, aber für eine Folie brauch ich keinen Beamer) und mehrere Kopien meiner Handouts. Also alles schön mit LaTeX geschrieben und auf USB-Sticks gepackt. Richtig. Sticks. Plural.

Ich weiß, dass meine mobilen Speichermedien öfters mal rumspinnen. Habe alle vorher extra noch mit FAT formatiert, die Daten draufgepackt und eingepackt. Aus irgendeiner Ahnung heraus noch das ganze in die Dropbox gepackt und ab zur Druckerei. USB-Stick numero 1 an den USB Port. Stick erkannt. Laufwerk öffnen. “Möchten Sie den Datenträger formatieren?” Keine Daten da. Schrecksekunde. Es ist 14.20 und in 40 Minuten ist der Vortrag. Also schnell Stick numero 2 an den Port. Gleiches Vorgehen. “Möchten Sie den Datenträger formatieren?”.

Okay, langsam steigt Panik auf. Also schnell ins Netz, Dropbox Homepage und die Datei öffnen. Drucken. Fertig.

Dropbox ist also eine absolute Empfehlung, ich weiß schon, wo eine Kopie meiner Bachelorarbeit liegen würd, zusätzlich zum SVN Server ;) Das einzige was ich als ungünstig sehe, ist die Tatsache, dass man vielleicht nicht überall Internetzugang hat um auf seine Daten zzuuzugreifen, aber ich glaube die meisten besseren Druckereien sollten so etwas bieten.

Vortrag war btw übrigens ganz okay, Note gibts irgendwann später ;)

PS: Wer mir was Gutes tun will, und noch keinen Dropbox Account hat und jetzt einen will, der macht das hierüber und spendiert mir so noch 2GB 250MB zusätzlichen Speicher ;)

Unikrams

Was man da links sieht ist die erste Version des Handouts für meinen Vortrag am nächsten Monatg, die ich hab korrigieren lassen. Wie man sieht ist noch einiges zu tun, wobei es eigentlich alles nur Kleinigkeiten sind, z.B. vergessen den Mathe-Modus in LaTex zu aktivieren (ich hasse LaTex, aber es sieht nunmal geil aus…) oder ein paar Kommata vergessen. Und es soll Satz statt Theorem heißen, obwohl ich Theorem schöner finde, aber naja, was solls. Ist also noch ein bisschen was zu tun am Wochenende. Wie ich mich dann auf Montagabend freue, wenn ich dann beide Seminare für dieses Semester endlich fertig habe und mich da nur noch relaxed hinsetzen und zuhören muss :)

SEP – die Zweite.

Morgen ist es also soweit: Die erste Iteration des Software- entwicklungspraktikums ist vorbei. Der Prototyp steht. Die Dokumente sind fertig, müssen aber mal wieder komplett überarbeitet werden… Allgemein kann man auch sagen, dass diese Phase hauptsächlich aus Dokumente schreiben und UML Diagramme zeichnen bestand. Programmieren war da wohl eher das kleinere übel. Wir haben also Pflichtenheft, Grobentwurf, Feinentwurf und Testdokumentation (insgesamt 102 Seiten) und geschätzte 10000 UML Diagramme. Dokumentation wurde übrigens in LaTex gesetzt…

Wäre das Projekt nicht so cool, dann wäre die Teammotivation noch geringer, denn jeden Tag bis abends in der Uni sitzen, weil man die Roboter nicht mit nach Hause nehmen darf, ist einfach kraftraubend. Insbesondere wenn man nebenbei noch Vorlesungen besuchen und Hausaufgaben machen muss. Und, achja, erwähnt ich schon, dass es lediglich eine Studienleistung ist? D.h. die Note geht nicht mal in die Bachelornote ein. Ich hoffe jetzt einfach mal, dass die nä. Iteration unkomplizierter wird.

Man darf natürlich auch nicht die Erfolge übersehen: ich hatte letzte Woche noch arge Zweifel, dass das alles so funktionieren wird, aber tatsächlich: Wir können dem Roboter Aufträge zuweisen und er arbeitet diese auch auf dem Kürzesten Wege ab. Das ist schonmal gut. Jetzt geht es darum das alles auf mehrere Roboter zu erweitern und verschiedene Strategien für das Ersteigern von Aufträgen zu implementieren. Von daher: Auf gehts in die nächste Iteration.

Softwareentwicklungspraktikum 2010 – NeXT Generation Transport Robots

Dieses Semester steht das Softwareentwicklungspraktikum (SEP) auf dem Stundenplan. Ein komplettes Projekt selber organisieren und durchführen. Wir bekamen das Lastenheft und müssen nun alles was wir im letzten Semester in der Vorlesung “Softwareentwicklung” gelernt haben. Also Pflichtenheft, Grobentwurf, Feinentwurf, Programmierung, Testen, Testdokumentation, Dokumentation und was noch alles dazugehört.

Unser Thema: NeXT Generation Transport Robots. Unser Szenario ist ein fiktiver Flughafen, auf dem Roboter autonom agieren sollen. Z.B. Personen vom Check-In zum Eingang Gate bringen oder Koffer umherfahren. Da wir natürlich keinen echten Testflughafen (Abbildung siehe unten) haben und wir nur knapp 4 Monate Zeit haben, können wir auch keine echten Roboter bauen. Wir beschränken uns deswegen auf eine Simulation mit Hilfe von Lego NXT Mindstorms (deswegen auch NeXT). Man kann sie mit Java programmieren, großer Vorteil, da wir alle 2 Semester lang Java gelernt haben, und über Bluetooth steuern bzw. mit Daten füttern. Außerdem gibt es eine gut dokumentierte API, so dass wir z.B. keine eigenen Klassen für Kommunikation über Bluetooth schreiben müssen, was auch den Zeitrahmen bei weitem sprengen würde. Die Herausforderung ist weniger die Programmierung, sondern vielmehr die Implementation der ganzen geforderten Features. So sollen die Roboter ihre Wege selber planen, d.h. wir brauchen einen vernünftigen, schnellen Algorithmus, der die kürzesten Wege berücksichtigt. Außerdem wird gefordert, dass es eine zentrale Control Unit gibt, über die die gesamte Kommunikation ablaufen soll und die für die Verteilung der Aufträge zuständig ist. Es müssen natürlich auch unter allen Umständen Kollisionen verhindert werden und der Kunde gibt vor, dass pro Wegabschnitt immer nur ein Roboter fahren kann.

Zum Glück besitzen die Roboter einige nette Sensoren, die Aufgaben um einiges erleichtern, z.B. einen Farbsensor. Damit können sie auf dem Boden aufgeklebte Linien erkennen und anhand derer ihre Wege abfahren. Ebenso lassen sich so mit anderen Farben bestimmte Punkte markieren. Die “Straßen” werden durch schwarzes Klebeband dargestellt, und Kreuzungen können z.B. mit Rot, Gelb und anderen Farben für die Roboter “lesbar” gemacht werden. Erhält jede Kreuzung eine andere Farbe, lässt sich auch gleichzeitig noch die Position feststellen.

Beim ersten Meetings des Teams sind schon einige Diskussionen entbrannt, ich bin echt gespannt, was dabei herauskommt, denn keiner von uns hat bisher so ein Projekt mitgemacht, d.h. niemand hat Erfahrung, was es alles zu berücksichtigen gilt. Am Ende des SEP wird unser, hoffentlich funktionierendes, Projekt auf einer Mini-Messe, dem Tag der neuen Software-Entwickler, vorgestellt. Bis dahin sind es von heute an, noch genau 3 Monate. Ich versuche euch hier von Zeit zu Zeit auf den neuesten Stand zu bringen und von Problemen oder Erfolgen im Laufe des Projekts zu berichten. (alle Bilder von der Seite des Instituts, das für unser Projekt zuständig ist)

Lang, lang ist’s her..

Über einen Monat hab ich jetzt nichts mehr hier geschrieben. Das lag hauptsächlich an Klausuren und akuter Unlust was zu schreiben. Mittlerweile sind die Klausuren vorbei – alles bestanden und auch die Unlust legt sich so langsam. Vor der Tür stehen jetzt noch zwei Seminararbeiten (Thema 1: Graph Homomorphisms, Thema 2: Idealklassen quadratischer Zahlkörper) für das nächste Semester und in knapp 3 Wochen geht die Uni schon wieder los.

Ich entdecke gerade eBay wieder für mich, versteigere ein paar Dinge (Nintendo DSi und einen alten iPod nano). Hauptsächlich weil ich die Dinge nicht mehr benötige und weil das Geld dafür für andere Sachen draufgehn soll, so benötige ich nen Scanner und auch das iPad erscheint ja in absehbarer Zukunft. Außerdem geht meinen externen Festplatten der Speicherplatz aus und ich liebäugle mit nem Drobo. Leider im Moment noch ein bisschen zu teuer für meinen Geldbeutel, deswegen wirds vermutlich auf ne weitere externe Firewire Platte hinauslaufen. Passend dazu probiere ich gerade diverse Ebay Apps für den Mac aus. Im Moment überzeugen mich iSale, was ich mal bei Macheist erworben hab, zum Einstellen von Auktionen und die eBay eigene Air-Anwendung “eBay Desktop”. Dazu noch die iPhone App von eBay die mich dank Push Notifications an bald endende Auktionen erinnert.

Was gibt’s noch? Ich hab angefangen ne PHP Klasse für Matrix Operationen zu schreiben, okay, das interessiert vielleicht die wenigsten hier, aber ich finds ganz praktisch. Gibts zwar schon, aber erstens komm ich so mal dazu mich mit der ganzen Klassenstruktur von PHP5 auseinanderzusetzen und zweitens sind Matlab und Maple für sowas einfach zu überdimensioniert. Das ganze kommt früher oder später auch noch online und wird Open Source, aber das dauert noch ein bissl.

Empfehlungen am Serienhorizont: Auf jeden Fall “How to make it in America” (Trailer). Beschreibung von der offiziellen Seite:

“How to Make It in America” follows two enterprising Brooklyn twenty somethings as they hustle their way through New York City, determined to achieve the American Dream. Trying to make a name for themselves in New York’s competitive fashion scene, Ben Epstein (Greenberg) and his friend and business partner Cam Calderon (Rasuk) use their street knowledge and connections to bring their ambitions to fruition. With the help of Cam’s cousin Rene (Guzman), who is trying to market his own high-energy drink, and their well-connected friend Domingo (“Kid Cudi”), the entrepreneurs set out to make it big, encountering obstacles along the way that will require all their ingenuity to overcome.”

Auf jeden Fall eine coole Serie mit tollem Soundtrack und auf der Homepage gibts zu jeder Folge auch noch die Playlist aller Songs. Sehr lobenswert. Hier noch ein Youtube Video zum wunderbaren Song des Intros.

Und während ich das hier schreibe, habe ich endlich meinen gebrauchten Scanner bei eBay ersteigert. Dank Macbay Faxservice kann ich somit endlich Originaldokumente faxen, ohne mir anhören zu müssen, dass abfotografierte Dokumente nicht akzeptiert werden, sondern ich doch bitte das Stück Papier per Fax senden solle.

Mist, schon wieder den Titel vergessen :D

Die letzten Tage hatte ich nicht wirklich Bock über was zu bloggen, obwohl ich schon ein paar Themen im Kopf hatte. Aber das kommt jetzt in den nächsten Wochen und Tagen. Habe ja seit knapp einer Woche das Torq Conectiv und auch schon ein bissl damit experimentiert, darüber werd ich auf jeden Fall was schreiben. Mein Setup nimmt nämlich langsam ganz schöne Ausmaße an, ein Firewire Audio Interface und ein USB Audio Interface hängen da teilweise dran, wenn ich Musik streamen will.

Dann ist da noch mein lang erwarteter Google Wave Invite, den ich jetzt endlich habe – Nein! Ihr braucht nicht fragen, ich hab noch keine Invites, werde mich dann melden.

Eigentlich hatte ich auch vor, mal ein bisschen was Anwendungsorientiertes aus meinem Studium zu berichten, bin noch am Überlegen, wie ich das am Geschicktesten mache bzw. welche Fachrichtung ich da nehmen soll. Mathematische Bildverarbeitung wär cool gewesen, aber das belege ich aufgrund einer anderen Veranstaltung nicht mehr. Ich überleg mir was. Vielleicht ein bissl Zahlentheorie gemischt mit Computeralgebra, mal sehen.

Mal sehen, wie ich das zeitlich auf die Reihe bekomme, Uni wird ja auch nicht immer einfacher (und Hausaufgaben auch nicht :D ) und nebenbei sind da ja noch 7 Stunden Arbeit pro Woche, die auch erledigt werden wollen. Im Moment herrscht bei mir aber eher Dauermüdigkeit, die Zeitumstellung zusammen mit Studienbeginn, machen sich jetzt erst bemerkbar, ich hoffe, dass geht jedoch schnell vorbei.

Die Menschheit fragt, Alex antwortet – Teil 1

Immer wieder werde ich gefragt: Alex, wie hast du eigentlich die Klausurenzeit überlebt? Das will ich jetzt mal kurz aufklären :D

Es gibt zwei Mittel, die mir dieses Mal geholfen haben: Mett und Mett.

Ich will gar nicht wissen, wieviel Mettbrötchen ich während der drei Wochen gegessen haben. Grob geschätzt 2-3kg waren es sicherlich. Roh. Mit Pfeffer und Salz. Lecker. Es gibt nix besseres als nachts um drei zu lernen und dabei ein schönes Mettbrötchen neben sich liegen zu haben in das man genüsslich reinbeissen kann.

Okay, bei solchen Nachtschichten haben mir auch Kaffee, den ich generell nur während der Klausurenzeit trinke und dann auch nur Pussymischung (viel Milch, Zucker und Kakaopulver), und Energydrinks, kurz unterm Gefrierpunkt, d.h. mit Eisstückchen, geholfen. Wobei ich glaube, dass die Kombination von Mett, Kaffee und Energydrink und Traubenzucker dazu geführt hat, dass ich nach der einen Klausur für 3 Tage halbtot im Bett lag, mit Fieber und sehr instabilem Kreislauf – oder es war die Schweinegrippe :D Aber naja, es wurde am Ende eine 2,3 und ich bin sehr zufrieden damit. Überhaupt, die Klausuren waren echt mal super dieses Semester – im Schnitt ergibt sich ne 2,45 für 6 Klausuren, find ich vollkommen okay.

So, jetzt wisst ihr mein Geheimnis um die Klausurenzeit zu überstehn – die nächste kommt bestimmt, schneller als man denkt und getreu dem Motto: “Ich hab ein ganzes Semester zum lernen Zeit, doch fühl mich erst in der letzten Woche dazu bereit” (SDP – Der Anfang anzufangen) braucht ihr dann meine geheimem Tricks :D