Print View

Vorlesung 01Tue Oct 18, 2022 02:00 PM -  | 04:00 PM

  • Administrativa
  • Einleitung
    • Es geht um Daten: wie man sie darstellt, manipuliert, auf sie zugreift und sie speichert?
  • Einführendes Beispiel: Polynome
    • Darstellung eines Polynoms vom Grad n als Koeffizientenform
      • Addition zweier Polynome in O(n) Operationen
      • Multiplikation zweier Polynome in O(n^2) Operationen
      • Auswerten an einer Stelle x0 (naiv) in O(n^2) Operationen 

Vorlesung 02Thu Oct 20, 2022 02:00 PM -  | 04:00 PM

  • Einführendes Beispiel: Polynome
    • Darstellung eines Polynoms vom Grad n als Koeffizientenform
      • Auswerten an einer Stelle x0 in O(n) Operationen mit dem Horner Schema
    • Darstellung eines Polynoms vom Grad n durch Auswertung an mindestens n+1 verschiedenen Stellen
      • Addition zweier Polynome in O(n) Operationen
      • Auswerten an einer Stelle z in O(n^2) Operationen durch Polynominterpolation (z.B., Newton oder Lagrange Interpolation)
      • Multiplikation zweier Polynome in O(n) Operationen
    • Durch geschickte Wahl der Stellen kommt man von der Koeffizienten- zur Wertedarstellung mit O(n log n) Operationen (schnelle Fourier Transformation, FFT)
    • FFT ist einer der wichtigsten Algorithmen überhaupt, mit Anwendungen in der Signalverarbeitung, der Datenkompression, für schnelle Quantenalgorithmen zur Faktorisierung von großen Zahlen uvam; siehe dazu auch Seite 27ff des MafI2 Skripts oder z.B. auch hier.

Vorlesung 03Tue Oct 25, 2022 02:00 PM -  | 04:00 PM

  • Abschluss Polynome und FFT
  • Rekursionsgleichungen und Rekursionsbäume

Vorlesung 04Thu Oct 27, 2022 02:00 PM -  | 04:00 PM

  • Algorithmen: Definition und Qualitätsmerkmale
  • Arten der Evaluation von Algorithmen: experimentell und theoretisch
  • Experimentelle Analyse (Testen/Benchmarking): sehr konkrete Ergebnisse, aber problematisch.
  • Theoretische Analyse: liefert leicht vergleichbare und allgemeine Aussagen, ist oft mit geringerem Aufwand verbunden als experimentelle Analyse, kann aber auch wesentliche Aspekte vernachlässigen.
  • Theoretische Analyse benötigt ein abstraktes Maschinenmodell, um die erlaubten elementaren Schritte festzulegen.
  • Definition Registermaschine/Random Access Machine (RAM)
  • Definition: Laufzeit und Speicherplatz auf der RAM
  • Programmierung und Laufzeitbestimmung auf der RAM sind anstrengend, also: Pseudocode,
  • O-Notation und asymptotische Analyse, um von konstanten Faktoren und Termen niedriger Ordnung zu abstrahieren (Achtung: kann manchmal irreführend sein)

Vorlesung 05Tue Nov 01, 2022 02:00 PM -  | 04:00 PM

  • O-Notation: Definitionen und Eigenschaften
  • Analyse rekursiver Algorithmen
    • Abschaetzung mittels Rekursionsbaum oder mehrfachem Einsetzen
    • Beweis der Abschaetzung durch Induktion
    • Merge sort als Beispiel

Vorlesung 06Thu Nov 03, 2022 02:00 PM -  | 04:00 PM

  • Rekursion: Die Fibonacci-Zahlen
    • Analyse und effizientere Variante
  • Einfache Datenstrukturen: Stapel und Schlange
    • Implementierungen als Array fester Grösse und als verkettete Liste

Vorlesung 07Tue Nov 08, 2022 02:00 PM -  | 04:00 PM

  • Amortisierte Laufzeitanalyse
    • Buchhaltermethode
    • Beispiele: Dynmaisches Array (nur Vergroessern), Binaerzaehler mit Inkrement
  • Definition ADT
  • Spezifikation Prioritaetswarteschlange und moegliche Implemetierungen

Vorlesung 08Thu Nov 10, 2022 02:00 PM -  | 04:00 PM

  • Implemetierung und Laufzeitanalyse von Prioritaetswarteschlangen mittels
    • verketteten Listen mit "zweiI Ebenen"
    • binaeren Heaps

Vorlesung 09Tue Nov 15, 2022 02:00 PM -  | 04:00 PM

  • Bottom-up Aufbau eines binaeren Heaps
  • ADT Woerterbuch
    • Hashfunktionen
    • Kollisionen und moegliche Behandlungsstrategien

