Ich glaube, ich habe ein vernünftiges Verständnis für Komplexitäten wie , Θ ( n ) und Θ ( n 2 ) .
In Bezug auf eine Liste ist eine konstante Suche, sodass es nur den Kopf der Liste erhält. Θ ( n ) ist die Stelle, an der ich die gesamte Liste durchlaufen würde, und Θ ( n 2 ) durchläuft die Liste für jedes Element in der Liste einmal.
Gibt es eine ähnliche intuitive Möglichkeit, zu erfassen, außer zu wissen, dass es irgendwo zwischen O ( 1 ) und Θ ( n ) liegt ?
Antworten:
Die -Komplexität ist normalerweise mit der Unterteilung verbunden. Stellen Sie sich am Beispiel von Listen eine Liste vor, deren Elemente sortiert sind. Sie können in dieser Liste in O ( log n ) -Zeit suchen. Aufgrund der Sortierung der Liste müssen Sie nicht jedes Element einzeln betrachten.Θ(logn) O(logn)
Wenn Sie sich das Element in der Mitte der Liste ansehen und es mit dem gesuchten Element vergleichen, können Sie sofort feststellen, ob es in der linken oder rechten Hälfte des Arrays liegt. Dann können Sie einfach diese eine Hälfte nehmen und den Vorgang wiederholen, bis Sie sie finden oder eine Liste mit 1 Element erreichen, die Sie trivial vergleichen.
Sie können sehen, dass die Liste jeden Schritt effektiv halbiert. Wenn Sie also eine Liste mit der Länge , müssen Sie maximal 5 Schritte ausführen, um eine Liste mit einem Element zu erreichen . Wenn Sie eine Liste von 128 = 2 7 Elementen haben, benötigen Sie nur 7 Schritte, für eine Liste von 1024 = 2 10 benötigen Sie nur 10 Schritte usw.32 5 128=27 7 1024=210 10
Wie Sie sehen, gibt der Exponent in 2 n immer die Anzahl der erforderlichen Schritte an. Der Logarithmus wird verwendet, um genau diese Exponentenzahl zu "extrahieren", zum Beispiel log 2 2 10 = 10 . Es wird auch verallgemeinert, um Längen aufzulisten, die keine Zweierpotenzen sind.n 2n log2210=10
quelle
O(log n)
dann der Fall ist, wenn die Liste zeitlich konstanten Direktzugriff hat. Bei typischen Listenimplementierungen (verknüpfte Listen) ist diesO(n log n)
In Bezug auf (ausgeglichene) Bäume (z. B. Binärbaum, alle sind also Basis 2):log
quelle
Beispielsweise können Sie bei der binären Suche die Problemgröße bei jeder Vergleichsoperation um die Hälfte reduzieren.
quelle
Denken Sie an einen Algorithmus, um die Dezimalzahl umzuwandelnn
while
quelle
Woher kommen Exponentation und Logarithmen? Warum interessieren sie sich so sehr für Informatik? Sie werden es vielleicht nicht bemerken, aber Exponentation ist überall. Haben Sie die Kreditkarte verzinst? Sie haben gerade ein Universum für Ihr Zuhause bezahlt (nicht so schlecht, aber die Kurve passt). Ich denke gerne, dass die Exponentation von der Produktregel herrührt, aber andere können gerne weitere Beispiele nennen. Was ist die Produktregel, können Sie fragen; Und ich werde antworten.
quelle
Es basiert immer noch auf der Größe der Liste, aber Sie müssen nur einen Bruchteil der Elemente besuchen.
quelle
Der binäre Suchalgorithmus ist das klassische Beispiel.
quelle
Die Intuition ist, wie oft Sie eine Zahl, sagen wir n, halbieren können, bevor sie auf 1 reduziert wird, ist O (lg n).
Zeichnen Sie es zur Visualisierung als Binärbaum und zählen Sie die Anzahl der Ebenen, indem Sie diesen geometrischen Verlauf lösen.
quelle