Ja natürlich. Das ist in Ordnung und vollkommen akzeptabel. Es ist üblich und Standard, Algorithmen zu sehen, deren Laufzeit von zwei Parametern abhängt.
Beispielsweise wird häufig die Laufzeit der Tiefensuche als ausgedrückt , wobei die Anzahl der Scheitelpunkte und die Anzahl der Kanten im Diagramm ist. Dies ist vollkommen gültig. Die Bedeutung davon ist, dass es eine Konstante und Zahlen so dass die Laufzeit des Algorithmus höchstens für alle . Mit anderen Worten, wenn die genaue Laufzeit , sagen wir, dass wenn existiert so dass und impliziertO(n+m)nmcn0,m0c⋅(n+m)n>n0,m>m0f(n,m)f(n,m)=O(n+m)c,n0,m0n>n0 f ( n , m ) ≤ c ⋅ ( n + m )m>m0f(n,m)≤c⋅(n+m) .
Ja, es ist vollkommen angemessen und akzeptabel zu sagen, dass die erste Stufe Zeit und die zweite Stufe Zeit benötigt.O ( m )O(n)O(m)
Wichtig: Stellen Sie sicher, dass Sie definieren, was und sind. Sie können nicht sagen, dass dies ein -Zeitalgorithmus ist, ohne anzugeben, was ist. Wenn in der Problemstellung nicht angegeben ist, müssen Sie es angeben. Siehe zum Beispiel Diagrammalgorithmen, in denen wir normalerweise Anzahl der Eckpunkte und Anzahl der Kanten definieren.m O ( n ) n n n = m =nmO(n)nnn=m=
Was die Frage betrifft, ob Sie sie -Zeit nennen können , nein, natürlich nicht - es sei denn, Sie wissen irgendwie, dass . Wenn Sie wissen, dass , folgt natürlich , sodass ein -Zeitalgorithmus auch ein -Zeitalgorithmus ist. Wenn es jedoch keine Garantie dafür gibt, dass , können Sie es nicht als -Zeitalgorithmus bezeichnen.m = O ( n )O(n)m=O(n)m + n = O ( n ) O ( m + n ) O ( n ) m = O ( n ) O ( n )m=O(n)m+n=O(n)O(m+n)O(n)m=O(n)O(n)
Das ist grundlegendes Zeug. Sie finden es überall in Lehrbüchern für Algorithmen.