Le funzioni sono sempre asintoticamente comparabili?


15

Quando confrontiamo la complessità di due algoritmi, di solito accade che f(n)=O(g(n)) o g(n)=O(f(n)) (possibilmente entrambi), dove f e g sono i tempi di esecuzione (ad esempio) dei due algoritmi.

È sempre così? Cioè, almeno una delle relazioni f(n)=O(g(n)) e g(n)=O(f(n)) sempre valore, vale a dire per le funzioni generali f , g ? In caso contrario, quali ipotesi dobbiamo fare e (perché) va bene quando parliamo di tempi di esecuzione dell'algoritmo?

Risposte:


21

Non tutte le coppie di funzioni sono paragonabili alla notazione ; considerare le funzioni f ( n ) = n e g ( n ) = { 1 se  n  è dispari , n 2 se  n  è pari . Inoltre, funzioni come g ( n ) si presentano effettivamente come tempi di esecuzione degli algoritmi. Considera l'evidente algoritmo di forza bruta per determinare se un dato numero intero n è primo:O()f(n)=n

g(n)={1if n is odd, n2if n is even.
g(n)n
IsPrime(n):
  for i ← 2 to (n-1)
     if i·⌊n/i⌋ = n
        return False
  return True

Questo algoritmo richiede operazioni aritmetiche quando n è pari, O ( Θ(1)noperazioni quandonè composto, maΘ(n)operazioni quandonè primo. Pertanto, formalmente, questo algoritmo èincomparabilecon un algoritmo che utilizzaO(n)nΘ(n)n operazioni aritmetiche perognin.n n

Il più delle volte quando analizziamo gli algoritmi, vogliamo solo un limite superiore asintotico della forma per una funzione relativamente semplice f . Ad esempio, la maggior parte dei libri di testo riporta semplicemente (e correttamente) l' esecuzione in operazioni aritmetiche O ( n ) . Le funzioni tipiche del limite superiore sono prodotti di esponenziali, polinomi e logaritmi (anche se occasionalmente si presentano anche bestie più esotiche come fattoriali e logaritmi iterati ). Non è difficile dimostrare che due di queste funzioni siano comparabili.O(f(n))fIsPrime(n)O(n)

Vedi anche questa domanda MathOverflow .


7

Da Wikipedia, definizione della notazione O grande:

se e solo se esiste una costante positiva M tale che per tutti i valori sufficientemente grandi di , f ( x ) è al massimo M moltiplicato per g ( x ) in valore assoluto. Cioè, f ( x ) O ( g ( x ) ) se e solo se esiste un numero reale positivo M e un numero reale x 0 tale chexf(x)g(x)f(x)O(g(x))Mx0

|f(x)|<=M|g(x)|for allx>x0

Cosa succede per le funzioni che non convergono (in una costante né in infinito)?

Guarda le funzioni e g ( x ) = 10f(x)=|xsin(x)|g(x)=10

per ogni , c'è qualche x > x 0 , tale che x = k π , quindi f ( x ) = 0 - quindi per ogni M - M f ( x ) > g ( x ) produrrà falso, e g ( x )x0x>x0x=kπf(x)=0MMf(x)>g(x)g(x)O(f(x))

Tuttavia, è facile vedere che non è delimitato anche da alcuna costante, quindi per ogni M , x 0 , c'è un po ' x > x 0 tale che f ( x ) < M g ( x ) produrrà anche falso, e f ( x ) O ( g ( x ) )|xsin(x)|Mx0x>x0f(x)<Mg(x)f(x)O(g(x))

Mf(x)g(x)g(x)=log(x)


6

Ecco una coppia di funzioni monotoniche che non sono asintoticamente comparabili. Ciò è rilevante perché la maggior parte delle complessità che sorgono nella pratica sono in effetti monotone.

f(x)=Γ(x+1)=x!
g(x)=Γ(x1/2+3/2)

Here, Γ is the gamma function. The second function is specially constructed to be very similar to the factorial, just "sampled" at slightly offset points in the gamma function. The functions cross each other periodically in such a way that neither is asymptotically bound by the other.


4

Let L be the class of functions obtained from the identity function and constants using the following operations: addition, subtraction, multiplication, division, logarithm and exponential. For example, exp(2logx+loglogx)/x2. Hardy proved that for every two functions f,gL which are positive and tend to infinity, one of the following is true: f=o(g), f=ω(g), f/g tends to a constant. See page 18 of his book "Orders of infinity".

The upshot is that any two "simple" functions occurring in the analysis of algorithm are comparable. Here "simple" means that there is no definition by cases (other than finitely many base cases), and no surprising functions appear, such as the inverse Ackermann function which sometimes figures in running times.


Nice! It is noteworthy, though, that periodic elements occur frequently in average case analysis (of d&c algorithm). The one I know are bound on both sides by constants, so they don't hurt asymptotic comparability.
Raphael
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.