Skriptes - Uni Bremen - Universität Bremen
Skriptes - Uni Bremen - Universität Bremen
Skriptes - Uni Bremen - Universität Bremen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
V. Appendix<br />
A. Laufzeitanalyse von Algorithmen und O-Notation<br />
Laufzeitanalyse<br />
Ein gegebenes Berechnungsproblem lässt sich meist durch viele verschiedene Algorithmen<br />
lösen. Um die „Qualität“ dieser vielen möglichen Algorithmen zu bestimmen, analysiert<br />
man deren Ressourcenverbrauch. In diesem Zusammenhang ist die wichtigste<br />
Ressource der Zeitverbrauch, also die Anzahl Rechenschritte, die der Algorithmus ausführt.<br />
Andere Ressourcen, die eine Rolle spielen können, sind beispielsweise der Speicherverbrauch<br />
oder der Kommunikationsbedarf, wenn der Algorithmus auf mehreren<br />
Prozessoren oder Rechnern verteilt ausgeführt wird. Ein Algorithmus mit geringem Ressourcenbedarf<br />
ist dann einem Algorithmus mit höherem Ressourcenbedarf vorzuziehen.<br />
Die Laufzeit eines AlgorithmusAauf einer Eingabexist die Anzahl elementarer Rechenschritte,<br />
die A gestartet auf x ausführt, bevor er anhält. Was ein elementarer Rechenschritt<br />
ist, wird in der VL „Theoretische Informatik II“ genauer untersucht. Bis dahin<br />
betrachten wir die üblichen Operationen eines Prozessors als elementare Rechenschritte,<br />
also z.B. Addition und Multiplikation. Die zentrale Eigenschaft eines elementaren<br />
Rechenschrittes ist, dass er in konstanter Zeit ausgeführt werden kann—das soll heißen,<br />
dass die benötigte Zeit unabhängig von den konkreten Argumenten ist, auf die der<br />
Rechenschritt angewendet wird.<br />
Man beschreibt die Laufzeit eines Algorithmus immer in Abhängigkeit von der Größe<br />
seiner Eingabe. Dem liegt die Intuition zugrunde, dass das Verarbeiten einer grösseren<br />
Eingabe im allgemeinen länger dauert als das einer kleinen. So kann man z.B. offensichtlich<br />
schneller entscheiden, ob ein gegebener NEA ein Eingabewort der Länge 1 akzeptiert<br />
als eines der Länge 128. Der Zeitverbrauch eines Algorithmus kann also beschrieben werden<br />
durch eine Funktion<br />
f : Æ → Æ<br />
die jeder Eingabelänge n ∈ Æ eine Laufzeit f(n) zuordnet. Man beachte, dass diese<br />
Darstellung von der konkreten Eingabe abstrahiert, d.h., die Laufzeit des Algorithmus auf<br />
verschiedenen Eingaben derselben Länge wird nicht unterschieden. Diese kann durchaus<br />
sehr unterschiedlich sein: für einen gebenen NEA A, in dem der Startzustand keine<br />
a-Übergang erlaubt, ist es trivial, zu entscheiden, dass das Wort<br />
abbbababababbbbbbbbababbabbabbbbbbbaaabbbbaaaaaab<br />
159