Quale termine posso usare per descrivere qualcosa con complessità O (N log N)?
Per esempio:
O (1): costante
O (log N): logaritmico
O (N): lineare
O (N log N): ??????
O (N 2 ): quadratico
O (N 3 ): cubico
Quale termine posso usare per descrivere qualcosa con complessità O (N log N)?
Per esempio:
O (1): costante
O (log N): logaritmico
O (N): lineare
O (N log N): ??????
O (N 2 ): quadratico
O (N 3 ): cubico
Risposte:
"N log N" è buono come si ottiene e dovrebbe essere ben compreso dai programmatori professionisti. Non puoi aspettarti che ci sia una sola parola per descrivere ogni classe di complessità esistente.
Esiste un termine gergo lineare che significa esattamente questo.
Non credo che sia universalmente compreso da tutti i programmatori, quindi se non stai attento, oscurerà più di quanto informi. Personalmente normalmente non lo uso, e se lo facessi probabilmente lo definirei al primo utilizzo, ad esempio "questo articolo considera gli O(N log N)
algoritmi linearitmici ( )".
A volte viene chiamato "loglinear", anche se quella parola in realtà significa qualcosa di diverso. Vorrei solo attenermi a "N log N", tuttavia, come suggerisce la risposta di @ Philip .
O(n · f(n))
dovef(n) << n
. Ma questo corrisponde anche a cose comeO(n · log log n)
eO(n α(n))
dov'èα(n)
l'inverso della funzione Ackermann.