Vorlesung 10Thu Nov 17, 2022 02:00 PM -  | 04:00 PM

  • Beispiele fuer Kompressionsfunktionen
  • Kollisionsbehandlung mittels
    • Verkettung
    • linearem Sondieren

Vorlesung 11Tue Nov 22, 2022 02:00 PM -  | 04:00 PM

  • Kuckuckshashing
  • Hashfunktionen fuer "Fingerprinting"

Vorlesung 12Thu Nov 24, 2022 02:00 PM -  | 04:00 PM

  • Kryptographisches Hashing, Hashzeiger
  • ADT geordnetes Woerterbuch
    • Spezifikation Skipliste

Vorlesung 13Tue Nov 29, 2022 02:00 PM -  | 04:00 PM

  • Erwartete Laufzeitanalyze von Skiplisten
  • Spezifikation Binaere Suchbaeume

Vorlesung 14Thu Dec 01, 2022 02:00 PM -  | 04:00 PM

  • Implementierung binaerer Suchbaeume
  • hoehenbalancierte binaere Suchbaeume
    • Definition und Hoehen-/Laufzeitanalyse von AVL-Baeumen

Vorlesung 15Tue Dec 06, 2022 02:00 PM -  | 04:00 PM

  • Rotationen an BSBs (AVL-Baeume als Beispiel)
  • Red-Black-Baeume

Vorlesung 16Thu Dec 08, 2022 02:00 PM -  | 04:00 PM

  • (a,b)-Baeume
    • Definition
    • Einfuegen
    • Loeschen (wird naechste Vorlesung wiederholt)

Vorlesung 18Thu Dec 15, 2022 02:00 PM -  | 04:00 PM

  • Wiederholung Loeschen in (a,b)-Baeumen
  • Zeichenketten
  • Codes, praefix(freie) Codes, optimale praefix(freie) Codes

Vorlesung 19Tue Jan 03, 2023 02:00 PM -  | 04:00 PM

  • Algorithmus zur Erstellung von Huffman Codes (de facto Definition)
  • Beweis der Optimalitaet von Huffman Codes

Vorlesung 20Thu Jan 05, 2023 02:00 PM -  | 04:00 PM

  • Fortsetzung des Beweises zur Optimalitaet von Huffman-Codes
  • laengste gemeinsame Teilfolgen

Vorlesung 21Tue Jan 10, 2023 02:00 PM -  | 04:00 PM

  • kurze Fortsetzung zu laengsten gemeinsamen Teilfolgen
  • Rabin-Karp-Algorithmus

Vorlesung 22Thu Jan 12, 2023 02:00 PM -  | 04:00 PM

  • kurze Fortsetzung und Korrekturen zum Rabin-Karp-Algorithmus
  • (PATRICIA) Tries, Suffixbaeume

Vorlesung 23Tue Jan 17, 2023 02:00 PM -  | 04:00 PM

  • Komprimierte Tries
  • Objektorientierte Programmierung: Motivation, Beispiel

Vorlesung 24Thu Jan 19, 2023 02:00 PM -  | 04:00 PM

  • Objektorientiere Programmierung: Klassenvariablen/statische Methoden, Kapselung, Vererbung

Vorlesung 25Tue Jan 24, 2023 02:00 PM -  | 04:00 PM

  • Objektorientiere Programmierung: Beispiel in Java
  • Graphen

Vorlesung 26Thu Jan 26, 2023 02:00 PM -  | 04:00 PM

  • Graphen: Adjazenliste und Adjazenzmatrix
  • Tiefensuche und Breitensuche

Vorlesung 27Tue Jan 31, 2023 02:00 PM -  | 04:00 PM

  • kürzeste Wege in Graphen
  • Algorithmus von Dijkstra

Vorlesung 28Thu Feb 02, 2023 02:00 PM -  | 04:00 PM

Algorithmus von Dijkstra: Korrektheit 

Vorlesung 29Tue Feb 07, 2023 02:00 PM -  | 04:00 PM

A*-Suche: Dijkstras Algorithmus mit Heuristik

Vorlesung 30Thu Feb 09, 2023 02:00 PM -  | 04:00 PM

Der Algorithmus von Bellmam-Ford

Kürzeste aufspannemde Bäume 

Vorlesung 31Tue Feb 14, 2023 02:00 PM -  | 04:00 PM

Komplexitätstheorie: Die Komplexitätsklassen P und NP

Vorlesung 32Thu Feb 16, 2023 02:00 PM -  | 04:00 PM

NP-vollständige Probleme: Definition und Beispiele