Qual è il nome della classe di funzioni descritta da O (n log n)?


40

In "Big O", le notazioni comuni hanno nomi comuni (invece di dire "Oh di qualche fattore costante"):

O (1) è "Costante"

O (registro n) è "Logaritmico"

O (n) è "Lineare"

O (n ^ 2) è "Quadratico"

O (n * log n) è ???

È solo "n log n" o ha un nome speciale come quello sopra?


Risposte:


52

Si chiama tempo linearitmico ed è un caso speciale di una classe più generale nota come quasi lineare . Come può suggerire il nome, gli algoritmi che rientrano in questa classe funzionano quasi in tempo lineare; infatti hanno una complessità inferiore rispetto agli algoritmi che girano in con .O(nK)K>1


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Gilles 'SO- smetti di essere malvagio' il


11

Ho sempre sentito O (n log n) descritto come "log-linear" che mi sembra giusto.


4
Detto questo, un riferimento o due sarebbero carini.
Raffaello

7

Era troppo lungo per un commento, quindi ho scritto una risposta. Non l'ho aggiunto alla mia prima risposta perché molte persone hanno già votato per il mio primo furgone e non sono sicuro che siano d'accordo anche con questa risposta.

  • Non penso che linearithmic sia un termine ben definito, come affermato in un commento alla risposta accettata. Ho cercato su google alcuni articoli piuttosto giovani usando questo termine, un corso CS e un altro libro di Sedgewick che usa questo termine e molti dizionari online.
  • Il termine quasilineare l' ho trovato in due articoli:

    La soddisfazione è quasi quasilineare nel NQL
    CP Schnorr
    Journal of the Association for Computing Machinery,
    Vol 25. N. 1, gennaio 1978, pp. 136-1,15

e in un articolo citato nella Wikipedia che tratta questo articolo di Schorr. Schnorr introduce le classi di complessità quasilineare (QL) e non deterministica quasilineare (NQL).
Quasilinear sembra essere usato anche nella teoria delle equazioni differenziali parziali.

Tutto sommato sembra che uno o più Wikipediani volessero fornire nomi per questa funzione che non ha un nome ampiamente accettato. Ma anche ora mi sembra che nessuno dei nomi sia ampiamente accettato (a parte questo penso che sia una specie di manipolazione che Wikipedia non dovrebbe fare). Penso che bisogna essere cauti se si utilizza Wikipedia per domande terminologiche. E per questa funzione non è una fonte sufficiente. Penso che l'unico nome ampiamente accettato per questa funzione sia n log n .


1
Mentre la legittimità di linearithmic e loglinear potrebbe essere discutibile, credo che quasi-linear sia un termine consolidato. Sembra essere ampiamente usato nei documenti di ricerca.
Roukah,

@Roukah sì, ma non significa esattamente la stessa cosa; quasilineare è più generale. - Non vedo cosa c'è che non va in Wikipedia usando un nome non ambiguo, che sembra non avere un'alternativa migliore, ed è usato in una fonte ragionevolmente rinomata, anche se non si è molto diffuso. In effetti direi che il fatto che non si sia diffuso nonostante sia una classe di complessità estremamente comune suggerisce che è ora che le persone inizino a usarlo di più!
leftaroundabout

+1 "solo il nome ampiamente accettato per questa funzione è n log n" - Tutte le altre risposte sono divertenti ed edificanti, ma penso che tu possa avere ragione. Mi sono esercitato a dire "linearitmico" per un paio di giorni e ancora non rotola fuori dalla lingua. "En log en" è facile da dire, facile da ricordare e immediatamente compreso da chiunque abbia familiarità con Big O. Ci penserò un po ', ma potrei dover spostare la mia accettazione a questa risposta.
GlenPeterson,
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.