Wird O (mn) als "lineares" oder "quadratisches" Wachstum betrachtet?


24

Wenn ich eine Funktion habe, deren Zeitkomplexität O ( mn ) ist, wobei m und n die Größen der beiden Eingänge sind, würden wir ihre Zeitkomplexität "linear" (da sie sowohl in m als auch in n linear ist ) oder "quadratisch" ( da es ein Produkt von zwei Größen ist)? Oder etwas anderes?

Ich finde es "linear" zu nennen verwirrend, weil O (m + n) ebenfalls linear ist, aber viel schneller, aber ich finde es seltsam, es "quadratisch" zu nennen, weil es in jeder Variablen separat linear ist.


7
Es ist wichtig, in was linear zu sagen . Wenn wir zum Beispiel einen Graphen mit Kanten und Ecken haben, ist linear in der Anzahl der Kanten, aber (potentiell) quadratisch in der Anzahl der Ecken. n O ( m + n )mnO(m+n)
Raphael

3
Ich denke, Raffaels Kommentar ist genau richtig. "Linear" muss relativ zu etwas verwendet werden, häufig der Größe der Eingabe. Wenn Sie eine -Matrix transponieren, ist "linear", da der Eingang die Größe . Wenn Sie nach Vorkommen einer Zeichenfolge in einer Zeichenfolge suchen , ist nicht linear - O (m + n) wäre. O ( m n ) O ( m n ) n m O ( m n ) O ( m + n )m×nO(mn)O(mn)nmO(mn)O(m+n)
SamM

3
Ich würde auch @ Raphaels Kommentar zustimmen, aber es ist nicht ungewöhnlich zu hören, dass eine bestimmte Zeitkomplexität "linear" ist, ohne zu erwähnen, in Bezug auf was. In einigen Fällen spielt es keine Rolle, z. B. ist O (m + n) relativ zu allen Eingaben linear , sodass ich nicht zweimal darüber nachdenken würde, es linear zu nennen, wie es auch SamM oben getan hat. Aber das wirft die Frage auf: Was, wenn überhaupt, macht O (mn) nicht linear?
Mehrdad

3
@Mehrdad: Ich denke, die Grundlinie ist "in der Eingabegröße, vorausgesetzt, die Eingabe ist als binäre Zeichenfolge (auf einem Turing-Maschinenband) codiert". Diese Eingangsgröße ist dann eine Funktion von n und m selbst. SamM gibt gute Beispiele.
Raphael

1
Siehe auch people.cis.ksu.edu/~rhowell/asymptotic.pdf zur Landau-Notation in mehreren Variablen.
Jonas Kölker

Antworten:


18

In der Mathematik werden solche Funktionen als mehrlineare Funktionen bezeichnet. Aber Informatiker werden diese Terminologie wahrscheinlich nicht allgemein kennen. Diese Funktion sollte auf jeden Fall nicht linear genannt werden, entweder in der Mathematik oder Informatik, es sei denn , man vernünftigerweise eine von betrachten können und eine Konstante.nmn


Was macht es sinnvoll, und als Konstante zu betrachten? nmn
User2768

11

Um die Diskussion in den Kommentaren zu erläutern, ist es wichtig, womit Sie das Wachstum messen.

Wie von @Kaveh erwähnt, ist nicht in beiden gleichzeitig linear, sondern ist linear, wenn eine Konstante ist und die andere wächst.O(mn)

Andererseits würde wahrscheinlich als linear angesehen. Intuitiv, wenn verdoppelt, oder wenn verdoppelt oder sogar , wenn sowohl und doppelt, kann nicht mehr als verdoppeln. Dies gilt nicht für ; Wenn und beide Doppel- um 4 steigen, wird diese Laufzeit in vielen Zusammenhängen als quadratisch angesehen. Ich gebe ein Beispiel mit String Matching in ein paar Absätzen.m n m n m + n m n m n m nO(m+n)mnmnm+nmnmnmn

