jetzt wäre genau der richtige Zeitpunkt zum Durchdrehen…
Archiv für März 2010
Donnerstag
Donnerstag, 18. März 2010Heute war endlich mal wieder Sonnenschein angesagt. Nachdem ich den vormittag in der Sonne verbracht hatte und dabei Theo ins Hirn gelöffelt habe, bin ich noch ne Runde auf der Hausstrecke gejoggt.
Hab etwas interessantes gefunden:
Scicasts.com – Breaking Science and Technology News
Habe übrigens herausgefunden, dass der Dude aus Hanau meinen Mikrobioschein (hoffentlich noch) hat.
Überblick Datenstrukturen
Mittwoch, 10. März 2010Elementare Datenstrukturen:
Lineare Listen:
(Implementierung durch Arrays)
Operationen: insert/remove (Elemente einfügen/entfernen), movetofront/next (Bewegung in der Liste), Statustest (ist die Liste leer, ist das Ende der Liste erreicht?), Werte lesen/schreiben, Element suchen, Konkatenation, entferne alle Elemente links/rechts vom aktuellen Element
Modifikationen: modifiziere insert so, dass Elemente sortiert eingefügt werden können, modifiziere search so, dass eine erfolglose Suche schnell abgebrochen werden kann (z.B. mit binärer Suche)
Kosten: alle Funktionen können in konstanter Zeit durchgeführt werden. Ausnahme: search()
Beispiel: Addition dünnbesetzter Matrizen
Dequeues, Queues, Stacks:
Operationen: pop/push (entferne jüngsten Schlüssel/füge einen Schlüssel ein)
Kosten: konstant
Operationen: enqueue/dequeue (füge einen Schlüssel ein, entfernen ältesten Schlüssel)
Kosten: konstant
Verallgemeinerung von Stacks und Queues
Operationen: insertleft/insertright, removeleft, removeright
Kosten: konstant
Implementierung als:
- Vater-Array (optimal für Operationenmenge {Vater, Tiefe} wegen Speicherplatzeffizienz: O(n)): speichere für jeden Knoten den Namen seines Vaters
- Adjazenzliste: speichere für jeden Knoten die Liste seiner Kinder
- Binärbaum (1. Wahl für binäre Bäume): jeder Knoten besitzt je einen Zeiger auf die Struktur seiner Kinder, der Zeiger wurzel zeigt stets auf die Struktur der Wurzel des Baums
- Kind-Geschwister (1. Wahl für allgemeine Bäume): jeder Knoten besitzt einen Zeiger auf das erste (linkeste) Kind und einen Zeiger auf den nächsten Geschwister-Knoten
Suche in Bäumen:
Postorder (t1, …, tn, Wurzel), Präoder (Wurzel, t1, …, tn), Inorder (t1, Wurzel, t2, …, tn)
Implementierung als Adjazenzliste
Anwendungen: Topologisches Sortieren, Eulerkreis
Prioritätswarteschlangen:
Verallgemeinerung des Queues: jedes Element besitzt eine Priorität, das Element mit der höchsten Priorität kann entfernt werden
Implementierung durch Heap
Operationen: insert(priority), delet_max, change_priority(wo, neue_priorität), remove(wo)
Datenstrukturen und Algorithmen:
Dijkstras SSSP Algorithmus (Visualisierung), Prims Algorithmus für MSP, Kruskals Algorithmus für MSP
Dienstag, 2. März 2010
Der Termin für Theo (Algorithmentheorie) ist ausgemacht. Jetzt hoffe ich, dass mein verloren geglaubter Schein vom Mikrobio-Praktikum doch noch irgendwo auftaucht.
Nebenbei habe ich das hier gefunden:
Free Online Course Materials vom MIT mit aufgezeichneten Vorlesungen zum Beispiel. Falls man mal was verpasst hat.