Qual è il significato di ?


44

Questa è una domanda di base, ma sto pensando che è uguale a , poiché il termine più ampio dovrebbe dominare mentre andiamo all'infinito? Inoltre, sarebbe diverso da O (\ min (m, n)) . È giusto? Continuo a vedere questa notazione, soprattutto quando parlo di algoritmi grafici. Ad esempio, vedi abitualmente: O (| V | + | E |) (es. Vedi qui ).O(m+n)O(max(m,n))O(min(m,n))O(|V|+|E|)


forse m dipende da n
Andrew,

Risposte:


33

Hai ragione. Si noti che il termine O(n+m) abusa leggermente della notazione big-O classica , definita per funzioni in una variabile. Tuttavia, esiste un'estensione naturale per più variabili.

In parole semplici, poiché

12(m+n)max{m,n}m+n2max{m,n},
puoi dedurlo O(n+m) e O(max{m,n}) sono limiti superiori asintotici equivalenti.

D'altra parte O(n+m) è diverso da O(min{n,m}) , poiché se si imposta n=2m , si ottiene

O(2m+m)=O(2m)O(m)=O(min{2m,m}).

3
Penso che sia degno di nota il fatto che scrivano in astratto, "Mostriamo che è impossibile definire la notazione big-O per funzioni su più di una variabile in un modo che implichi le proprietà comunemente usate nell'analisi dell'algoritmo. Dimostriamo anche che definizioni comuni non implicano queste proprietà anche se le funzioni all'interno della notazione big-O sono limitate al rigorosamente non-riduzione ".
Raffaello

4
Come un follow-up al mio commento sopra, il recente articolo Una definizione generale della notazione O per l'analisi dell'algoritmo di K. Rutanen (2015) fa mostrano come definire significativa notazione O per i set generali, tra cui . N2
Raffaello

25

Che ci crediate o no, sembra (nella mia esperienza) che molti algoritmi la gente in realtà non abbia pensato a cosa significhi formalmente la grande notazione O, e quando gli viene chiesto, è possibile ottenere diverse risposte. Alcuni problemi sono discussi nel documento Sulla notazione asintotica con variabili multiple di Rodney R. Howell.

Curiosamente, sembra anche che la maggior parte dei corsi di algoritmi introduttivi trascorra molto tempo a essere molto formali sulla notazione O grande con una singola variabile, e quindi le settimane successive usano felicemente la notazione per algoritmi grafici con diverse variabili in modo casuale, senza discutere di cosa notazione in realtà significa.


Il link nella mia risposta si riferisce all'articolo di Howell, che è davvero un bel trattamento su questa domanda.
A. Schulz,

1
@ A.Schulz: In effetti, stavo scrivendo la mia risposta contemporaneamente a te.
Kristoffer Arnsfelt Hansen,

1
Sono un sostenitore di stare attento con i termini di Landau, quindi sono d'accordo, ma questo contiene troppi dubbi per una buona risposta.
Raffaello

4
@Raphael: La risposta non è da intendersi, ma forse avrebbe potuto essere formulata in modo più preciso. Il fatto è che la domanda è fondamentalmente, qual è il significato di O grande con più di un parametro. La risposta è che dovrebbe significare qualunque cosa ci sia consenso nella comunità degli algoritmi, cosa viene insegnato nei corsi sugli algoritmi, ecc. Il mio punto è che apparentemente non esiste un tale consenso su cosa significhi esattamente la notazione.
Kristoffer Arnsfelt Hansen,
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.