Hauptinhalt
Kurs: Informatik > Lerneinheit 1
Lektion 3: Asymptotische NotationFunktionen in asymptotischer Schreibweise
Wenn wir die asymptotische Notation verwenden, um die Wachstumsrate der Laufzeit eines Algorithmus in Bezug auf die Eingabegröße zum Ausdruck zu bringen, ist es gut, ein paar Dinge im Hinterkopf zu behalten.
Fangen wir mit etwas einfachem an. Angenommen, ein Algorithmus benötigt eine konstante Ausführungszeit, unabhängig von der Eingabegröße. Als Beispiel betrachten wir ein Array, das bereits in aufsteigender Reihenfolge sortiert ist. Du willst darin das minimale Element finden. Das würde dann unabhängig von der Größe des Arrays immer eine konstante Zeit dauern, da das minimale Element stets bei Index 0 anzufinden ist. Da wir die asymptotische Notation gerne als Funktion in Abhängigkeit von angeben, könnte man die Laufzeit dieses Algorithmus als angeben. Warum? Weil ist und die Laufzeit des Algorithmus ein konstantes Vielfaches von 1 ist. In der Praxis schreiben wir allerdings nicht sondern .
Angenommen, ein Algorithmus dauert . Ebensogut könnte man die Laufzeit als angeben. Wenn die Basis des Logarithmus eine Konstante (2,10, usw.) ist, spielt es keine Rolle, welche Basis wir in der asymptotischen Notation verwenden. Was ist der Grund dafür? Es gibt eine mathematische Formel, die besagt:
für alle positiven Zahlen , , and . Wenn and konstant sind, dann unterscheiden sich und nur durch den Faktor , und das ist ein konstanter Faktor, denn wir bei der asymptotischen Notation vernachlässigen dürfen.
Daher können wir sagen, dass die Worst-Case-Laufzeit der Binärsuche für jeden positiv konstanten Wert von ist. Warum? Die Anzahl der Vermutungen ist höchstens . Das Erzeugen und Testen jedes Ratewertes nimmt eine konstante Zeit in Anspruch, ebenso die Einrichtung und Rückgabe. Die Binärsuche dauert also , Wir verwenden dabei den Logarithmus zur Basis 2 weil Informatiker gerne in Potenzen von 2 denken.
Wenn wir mit asymptotischer Notation arbeiten sehen wir eine Ordnung der häufig verwendeten Funktionen. Wenn und Konstanten sind und ist, dann wächst eine Laufzeit von langsamer als eine Laufzeit von . Zum Beispiel wächst eine Laufzeit von , die ja ist, langsamer als eine Laufzeit von . Die Exponenten müssen dabei keine ganzen Zahlen sein. Zum Beispiel wächst eine Laufzeit von langsamer als eine Laufzeit von , was ist.
Das folgende Diagramm vergleicht das Wachstum von , und :
Logarithmen wachsen langsamer als Polynome. Das heißt, dass langsamer wächst als für beliebige positive Werte für . Aber da der Wert von mit steigendem wächst, wächst schneller als .
Das folgende Diagramm vergleicht das Wachstum von , und :
Hier ist eine Liste von Funktionen in asymptotische Notation, denen wir bei der Analyse von Algorithmen oft begegnen. Wir sortieren sie nach ihrer Wachstumsgeschwindigkeit - von langsam nach schnell:
Beachte, dass die Exponentialfunktion , mit , schneller wächst as eine polynomische Funktion , mit als Konstante.
Diese Liste ist nicht erschöpfend; es gibt viele Algorithmen, deren Laufzeiten hier nicht angezeigt werden. Du wirst hoffentlich ein paar davon auf deiner Reise durch die Informatik treffen.
Dieses Tutorial ist in Zusammenarbeit zwischen den Professoren Thomas Cormen und Devin Bock von Dartmouth Computer Sience und dem Khan Academy Computing Curiculum-Team entstanden und wurde von der KA Deutsch Community übersetzt. Das Tutorial ist unter der Lizenz CC-BY-NC-SA lizenziert.
Willst du an der Diskussion teilnehmen?
Noch keine Beiträge.