কম্পিউটার

C++ এ একটি আকর্ষণীয় সময় জটিলতা প্রশ্ন


সময় জটিলতা অ্যালগরিদম এর গড় কেস চালানোর জন্য প্রয়োজনীয় সময় হিসাবে সংজ্ঞায়িত করা যেতে পারে।

আসুন কিছু মৌলিক ফাংশনের সময় জটিলতা দেখি এবং গণনা করি।

পদ্ধতি

void counter(int n){
   for(int i = 0 ; i < n ; i++){
      for(int j = 1 ; j<n ; j += i ){
         cout<<i<<” ”<<j;
      }
      cout<<endl;
   }
}

উপরের পদ্ধতিটি i-এর সমস্ত মানের জন্য n/I বার চলবে। অর্থাৎ প্রথম পুনরাবৃত্তির জন্য n বার এবং শেষ পুনরাবৃত্তির জন্য 1 বার।

এই অনুসারে, মোট সময় জটিলতা হল

(n/1 + n/2 + n/3 + …. + n/n)
= n (1/1 + ½ + ⅓ + …. 1/n)

এখন (1/1 + ½ + ⅓ + .... 1/n) এর মান O(log n) এর সমান .

এই কোডের সময় জটিলতা হল O(nlogn) .

পদ্ধতি

void counter(n){
   int i , j ;
   for(int i = 1 ; i <= n ; i++){
      for(j = 1; j <= log(i) ; j++){
         cout<<i<<” ”<<j;
      }
   }
}

ফাংশনের মোট জটিলতা হল O(log 1) + O(log 2) + O(log 3) + …. + O(log n) যা O(log n!).


  1. পরিমার্জিত জটিলতা

  2. অ্যাসিম্পোটিক জটিলতা

  3. একটি অভিব্যক্তিতে সুষম বন্ধনী পরীক্ষা করুন - O(1) স্থান - C++ এ O(N^2) সময়ের জটিলতা

  4. C/C++ এ বার্কলের অ্যালগরিদম