16 - Komplexität von Algorithmen [ID:10709]
50 von 553 angezeigt

An

Wie letzte Woche angekündigt, ab heute also nicht mehr Analyse von Algorithmen, sondern

Analyse von Problemen, hin auf ihre Berechnungskomplexität weiterhin.

Ich schreibe hier in der Überschrift zunächst mal Recall, also Erinnerung an Komplexitäten,

ja deswegen, weil sie die Anfangsgründe des ganzen Jahr schon kennen aus BFS.

Das heißt nichts von dem, was ich also in der heutigen Sitzung mache, dürfte in

irgendeiner Form wirklich neu sein. Es geht tatsächlich mehr um Erinnerung und

vielleicht noch eine Fixierung von Notation, wobei ich jetzt also hier mit Notation auch

nicht exzessiv wählerisch sein werde. Wir kennen schon ein Berechnungsmodell bzw.

das kannten Sie ja auch schon, das ist die Random Access Machine. Für viele Zwecke in

der Komplexität ist die nützlich, für viele andere Zwecke ist weiterhin die gute alte

Turing Maschine nützlich. So ich erinnere jetzt also, nachdem wir an die Random Access

Machine schon mal erinnert haben, an die Turing Maschine.

Eine zweite kurze T-App.

Das vielleicht hervorstechendste Merkmal der Turing Maschine ist, dass sie als Speicherbänder

verwendet, die, ich weiß gar nicht mehr, wie das Gegenteil von Random Access heißt.

Früher hatte man auf Computern, da waren sie noch ganz klein, als Speichermedium, nicht

etwa Disketten, die man heute noch als Speichersymbol merkwürdigerweise in jedem Office Programm

kennt, obwohl keiner so ein Ding je gesehen hat, sondern davor hatte man Kassetten, Tonkassetten,

auf die man sequenziell zugegriffen hat. Man konnte nicht irgendwo auf diese Kassette zugreifen,

sondern man musste die erstmal an die richtige Stelle spulen. Das dauert in unserer neuen

Sprechweise im Zweifelsfalle nie ein Jahr lange. Das heißt, in unserem Turing-Maschinen-Modell,

da haben wir nun High-Tech, nicht ein, sondern mehrere Bänder, wenn wir wollen. Es gibt auch

natürlich eine Version mit nur einem Band, das heißt, die Anzahl Bänder sehen wir als

Variabel an, durchnummeriert von 1 bis K.

Das erste Band, wenn es denn mehr als ein Band gibt, sehen wir an als das Eingabeband,

und das nehmen wir ernst. Das erste Band ist Read-Only, wir können auf das erste Band nicht schreiben.

Das letzte Band, so es denn mindestens drei Bänder gibt, ist das Ausgabeband, auch das

nehmen wir ernst. Das ist Write-Only, da können wir nicht von lesen. Ja, was befindet sich

überhaupt auf den Bändern? Die Bänder sind so diskret unterteilt, in einzelne Speicherplätze,

in einem solchen Speicherplatz, nennen wir eine Zelle. Es gibt jetzt verschiedene Versionen

des Ganzen, wenn wir nichts weiter dazu sagen, nehmen wir an, dass unsere Bänder nur einseitig

und endlich sind, also nach rechts. Es gibt eine Version, die man genauso gut verwenden

kann, in der die Bänder beidseitig und endlich sind, nach links und nach rechts. So, gibt

es also diese Zellen. Und zugegriffen wird auf die Bänder überschreibleseköpfe, eins

pro Band. So, die Dinger nenne ich im Allgemeinen nur Köpfe. Es ist ja auch nicht wahr, dass

sie jedes Mal Schreib- und Leseköpfe sind, das hier ist ein reiner Schreibkopf und das

hier ist ein reiner Lesekopf. So, und zugegriffen wird auf das Band eben in völliger Analogie

zum Kassettenrekorder über den Kopf allein. Das heißt, wir können immer nur auf die

Bänder zugreifen, an der der Kopf gerade steht. So, und dann haben wir hier einen Controller,

das ist das Programm. Und dieser Controller, der hat Zustände und zwischen diesen Zuständen

gibt es Übergänge. Hier gibt es noch mal keine bunte Kreide. Also diese einzelnen Punkte

hier in diesem Graphen, die nenne ich Zustände. Und der Controller, der kontrolliert die Schreibleseköpfe.

Das heißt, er bewegt sie und er transferiert Daten hin und her. Also er kann aufs Band

schreiben und er kann vom Band lesen über die Schreibleseköpfe. Zwei wichtige Charakteristika

dieses Modells sind diese, ich schreibe es auf Englisch. Es ist einerseits ein Infinite

State Modell. Es gibt unendlich viele Zustände. Deswegen, weil die Bänder unendlich groß sind.

Dagegen diese Kontrolleinheit hier unten, die das ganze steuert, die ist endlich. Die hat

nur endlich viele Zustände. Die ist eben ein Programm. Ja, genau, also ein Programm ist

ja auch endlich. Irgendwann mal sind wir fertig mit tippen und das Programm steht da als

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:31:18 Min

Aufnahmedatum

2013-06-12

Hochgeladen am

2019-04-22 07:29:03

Sprache

de-DE

  • Mathematische Hilfsmittel der Algorithmenanalyse: Abschätzung des asymptotischen Wachstums von Funktionen, Summationen, Anzahlen, divide-and-conquer-Rekursionen, etc.
  • Grundbegriffe der quantitativen Algorithmenanalyse: worst-case- und average-case-Analsyse, obere und untere Schranken, Algorithmen- und Problemkomplexität

  • Exemplarische Analysen von Sortieralgorithmen

  • Sortierkomplexität und Entropie

  • Quellcodierung und Datenkompression

  • Komplexität von arithmetischen Operationen und Problemen (Multiplikation, Primtest, Faktorisierung)

  • modulare Arithmetik und schnelle Fouriertransformation

  • Kryptographie und Komplexität

Lernziele und Kompetenzen:

Die Studierenden

  • erwerben fundierte Kenntnisse über die Grundbegriffe der quantitativen Algorithmenanalyse (Laufzeit) und die benötigten mathematischen Methoden

  • verstehen die Komplexität (Laufzeitverhalten) von Standardalgorithmen (z.B. Sortieren, arithmetische Algorithmen) und können deren praktische Bedeutung erklären

  • sind in der Lage, an einfachen, exemplarischen Algorithmen Analysen des worst-case-Verhaltens und des average-case-Verhaltens durchzuführen

  • können exemplarisch Algorithmenkomplexität und Problemkomplexität in Bezug setzen

  • können die Beziehungen zwischen Sortier- und Suchkomplexität und dem Entropiebegriff darstellen

  • erwerben Grundkenntnisse über algebraische Strukturen der Arithmetik und die Komplexität arithmetischer Operationen

  • können die Rolle von Komplexitätsaussagen für die Beurteilung der Sicherheit einfacher kryptografischer Protokoll darstellen

Literatur:

Graham, Knuth, Patashnik, Concrete Mathematics, Addison-Wesley, 1994.
Cormen, Leiserson, Rivest, Stein, Introduction to Algorithms, MIT-Press, 2001.
Heun, Grundlegende Algorithmen, Vieweg, 2001.

Einbetten
Wordpress FAU Plugin
iFrame
Teilen