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

অ্যাক্টিভিটি সিলেকশন সমস্যা (Activity Selection Problem)

অ্যাক্টিভিটি সিলেকশন সমস্যায় n সংখ্যক অ্যাক্টিভিটির স্টার্ট এবং এন্ড টাইম দেওয়া থাকে। একজনের জন্য সর্বোচ্চ সংখ্যক অ্যাক্টিভিটি সিলেক্ট করতে হয়। গ্রিডি অ্যাপ্রোচ: যে অ্যাক্টিভিটির ফিনিশ টাইম সবচেয়ে কম এবং স্টার্ট টাইম লাস্ট সিলেক্টেড অ্যাক্টিভিটির ফিনিশ টাইমের চেয়ে বড় বা সমান, সেটি বেছে নেওয়া হয়।

কমপ্লেক্সিটি

  • অনসর্টেড লিস্ট: O(n log n)
  • সর্টেড লিস্ট: O(n)

ইনপুট এবং আউটপুট

Input: {(5,9), (1,2), (3,4), (0,6), (5,7), (8,9)}
Output: Selected Activities:
Activity: 0, Start: 1 End: 2
Activity: 1, Start: 3 End: 4
Activity: 3, Start: 5 End: 7
Activity: 5, Start: 8 End: 9

অ্যালগরিদম

maxActivity(act, size)
Input: অ্যাক্টিভিটি লিস্ট, সাইজ
Output: সিলেক্টেড অ্যাক্টিভিটির অর্ডার

Begin
    act লিস্টকে এন্ড টাইম অনুযায়ী সর্ট করুন
    i := 0 (প্রথম অ্যাক্টিভিটি সিলেক্ট)
    display i-th activity
    for j := 1 to n-1 do
        if act[j].start >= act[i].end then
            display j-th activity
            i := j
        done
    done
End

C++ উদাহরণ

#include <iostream>
#include <algorithm>
using namespace std;

struct Activity { int start, end; };
bool comp(Activity a1, Activity a2) { return a1.end < a2.end; }

void maxActivity(Activity act[], int n) {
    sort(act, act+n, comp);
    cout << "Selected Activities are:" << endl;
    int i = 0;
    cout << "Activity: " << i << " , Start: " << act[i].start << " End: " << act[i].end << endl;
    for(int j=1; j= act[i].end) {
            cout << "Activity: " << j << " , Start: " << act[j].start << " End: " << act[j].end << endl;
            i = j;
        }
    }
}

int main() {
    Activity arr[] = {{5,9},{1,2},{3,4},{0,6},{5,7},{8,9}};
    maxActivity(arr, 6);
}

আউটপুট

Selected Activities are:
Activity: 0 , Start: 1 End: 2
Activity: 1 , Start: 3 End: 4
Activity: 3 , Start: 5 End: 7
Activity: 5 , Start: 8 End: 9
  1. অ্যান্ড্রয়েডে বাটন ক্লিক করলে নতুন এক্টিভিটি শুরু করার পদ্ধতি

  2. র্যাট ইন ए মেজ সমস্যা

  3. M-কালারিং সমস্যা

  4. অ্যাক্টিভিটি সিলেকশন প্রব্লেমের পাইথন প্রোগ্রাম