Те, що ви робите, - це дуже зручне зловживання нотацією.
Деякі педанти скажуть, що те, що ви пишете, - це нісенітниця, оскільки позначає набір, і ви не можете робити арифметичні операції над ними так, як ви робите.O(f)
Але це гарна ідея проігнорувати ці педанти і припустити, що означає якийсь член набору. Отже, коли ми говоримо f ( n ) = g ( n ) + O ( n ) , що ми маємо на увазі, якщо це f (O(f)f(n)=g(n)+O(n) . (Примітка: деякі педанти також можуть здригнутися від цього твердження, стверджуючи, що f ( n ) - це число, а ff(n)−g(n)∈O(n)f(n)f це функція!)
Це робить дуже зручним писати подібні вирази
n≤∑k=1nk1/k≤n+O(n1/3)
Це означає, що є деякі таким чином, щоf∈O(n1/3)
n≤∑k=1nk1/k≤n+f(n)
У вашому випадку
∑k=1n1k=∑k=1nO(1)=O(n)
ви ще більше зловживаєте цим, і вам потрібно бути обережними.
Тут є дві можливі інтерпретації: чи відноситься до функції n , або до функції k ?O(1)nk
Я вважаю, що правильне тлумачення - інтерпретувати його як функцію .k
Якщо ви намагаєтеся думати про нього , як функції , думав не неправильно, це може призвести до потенційних помилках, як мислення до є O ( 1 ) і намагається записати Е н К = 1 К = ЕnkO(1)∑nk=1k=∑nk=1O(1)
Якщо ви спробуєте думати про це як про функцію , то це правда, якщо f = Ok (якості аргументу переходить до ∞ ) і г ніколи не 0 , тоf=O(g)∞g0
S(n)=∑k=1nf(k)=∑k=1nO(g(k))=O(∑k=1n|g(k)|)
Зауважимо, що в середині ми використовували зручне зловживання позначенням щоб означати, що для деякої функції h ∈ O ( g ) сума дорівнює ∑ n k = 1 h (O(g(k))h∈O(g) . Зауважимо, що підсумкова функція всередині O відноситься до функції n . Доведення це не так складно, але ви повинні потурбуватися про те, що ви маєте справу з асимптотичною верхньою межею (тобто для досить великих аргументів), але сума починається прямо з 1 .∑nk=1h(k)On1
Якщо спробувати думати про це як про функцію n , то також вірно, що якщо (як аргумент іде до ∞ ), тоf=O(g)∞
S(n)=∑k=1nf(k)=∑k=1nO(g(n))=O(ng(n))
Отже, ваші докази по суті вірні в будь-якій інтерпретації.