লন্ডাউ শর্তের অঙ্কের সাথে কী ভুল হয়?


14

আমি লিখেছিলাম

i=1n1i=i=1nO(1)=O(n)

তবে আমার বন্ধু বলে যে এটি ভুল। TCS ঠকাই শীট থেকে আমি জানি যে সমষ্টি এছাড়াও বলা হয় যা লগারিদমিক বৃদ্ধি হয়েছে । সুতরাং আমার আবদ্ধ খুব তীক্ষ্ণ নয়, তবে এটির বিশ্লেষণের জন্য আমার পক্ষে প্রয়োজনীয় for এনHnn

আমি কি ভুল করছি?

সম্পাদনা : আমার বন্ধুটি বলেছে যে একই যুক্তি সহ, আমরা এটি প্রমাণ করতে পারি

i=1ni=i=1nO(1)=O(n)

এখন এটা স্পষ্টতই ভুল! এখানে কি হচ্ছে?


2
এই প্রশ্নের ট্যাগ সম্পর্কে এখানে একটি আলোচনা দেখুন ।
রাফেল


উত্তর:


10

আপনি যা করছেন তা স্বরলিপিটির খুব সুবিধাজনক আপত্তি।

কিছু শিশুরা বলবে যে আপনি যা লেখেন তা নির্বোধ, কারণ O(f) একটি সেট বোঝায় এবং আপনি যেভাবে করছেন সেগুলিতে আপনি গাণিতিক ক্রিয়াকলাপ করতে পারবেন না।

তবে এই শিশুদের উপেক্ষা করা এবং ধরে নেওয়া যে সেটটির কোনও সদস্যের O(f)পক্ষে দাঁড়িয়ে থাকা ভাল ধারণা । সুতরাং যখন আমরা f ( n ) = g ( n ) + O ( n ) বলি, তখন আমরা কী বলতে চাই তা যদি f ( n ) - g ( n ) O ( n ) হয় । (দ্রষ্টব্য: কিছু অভিভাবকরাও এই বিবৃতিতে কাঁপতে পারে, দাবি করে যে ( এন ) একটি সংখ্যা এবং এফf(n)=g(n)+O(n)f(n)g(n)O(n)f(n)f কাজটি!)

এটি মত প্রকাশ করতে খুব সুবিধাজনক করে তোলে

nk=1nk1/kn+O(n1/3)

এর মানে কি যে কিছু হয় যেমন যেfO(n1/3)

nk=1nk1/kn+f(n)

আপনার ক্ষেত্রে

k=1n1k=k=1nO(1)=O(n)

আপনি এটিকে আরও গালি দিচ্ছেন এবং আপনার সাবধান হওয়া দরকার।

এখানে দুটি সম্ভাব্য ব্যাখ্যা রয়েছে: n এর কোনও ফাংশন, বা কে এর ফাংশনকে বোঝায় ?O(1)nk

আমি বিশ্বাস করি সঠিক ব্যাখ্যা এর কার্যকারিতা হিসেবে এটা ব্যাখ্যা করা যায় k

আপনি একটি ফাংশন যেমন চিন্তা চেষ্টা করুন , ভুল না চিন্তা, এটি সম্ভাব্য fallacies হতে পারে চিন্তা মত হয় হে ( 1 ) এবং লিখতে চেষ্টা করার Σ এন = 1= Σ এন = 1 হে ( 1 )nkO(1)k=1nk=k=1nO(1)

আপনি একটি ফাংশন যেমন চিন্তা চেষ্টা করুন , তাহলে এটি সত্য যে, যদি = হে ( ) (যেমন যুক্তি যায় ) এবং জি না হয় 0 , যেkf=O(g)g0

S(n)=k=1nf(k)=k=1nO(g(k))=O(k=1n|g(k)|)

মনে রাখবেন যে মাঝখানে, আমরা চিহ্নিতকরণ এর সুবিধাজনক অপব্যবহারের অর্থ এই বোঝাতে চাইছি যে কোনও ফাংশন h O ( g ) এর জন্য যোগফলটি n কে = 1 ঘন্টা ( কে ) । নোট করুন যে হে এর ভিতরে চূড়ান্ত ফাংশন n এর একটি ফাংশন বোঝায় । প্রমাণটি তেমন কঠিন নয়, তবে আপনাকে এই সত্যটি পূরণ করতে হবে যে আপনি একটি অ্যাসিম্পটোটিক উপরের বাউন্ডের সাথে (যেমন পর্যাপ্ত বৃহত যুক্তির জন্য) ডিল করছেন, তবে যোগফলটি 1 থেকে শুরু হয় ।O(g(k))hO(g)k=1nh(k)On1

যদি আপনি এটিকে ক্রিয়া হিসাবে ভাবার চেষ্টা করেন তবে এটিও সত্য যে যদি f = O ( g ) (যুক্তি হিসাবে ∞ এ যায় ) তবেnf=O(g)

S(n)=k=1nf(k)=k=1nO(g(n))=O(ng(n))

সুতরাং আপনার প্রমাণটি মূলত সঠিক, উভয় ব্যাখ্যাতেই।


1
Bottom-line: Be aware (make sure) that every occurrence of a Landau symbol introduces (has) its own constant.
Raphael

8

What you wrote is perfectly correct. The nth harmonic number is indeed in the set O(n).

Proof: i=1n1ilnn+12n=O(n).

The upper bound O(n) isn't tight, but it's correct.


4
Okay: 1/i ≤ 1 = O(1).
JeffE

1
The concern is directed at the second equality sign. How do I verify that?
Raphael

2
But that is also correct. A sum of n terms, each of which is O(1), is indeed O(n).
Suresh

2
@Suresh Only if the constants implied by the Os are independent of the summation variable, and that is the point here (seed question).
Raphael

2
The bug is not in the second equality. the bug (in the second expression) is in how you GET to that summation. Going from iO(1)=O(n) is correct. It's claiming that i=O(1) is wrong. I realize this is obvious to all concerned, but I think this is the problem with 'seeding' questions :)
Suresh

6

For the second example, you can't claim that

i=O(1)

since i varies with n. After few steps it will be the case that i>n/2. A more appropriate way is to say that i=O(n) since indeed, throughout the summation i never exceeds 1n. By this reasoning,

i=1ni=i=1nO(n)=nO(n)=O(n2)

However the right thing to do is actually use the big-O notation only at the end. Upper bound your summation as tight as you can, and only when your done use the asymptotic notations to avoid these pitfalls.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.