Wenn Sie jedoch die Big- Notation verwenden, verwenden Sie sie in der Regel in Bezug auf eine bestimmte Sache. Da wir meistens Theoretiker sind, ist es im Allgemeinen die Größe des Inputs für das Problem.O

Nehmen wir zum Beispiel Matrix Addition. Das Addieren von zwei Matrizen benötigt Zeit. Da jedoch jedes Element unserer Eingabe nur einmal berührt wird, wird dies normalerweise als linear bezeichnet. Mit anderen Worten, unsere Eingabe hat die Größe , sodass eine Laufzeit von in der Größe der Eingabe linear ist.O ( m nm×nO ( m n ) O ( m n )O(mn)O(mn)O(mn)

Betrachten wir nun die Zeichenfolgenübereinstimmung: Wir erhalten eine Zeichenfolge der Größe und eine Zeichenfolge der Größe und möchten feststellen, ob die kleinere Zeichenfolge in der größeren Zeichenfolge vorkommt. Wir können dies naiv in Zeit überprüfen ; Dies würde im Allgemeinen als quadratisch angesehen. Warum? Wenn und irgendetwas sein können, setze . Dann ist unsere Laufzeit und unsere Eingabe hat die Größe .n O ( m n ) m n m =mnO(mn)mnO ( m 2 ) 2 mm=nO(m2)2m

Wenn wir dagegen den Rabin-Karp-Algorithmus verwenden , erhalten wir (im Durchschnitt) Zeit. Unsere Eingabe bestand aus beiden Zeichenfolgen, daher hatte unsere Eingabe auch die Größe . Daher würde dies allgemein als linear bezeichnet.O ( m + n )O(m+n)O(m+n)

Zusammenfassend lässt sich sagen: wird im Allgemeinen für Dinge wie Matrixmultiplikation als linear bezeichnet, da es in der Größe der Eingabe linear ist, aber im Allgemeinen für Dinge wie String-Matching als quadratisch, da die Eingabe kleiner ist. Welcher Begriff angemessen ist, hängt vom Kontext ab, in dem Sie ihn verwenden.O(mn)


8

Wenn Sie die Laufzeit in messen dann ist nicht eine lineare Funktion in . Wenn es keine Beziehung zwischen und gibt, kann diese Funktion im Allgemeinen quadratisch wachsen .O ( m n ) ( m , n ) m n(m,n)O(mn)(m,n)mn

Es ist jedoch eine lineare Funktion in jedem von ihnen, dh wenn Sie eine von ihnen fixieren und das Wachstum in der anderen Variablen betrachten, dann ist es eine lineare Funktion in der anderen.


3

Um die Komplexität der Probleme mit mehreren Eingaben zu messen , besteht eine Möglichkeit darin, die dominante Variable zu finden und dann andere Eingaben basierend auf dieser Variablen zu binden. Mit diesem Ansatz könnten Sie die Komplexitätsfunktion auf Basis einer einzelnen Variablen haben .


2
Möglicherweise gibt es keine dominante Variable, wenn Sie beispielsweise die Anzahl der Knoten und Kanten haben.
Raphael

0

Gegeben sei eine Sprache und eine Funktion wie Für jedes Sie die Laufzeit eines Algorithmus abschätzen, der als erkennt .f min { | w 1 | , | w 2 | } f ( | w | ) 2 | ) L O( | w | - f ( | w | ) )L={w1#w2|wi(Σ{#}),}fmin{|w1|,|w2|}f(|w|)O ( | w 1 || w ( f ( | w | )w=w1#w2LO(|w1||w2|)LO(f(|w|)(|w|f(|w|))=O(f(|w|)|w|f(|w|)2)=O(f(|w|)|w|)

Dies bedeutet, dass Sie eine lineare Zeit erhalten, wenn der kleinere Teil Ihrer Eingabe konstant ist (relativ zur gesamten Eingabe), etwas dazwischen (wie ), wenn sie sublinear ist und eine quadratische Laufzeit, wenn sie linear ist.O(nlogn)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.