napisałem
ale mój przyjaciel mówi, że to źle. Z ściągawki TCS wiem, że suma nazywa się również która ma logarytmiczny wzrost w . Więc moja granica nie jest zbyt ostra, ale wystarcza do analizy, której potrzebowałem.
Co zrobiłem źle?
Edycja : Mój przyjaciel mówi, że z tego samego rozumowania możemy to udowodnić
Teraz jest to oczywiście źle! Co tu się dzieje?
asymptotics
landau-notation
Raphael
źródło
źródło
Odpowiedzi:
To, co robisz, to bardzo wygodne nadużycie notacji.
Niektórzy pedanci powiedzą, że to, co piszesz, to bzdury, ponieważ oznacza zbiór i nie możesz wykonywać na nich operacji arytmetycznych tak, jak robisz.O(f)
Ale dobrym pomysłem jest zignorowanie tych pedantów i założenie, że oznacza jakiegoś członka zestawu. Kiedy więc mówimy f ( n ) = g ( n ) + O ( n ) , co tak naprawdę mamy na myśli, jeśli to f ( n ) - g ( n ) ∈ O ( n )O(f) f(n)=g(n)+O(n) f(n)−g(n)∈O(n) . (Uwaga: niektórzy pedantycy również mogą drżeć z powodu tego stwierdzenia, twierdząc, że jest liczbą iff(n) f jest funkcją!)
To sprawia, że bardzo wygodne jest pisanie takich wyrażeń jak
Oznacza to, że istnieje pewna w taki sposób,f∈O(n1/3)
W twoim przypadku
nadużywasz go jeszcze bardziej i musisz być ostrożny.
Istnieją dwie możliwe interpretacje: Czy odnosi się do funkcji n , czy funkcji k ?O(1) n k
Uważam, że właściwą interpretacją jest interpretacja jej jako funkcji .k
Jeśli spróbujesz myśleć o tym jako o funkcji , uważanej za niepoprawną, może to prowadzić do potencjalnych błędów, takich jak myślenie, że k to O ( 1 ) i próba napisania ∑ n k = 1 k = ∑ n k = 1 O ( 1 )n k O(1) ∑nk=1k=∑nk=1O(1)
Jeśli spróbujesz myśleć o tym jako o funkcji , to prawdą jest, że jeśli f = O ( g ) (ponieważ argument przechodzi do ∞ ) ig nigdy nie wynosi 0 , tok f=O(g) ∞ g 0
Zauważ, że w środku zastosowaliśmy wygodne nadużycie notacji co oznacza, że dla niektórych funkcji h ∈ O ( g ) suma wynosi ∑ n k = 1 h ( k ) . Zauważ, że końcowa funkcja wewnątrz O odnosi się do funkcji nO(g(k)) h∈O(g) ∑nk=1h(k) O n . Dowód nie jest taki trudny, ale musisz się zadowolić faktem, że masz do czynienia z asymptotyczną górną granicą (tj. Dla wystarczająco dużych argumentów), ale suma zaczyna się od .1
Jeśli spróbujesz myśleć o tym jako o funkcji , to jest również prawdą, że jeśli f = O ( g ) (jak argument przechodzi don f=O(g) ), to∞
Zatem twój dowód jest zasadniczo poprawny, w obu interpretacjach.
źródło
To, co napisałeś, jest całkowicie poprawne. p harmonicznej jest rzeczywiście w zbiorze O ( Nn .O(n)
Dowód: .∑ni=11i≤lnn+1≤2n=O(n) □
Górna granica nie jest ciasna , ale jest poprawna.O(n)
źródło
W drugim przykładzie nie można twierdzić, że
ponieważ różni się n . Po kilku krokach będzie tak, że i > n / 2 . Bardziej właściwy sposób można powiedzieć, że I = O ( n ) , ponieważ w rzeczywistości, przez sumowanie i nigdy nie przekracza 1 ⋅ n . Zgodnie z tym rozumowaniem n ∑ i = 1 i = n ∑ i = 1 O ( n ) = n O ( n ) = O (ja n i > n / 2 i = O ( n ) ja 1 ⋅ n
Jednak właściwą rzeczą jest użycie notacji Big-O tylko na końcu. Górna granica podsumowania jest tak ciasna, jak to tylko możliwe, i tylko wtedy, gdy skończysz, użyj asymptotycznych notacji, aby uniknąć tych pułapek.
źródło