কম্পিউটার টিউটোরিয়াল

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 বার এবং শেষ ইটারেশনের জন্য ১ বার।

এনुसারে, মোট টাইম কমপ্লেক্সিটি:

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

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

এই কোডের টাইম কমপ্লেক্সিটি O(n log n)।

মেথড ২

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. C++-এ O(1) স্পেস ও O(N²) টাইমে এক্সপ্রেশনে ব্যালেন্সড প্যারেনথেসিস চেক করুন

  4. সি/সি++-এ বারkeley-এর অ্যালগরিদম