কম্পিউটার

বিন প্যাকিং অ্যালগরিদম বাস্তবায়নের জন্য C++ প্রোগ্রাম


বিন প্যাকিং সমস্যা একটি বিশেষ ধরনের কাটিং স্টক সমস্যা। বিন প্যাকিং সমস্যায়, বিভিন্ন ভলিউমের বস্তুগুলিকে অবশ্যই সীমিত সংখ্যক পাত্রে বা বিনে ভলিউম V এর প্রতিটিতে এমনভাবে প্যাক করতে হবে যাতে ব্যবহৃত বিনের সংখ্যা কম হয়। কম্পিউটেশনাল জটিলতা তত্ত্বে, এটি একটি সম্মিলিত NP-হার্ড সমস্যা।

যখন বিনের সংখ্যা 1 এর মধ্যে সীমাবদ্ধ থাকে এবং প্রতিটি আইটেম একটি ভলিউম এবং একটি মান উভয় দ্বারা চিহ্নিত করা হয়, তখন বিনের মধ্যে ফিট করতে পারে এমন আইটেমগুলির মান সর্বাধিক করার সমস্যাটিকে ন্যাপস্যাক সমস্যা হিসাবে পরিচিত।

অ্যালগরিদম

Begin
   Binpacking(pointer, size, no of sets)
   Declare bincount, m, i
   Initialize bincount = 1, m=size
   For i = 0 to number of sets
   if (m - *(a + i) > 0) do
      m = m - *(a + i)
      Continue
   Else
      Increase bincount
      m = size;
      Decrement i
      Print number of bins required
End

উদাহরণ কোড

#include<iostream>
using namespace std;
void binPacking(int *a, int size, int n) {
   int binCount = 1;
   int m = size;
   for (int i = 0; i < n; i++) {
      if (m - *(a + i) > 0) {
         m -= *(a + i);
         continue;
      } else {
         binCount++;
         m = size;
         i--;
      }
   }
   cout << "Number of bins required: " << binCount;
}
int main(int argc, char **argv) {
   cout << "Enter the number of items in Set: ";
   int n;
   cin >> n;
   cout << "Enter " << n << " items:";
   int a[n];
   for (int i = 0; i < n; i++)
      cin >> a[i];
   cout << "Enter the bin size: ";
   int size;
   cin >> size;
   binPacking(a, size, n);
}

আউটপুট

Enter the number of items in Set: 3
Enter 3 items:4
6
7
Enter the bin size: 26
Number of bins required: 1

  1. কোলাটজ অনুমান বাস্তবায়নের জন্য C++ প্রোগ্রাম

  2. জনসনের অ্যালগরিদম বাস্তবায়নের জন্য C++ প্রোগ্রাম

  3. কাদানের অ্যালগরিদম বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. ভিজেনার সাইফার বাস্তবায়নের জন্য C++ প্রোগ্রাম