বড় ও: নির্ভরতার সাথে লুপের জন্য নেস্টেড


9

আমাকে বিগ ও-এর সাথে হোমওয়ার্ক অ্যাসাইনমেন্ট দেওয়া হয়েছিল I'm এখানে আমার হোমওয়ার্ক প্রশ্নের একটি পরিবর্তিত সংস্করণ রয়েছে, যেহেতু আমি সত্যিই এটি বুঝতে চাই:

sum = 0;
for (i = 0; i < n; i++ 
    for (j = 0; j < i; j++) 
        sum++;

যে অংশটি আমাকে ফেলে দিচ্ছে তা হ'ল j < iঅংশ। দেখে মনে হচ্ছে এটি প্রায়োগিকের মতো কার্যকর হবে তবে সংযোজন সহ। কোন ইঙ্গিত সত্যিই প্রশংসা করা হবে।


উত্তর:


10

সুতরাং আমাকে কয়েকটি বিষয় পরিষ্কার করে দেওয়া যাক, আপনি বিগ-ও স্বরলিপিতে আগ্রহী - এর অর্থ উপরের আবদ্ধ । অন্য কথায়, আপনার চেয়ে বেশি পদক্ষেপ গণনা করা ঠিক। বিশেষত, আপনি এতে অ্যালগরিদমটি সংশোধন করতে পারেন

 ...
    for (j = 0; j < n; j++) 
 ...

সুতরাং আপনার দুটি নেস্ট লুপ রয়েছে, প্রতিটি লুপ চলে এনবার, যা আপনি দেয় একটি ঊর্ধ্ব আবদ্ধ এরহে(এন2)

অবশ্যই, আপনি উপরের সীমানার জন্য একটি ভাল অনুমান করতে চাই। সুতরাং সমাপ্তির জন্য, আমরা একটি নিম্ন সীমা নির্ধারণ করতে চাই। এর অর্থ কম পদক্ষেপ গণনা করা ঠিক আছে। সুতরাং পরিবর্তন বিবেচনা করুন

for (i = n/2; i < n; i++)
    for (j = 0; j < n/2; j++) 
        sum++;

এখানে আমরা কয়েকটি লুপ-পুনরুক্তি সম্পাদন করি। আবার আমাদের দুটি নেস্ট লুপ রয়েছে তবে এবার আমাদের রয়েছেএন/2 প্রতি লুপে পুনরাবৃত্তি, যা দেখায় যে আমাদের কমপক্ষে রয়েছে এন2/4সংযোজন। এই ক্ষেত্রে আমরা এই asympotic নিম্ন দ্বারা আবদ্ধ বোঝাΩ(এন2)। যেহেতু নিম্ন এবং উপরের সীমাবদ্ধ, তাই আমরা এটিও বলতে পারিএন2 একটি আঁটসাঁট অ্যাসিম্পটোটিক আবদ্ধ, এবং আমরা লিখি Θ(এন2)

আপনি যদি আরও জানতে চান তবে এখানে পড়ুন


6
sum = 0;
for (i = 0; i < n; i++)
    for (j = 0; j < i; j++) 
        sum++;

আসুন এটি সন্ধান করুন:

  • যখন আমি = 0, অভ্যন্তরীণ লুপটি মোটেও চালিত হবে না ( 0<0 == false)।
  • যখন আমি = 1, অভ্যন্তরীণ লুপটি একবার চলবে (j == 0 এর জন্য)।
  • যখন আমি = 2, অভ্যন্তরীণ লুপটি দু'বার চলবে। (জে == 0 এবং জে == 1 এর জন্য)।

এই অ্যালগরিদম এভাবে sumনিম্নলিখিত সংখ্যার বার বৃদ্ধি করবে :

Σএক্স=1এনএক্স-1=0+ +1+ +2+ +3+ +4 ...+ +এন-1=এন(এন-1)2

আমরা পরিদর্শন করে দেখতে পারি যে যোগফলটি একটি "ত্রিভুজাকার সংখ্যা"। বিতরণএন বাকি সংখ্যাগুলিতে, আমরা পৌঁছে যাই এন2-এন2যার মধ্যে দ্রুত বর্ধনশীল শব্দটি এন2 তাই বাচম্যান-ল্যান্ডাউ বিগ-থেটা জটিলতা θ(এন2)হে(এন2) একটিএন Ω(এন2)


3

আমি এটি ব্যাখ্যা করতে পারি কিনা দেখুন ...

তাই যদি ভিতরের লুপটি জে ছিল

এখন, প্রথম পুনরাবৃত্তির জন্য আপনি অভ্যন্তরীণ লুপের মাধ্যমে n- (n-1) বার করুন। দ্বিতীয়বার আপনি অভ্যন্তরীণ লুপটি মাধ্যমে n- (n-2) বার করবেন। নবম সময়ে আপনি এন- (এনএন) বারটি করেন, যা এন বার হয়।

আপনি যদি অভ্যন্তরীণ লুপটি পেরিয়ে যাওয়ার গড় গড় করেন তবে এটি n / 2 বার হবে।

সুতরাং আপনি এটি ও (এন * এন / 2) = ও (এন ^ 2/2) = ও (এন ^ 2) বলতে পারেন

যে জানার জন্য?


এটি কিছুটা অদ্ভুত, তবে আমি মনে করি এটি পেয়েছি! ধন্যবাদ! হা হাতে

সুতরাং যদি সেই j < iঅংশটি আসলে হয় j < i^2, তবে সেই অংশটির জন্য ফলাফলটি হ'ল n ^ 2/2?

সবার আগে নোট করুন যে ও (এন ^ 2/2) = ও (এন ^ 2)। এখন আপনি যদি এটিকে j <i ^ 2 তে পরিবর্তন করেন তবে আপনি প্রথম পুনরাবৃত্তিতে (n- (n-1)) ^ 2 করছেন এবং শেষ পুনরাবৃত্তিতে n ^ 2 করছেন। আমি মনে করছি না যে অভ্যন্তরীণ লুপের জন্য বিগ-ও সংকেতটি কী হবে। O (n ^ 2) হ'ল উপরের আবদ্ধ। সুতরাং পুরো জিনিসটির জন্য একটি upperিলে .ালা উপরের আবদ্ধ হবে ও (এন ^ 3), তবে সেই অভ্যন্তরীণ লুপটি ও (এন ^ 2) এর চেয়ে কম। যে জানার জন্য?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.