আমি এই প্রশ্নটি জিজ্ঞাসা করছি কারণ বড় ও স্বরলিপি সম্পর্কিত একটি দিক সম্পর্কে আমি বিভ্রান্ত।
আমি ফ্র্যাঙ্ক ক্যারানোর জাভা সহ ডেটা স্ট্রাকচারস এবং অ্যাবস্ট্রাকশন বইটি ব্যবহার করছি । "অ্যালগরিদমের দক্ষতা" শীর্ষক অধ্যায়ে তিনি নিম্নলিখিত অ্যালগরিদমটি দেখান:
int sum = 0, i = 1, j = 1
for (i = 1 to n) {
for (j = 1 to i)
sum = sum + 1
}
তিনি প্রথমে এই অ্যালগরিদমকে (এন 2 + এন) / 2 এর বৃদ্ধির হার হিসাবে বর্ণনা করেছেন । যা দেখলে তা স্বজ্ঞাত মনে হয়।
যাইহোক, এটা তারপর বর্ণিত আছে যে (ঢ 2 + N) / 2 আচরণ করবে মত এন 2 যখন এন বড়। তিনি একই অনুচ্ছেদের মধ্যে রাজ্যের (ঢ 2 + N) / 2 অনেক মত আচরণ এন 2 / 2 । উপরের অ্যালগরিদমকে ও (এন 2 ) হিসাবে শ্রেণিবদ্ধ করতে তিনি এটি ব্যবহার করেন ।
আমি যে পেতে (ঢ 2 + N) / 2 অনুরূপ এন 2 / 2 কারণ শতাংশ জ্ঞানী, এন সামান্য পার্থক্য তোলে। আমি যেটি পাই না তা হ'ল এন (বৃহত্তর) যখন কেন (এন 2 + এন) / 2 এবং এন 2 সমান হয়।
উদাহরণস্বরূপ, যদি এন = 1,000,000 :
(n^2 + n) / 2 = 500000500000 (5.000005e+11)
(n^2) / 2 = 500000000000 (5e+11)
(n^2) = 1000000000000 (1e+12)
শেষটি মোটেও একই রকম নয়। আসলে, বেশ স্পষ্টতই, এটি মাঝের চেয়ে দ্বিগুণ । সুতরাং ফ্র্যাঙ্ক ক্যারানো কীভাবে বলতে পারেন যে তারা একই রকম? এছাড়াও, কীভাবে অ্যালগরিদমকে ও (এন 2 ) হিসাবে শ্রেণীবদ্ধ করা হয় । সেই অভ্যন্তরীণ লুপটি দেখে আমি বলব এটি এন 2 + এন / 2
n
বড় হওয়ার সাথে সাথে উভয়ই 'n n 2`' এবং আপনার ক্রিয়াকলাপ একইভাবে আচরণ করে এবং তাদের বৃদ্ধির হারের ক্ষেত্রে একটি ধ্রুবক পার্থক্য রাখে। আপনার যদি কোনও জটিল প্রকাশ থাকে তবে দ্রুত ক্রমবর্ধমান ক্রিয়াটি প্রাধান্য পায়।