Was bedeutet ?

44

Dies ist eine grundlegende Frage, aber ich denke, dass dasselbe ist wie , da der größere Term dominieren sollte, wenn wir ins Unendliche gehen? Dies würde sich auch von O (\ min (m, n)) unterscheiden . Ist das richtig? Ich sehe diese Notation immer wieder, besonders wenn ich über Graph-Algorithmen diskutiere. Zum Beispiel sehen Sie routinemäßig: O (| V | + | E |) (siehe z . B. hier ).O(m+n)O(max(m,n))O(min(m,n))O(|V|+|E|)

Frank
quelle
vielleicht hängt m von n
Andrew

Antworten:

33

Du hast recht. Beachten Sie, dass der Ausdruck O(n+m) die klassische Big-O-Notation , die für Funktionen in einer Variablen definiert ist, leicht missbraucht . Es gibt jedoch eine natürliche Erweiterung für mehrere Variablen.

Einfach ausgedrückt, da

12(m+n)max{m,n}m+n2max{m,n},
Sie darauf schließen O(n+m) und O(max{m,n}) sind äquivalente asymptotische Obergrenzen.

Andererseits unterscheidet sich O(n+m) von O(min{n,m}) , da Sie, wenn Sie n=2m ,

O(2m+m)=O(2m)O(m)=O(min{2m,m}).
A.Schulz
quelle
3
Ich denke, es ist bemerkenswert, dass sie in der Zusammenfassung schreiben: "Wir zeigen, dass es unmöglich ist, Big-O-Notation für Funktionen auf mehr als eine Variable auf eine Weise zu definieren, die die Eigenschaften impliziert, die üblicherweise in der Algorithmusanalyse verwendet werden. Wir demonstrieren auch, dass gemeinsame Definitionen implizieren diese Eigenschaften nicht, auch wenn die Funktionen in der Big-O-Notation darauf beschränkt sind, streng nicht abzunehmen ".
Raphael
4
Als Follow-up zu meinem obigen Kommentar, der kürzlich erschienene Artikel Einer allgemeine Definition der O-Notation für Algorithmus Analyse von K. Rutanen (2015) hat gezeigt , wie sinnvoll O-Notation für allgemeine Sätze, einschließlich definieren . N2
Raphael
25

Ob Sie es glauben oder nicht, es scheint (meiner Erfahrung nach), dass viele Algorithmen nicht darüber nachgedacht haben, was die große O-Notation formal bedeutet, und wenn Sie danach gefragt werden, können Sie verschiedene Antworten erhalten. Einige Probleme werden in dem Artikel Über asymptotische Notation mit mehreren Variablen von Rodney R. Howell erörtert .

Interessanterweise verbringen die meisten Einführungskurse in Algorithmen viel Zeit damit, sich sehr formal mit der Big-O-Notation einer einzelnen Variablen zu befassen. In den nächsten Wochen verwenden Sie die Notation dann gerne für Graph-Algorithmen mit mehreren Variablen, ohne zu erörtern, was die ist Notation bedeutet eigentlich.

Kristoffer Arnsfelt Hansen
quelle
Der Link in meiner Antwort bezieht sich auf den Artikel von Howell, der in der Tat eine gute Behandlung dieser Frage darstellt.
A.Schulz
1
@ A.Schulz: In der Tat habe ich meine Antwort gleichzeitig an dich getippt.
Kristoffer Arnsfelt Hansen
1
Ich bin ein Befürworter des Umgangs mit Landau-Begriffen, also stimme ich zu, aber dies enthält zu viel Schimpfen für eine gute Antwort.
Raphael
4
@Raphael: Die Antwort ist nicht als Schimpfwort gedacht, könnte aber präziser formuliert werden. Die Sache ist, die Frage ist im Grunde, was ist die Bedeutung von Big O mit mehr als einem Parameter. Die Antwort ist, dass es bedeuten sollte, worüber Konsens in der Algorithmengemeinschaft besteht, was in Algorithmenkursen gelehrt wird usw. Mein Punkt ist, dass es anscheinend keinen solchen Konsens darüber gibt, was die Notation genau bedeutet.
Kristoffer Arnsfelt Hansen