Die Big-O-Notation ist eine Methode zur Beschreibung von Zeit und Raum, die für die Durchführung eines Algorithmus erforderlich sind. Diese Methode wird also verwendet, wenn es darum geht, zu messen und zu verdeutlichen, wie die Anzahl der Operationen in einem Algorithmus als Funktion in Abhängigkeit von Änderungen der Eingabedaten skalieren kann (Christian & Griffiths, 2016). Die Big-O-Notation ist hilfreich, um das Verhalten von Algorithmen in Bezug auf Änderungen der Größe bestimmter Eingabedaten zu erklären. Infolgedessen ermöglicht die Verwendung der Big-O-Notation eine Klassifizierung des Verhaltens von Algorithmen mit dem Schwerpunkt auf Zeit- und Raumkategorien oder Zeit- und Raumkomplexität1. Die Beispiele der Big-O-Notation können mit dem Schwerpunkt auf der Zeitkomplexität oder der Laufzeit von Algorithmen bereitgestellt werden, da diese Kategorie von Wissenschaftlern am aktivsten gemessen und beschrieben wird (VanderPlas, 2016). Die Schlüsselfrage, die mit Hilfe der Big-O-Notation beantwortet werden kann, ist daher die folgende: Wie viel langsamer oder schneller kann ein bestimmter Algorithmus laufen, wenn mehr Daten hinzugefügt werden (z. B. 10.000 Elemente anstelle von 1)?
Wenn jemand Änderungen des Ressourcenbedarfs in Abhängigkeit vom Wachstum der Eingabedaten vorhersagen und beschreiben möchte, wendet er oder sie die Big-O-Notation für einen ausgewählten Algorithmus an. Bei der Entwicklung einer Bewertung und der Verwendung eines geeigneten Algorithmus ist es zum Beispiel wichtig zu wissen, wie dieser Algorithmus im schlimmsten Fall funktioniert, wenn die beteiligten Daten erheblich größer werden und wie viel Zeit dafür benötigt wird. Die Verwendung der Big-O-Notation hilft bei der Beschreibung des spezifischen Ressourcenbedarfs in Abhängigkeit von der Zunahme der für die Erstellung eines Bewertungssystems wichtigen Daten.
Diese Art von formalen Notationsansätzen ist als asymptotische Notation bekannt. Es ist wichtig, darauf hinzuweisen, dass diese spezielle Methode 1892 von Paul Bachmann vorgeschlagen und von dem Mathematiker und Theoretiker in seiner Analytischen Zahlentheorie beschrieben wurde. Dieser Ansatz wurde auch von Edmund Landau entwickelt, und die Big-O-Notation ist heute auch als Bachmann-Landau-Notation bekannt (Christian & Griffiths, 2016; VanderPlas, 2016). So wurde die Notation im 19. Jahrhundert in der Wissenschaft aktiv genutzt.
Es gibt vier gängige Verhaltenstypen, die mit der Big-O-Notation verbunden sind: a) konstant; b) linear; c) logarithmisch; d) quadratisch. Obwohl es noch mehr Verhaltenstypen gibt, werden diese vier Algorithmen von Wissenschaftlern und Programmierern in der Praxis am häufigsten verwendet. Diese Verhaltensweisen müssen im Detail besprochen werden:
Diese vier typischen Big O Notation-Verhaltensweisen zeigen, wie viel Zeit oder Platz ein bestimmter Algorithmus benötigen kann, wenn die Anzahl der Datenelemente oder die Eingabe entsprechend einer der Verhaltensweisen steigt. Wird beispielsweise ein linearer Algorithmus verwendet (O (n)), lässt sich die Zeit bestimmen, die ein Algorithmus benötigt, wenn die Datenmenge wächst. Wenn der O (n)-Algorithmus bei n = 100 etwa 1 Minute benötigt, wird er bei n = 600 etwa 6 Minuten benötigen.
Die Big-O-Notation ist jedoch keine Methode, die die für einen bestimmten Algorithmus benötigte Zeit darstellt, und die Notation liefert keine genaue Antwort auf die Frage, wie viele Minuten für die Durchführung eines Algorithmus erforderlich sind. Im Gegenteil, die Big O Notation ist eine Methode, die eine Funktion darstellt, die Änderungen in der Skalierung zeigt, wenn sich die Anzahl der Elemente ändert (Christian & Griffiths, 2016; VanderPlas, 2016). Die Darstellung des Verhaltens der Big O Notation in Form von Funktionen wird aktiv genutzt, um die Frage nach der zeitlichen und räumlichen Komplexität eines ausgewählten Algorithmus zu beantworten (Abbildung 1).
Die Big-O-Notation wird in der Informatik rege genutzt, sollte aber von Little-O-Notationen, Big-Ω-Notationen und Big-Θ-Notationen unterschieden werden. Im Gegensatz zu Little-O-, Big-Ω- und Big-Θ-Notationen kann die Big-O-Notation in den meisten Fällen ohne Änderung des Kontexts und bestimmter Bedingungen verwendet werden (Christian & Griffiths, 2016; VanderPlas, 2016). Beim Vergleich der Big-O-Notation mit der Little-O-, Big-Ω- und Big-Θ-Notation lässt sich feststellen, dass die Big-O-Notation eine einfachere Methode ist als die anderen Arten von asymptotischen Notationen (Gregoire, 2014). Darüber hinaus ermöglichen verschiedene Verhaltensweisen und formale Algorithmen, die mit der Big-O-Notation verbunden sind, den Verzicht auf die Verwendung einer anderen komplexen Notation. Daher wird diese Methode aktiv in Fällen eingesetzt, in denen die Leistung verschiedener Algorithmen in Bezug auf eine bestimmte Anzahl von Datenelementen verglichen werden muss, um den am besten geeigneten Algorithmus auszuwählen.
Bei der Verwendung der Big-O-Notation bestimmen Wissenschaftler bestimmte Voraussetzungen und Bedingungen von Algorithmen, um die effizientesten zu entwerfen, die auf ein Projekt angewendet werden können, und um eine Kurve für die ausgewählte Funktion zu demonstrieren. Unter diesem Gesichtspunkt wird die Big O Notation oft als ein Maß definiert, das die relative Leistung im Gegensatz zur absoluten Leistung hervorhebt. Daher ist es unmöglich, die tatsächliche Zeit zu bestimmen, die ein Algorithmus benötigt. Schließlich ist zu beachten, dass die Big O Notation nur auf solche Algorithmen angewendet werden kann, bei denen die Geschwindigkeit des Prozesses direkt von der verwendeten Datenmenge abhängt. Dieser Begriff kann nicht auf Algorithmen angewandt werden, bei denen keine Eingabe identifiziert wird oder die Zeit zufällig sein kann.
Referenzen
Algorithmen Datenstrukturen [Bild]. (n.d.). Web.
Christian, B., & Griffiths, T. (2016). Algorithms to live by: The computer science of human decisions. New York, NY: Macmillan.
Gregoire, M. (2014). Professional C++ (3rd ed.). Indianapolis, IN: John Wiley & Sons.
VanderPlas, J. (2016). Python data science handbook: Essential tools for working with data. Sebastopol, CA: O’Reilly Media.
Fußnoten