Notazione O grande nidificata


8

Diciamo che ho un grafico |G| con |E|=O(V2)bordi. Voglio eseguire BFS susol che ha un tempo di esecuzione di O(V+E).

È naturale scrivere che il tempo di esecuzione su questo grafico sarebbe O(O(V2)+V) e quindi semplificare O(V2).

Ci sono insidie ​​nell'usare una scorciatoia "remove-the-nested-O" (non solo in questo caso, ma più in generale)?


4
Se lavori attraverso la definizione di big-O, vedrai che gli O nidificati sono sia naturali che ridondanti, e che la regola di far cadere l'O interna è corretta.
— Dave Clarke,

Dato che V è in O (V ^ 2) immagino che potresti sostituire O (V ^ 2) con V se non sapessi cosa stavi facendo?
— The Unfun Cat,

3
Se non sai cosa stai facendo, puoi fare cose arbitrariamente sbagliate.
— Dave Clarke,

4
Infatti. = non è = in terra big-O.
— Dave Clarke,

3
Vedi anche questa eccellente domanda su math.SE about = nella notazione Landau.
— Raffaello

Risposte:


14

Vorrei iniziare con una raccomandazione: tratta la notazione di Landau proprio come (dovresti) trattare l'arrotondamento: arrotondare raramente, arrotondare in ritardo. Se conosci qualcosa di più preciso diO(.), usalo fino a quando non hai finito con tutti i calcoli e alla fine Landauify.


Per quanto riguarda la domanda, analizziamo questo abuso della notazione¹. Come interpreteremmo qualcosa del genereh∈O(f+O(g))? Dovremmo sostituireOcon la sua definizione da dentro e fuori. Quindi otteniamo

∃g′∈O(g).h∈O(f+g′)

e poi

∃g′∈O(g).∃d>0.∀n.h(n)≤d(f(n)+g′(n))

che equivale a

∃c>0.∃d>0.∀n.h(n)≤d(f(n)+cg(n)).

Come certamente² d(f(n)+cg(n))≤cd(f(n)+g(n)), vediamo che questo equivale a h∈O(f+g); la perdita di precisione viene ignorata daO Comunque.


Che dire di altre combinazioni, diciamo h∈O(f+Ω(g))? Se proviamo lo stesso qui, otteniamo

∃g′∈Ω(g).h∈O(f+g′).

Ma questa è una tautologia: hè certamente delimitato da qualcosa di arbitrariamente grande. Quindi, combinare i limiti superiore e inferiore in questo modo non è significativo.


  1. O(.)e gli altri simboli Landau associano le funzioni alle classi di funzioni. Inserirla in una classe di funzioni non è immediatamente significativa.
  2. Almeno se consideriamo solo funzioni positive, che possiamo tranquillamente assumere quando parliamo di runtime. Non sono sicuro che funzioni in generale.

2

Volevo solo aggiungere questo perché l'ho incontrato di recente. Mentre questo collegamento va bene con l'aggiunta e la moltiplicazione (quando non si mescolanoO con Ω; vedere la risposta accettata), prestare attenzione quando si usano esponenti. Per esempio:

O(nO(m))≠O(nm).
In questo esempio, n2m appartiene alla prima classe ma non alla seconda.

1

Per definizione, O(g) è un set e se si utilizza questa notazione nidificata, si avrebbe un set in un set, il che sarebbe sbagliato.

La definizione della notazione O.

O(g)={f|∃c>0∃X0>0∀X>X0:|f(X)|≤c*|g(X)|}

L'errore

Hai usato termini come O(O(n)+K) dove k e n sono funzioni e O(n)è un set. Ma qual è il risultato di una funzione aggiunta a un set? Non è definito!

Versione corretta

Invece di utilizzare i simboli Landau nidificati, puoi fare quanto segue: O(m+K),m∈O(n)


2
Sì, ma la notazione Landau viene spesso abusata per motivi di (presunta) facilità d'uso, quindi è meglio assicurarsi che tutti comprendano la stessa cosa. Vedi qui per un approccio strutturato.
— Raffaello

0

Nella sezione 9.3 "OManipolazione "del libro Concrete Mathematics (Seconda Edizione), Knuth ha elencato alcune regole di manipolazione sulO-notazione (Di seguito, suppongo che entrambi f(n) e g(n)sono positivi; notare che l'ordinamento delle regole è stato modificato).

(1).nm=O(nm'),m≤m'(3).f(n)=O(f(n))(5).O(O(f(n)))=O(f(n))(4).c⋅O(f(n))=O(f(n))(2).O(f(n))+O(g(n))=O(f(n)+g(n))(6).O(f(n))O(g(n))=O(f(n)g(n))=f(n)O(g(n))

Con (3), puoi avvolgere / scartare una funzione f(n)con una notazione O. Quindi con (5), puoi effettivamente avvolgere / scartare (o chiamato, annidare ) volte arbitrariamente finite. Usando (4), puoi anche aggiungere / rimuovere i fattori di moltiplicazione costanti da / aO.

Quindi, (2) e (6) consentono di manipolare nidificati O-notazioni nel modo compatibile con + e ×.

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.