Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ प्रोग्राम: बिन पैकिंग एल्गोरिदम इम्प्लीमेंट करना


बिन पैकिंग समस्या कटिंग स्टॉक समस्या का एक विशेष प्रकार है। बिन पैकिंग समस्या में, विभिन्न आयतन की वस्तुओं को V आयतन के परिमित संख्या के कंटेनरों या बिन्स में इस तरह पैक किया जाना चाहिए कि उपयोग किए गए बिन्स की संख्या न्यूनतम हो। कम्प्यूटेशनल कॉम्प्लेक्सिटी थ्योरी में, यह एक संयोजन NP-हार्ड समस्या है।

जब बिन्स की संख्या 1 तक सीमित होती है और प्रत्येक आइटम को आयतन और वैल्यू दोनों द्वारा वर्णित किया जाता है, तो बिन में फिट होने वाली वस्तुओं की वैल्यू को अधिकतम करने की समस्या को नैपसैक समस्या के रूप में जाना जाता है।

एल्गोरिदम

Begin
    Binpacking(पॉइंटर, आकार, सेट्स की संख्या)
    bincount, m, i घोषित करें
    bincount = 1, m = आकार इनिशियलाइज़ करें
    i = 0 से सेट्स की संख्या तक
        यदि (m - *(a + i) > 0) करें
            m = m - *(a + i)
            जारी रखें
        अन्यथा
            bincount बढ़ाएं
            m = आकार;
            i घटाएं
            आवश्यक बिन्स की संख्या प्रिंट करें
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++ में जॉनसन एल्गोरिदम कार्यान्वयन

    यहां हम दो वर्टेक्स के बीच सबसे छोटा पथ खोजने के लिए जॉनसन एल्गोरिदम देखेंगे। ग्राफ यहां दिया गया है। एज के बीच सबसे छोटा पथ नीचे जैसा है। यह प्रोग्राम वर्टेक्स की संख्या, एज की संख्या, और उनकी लागत के साथ एज लेगा। इनपुट - वर्टेक्स: 3 एज: 5 लागत के साथ एज - 1 2 8 2 1 12 1 3 22 3 1 6 2 3 4 आउटप

  1. - C++ में कादाने एल्गोरिदम का कार्यान्वयन: अधिकतम सबएरे सम

    कादाने एल्गोरिदम का उपयोग इंटीजर्स के ऐरे से अधिकतम सबएरे सम खोजने के लिए किया जाता है। यहां हम इस एल्गोरिदम को कार्यान्वित करने के लिए एक C++ प्रोग्राम पर चर्चा करेंगे। एल्गोरिदम Begin Function kadanes(int array[], int length): इनिशियलाइज़ highestMax = 0 currentElement

  1. C++ में विग्नेरे सिफर (Vigenere Cipher) का कार्यान्वयन C++ में विग्नेरे सिफर (Vigenere Cipher) का कार्यान्वयन

    विग्नेरे सिफर अल्फाबेटिक टेक्स्ट को एन्क्रिप्ट करने की एक प्रकार की पॉलीअल्फाबेटिक सब्स्टीट्यूशन विधि है। विग्नेरे सिफर टेबल का उपयोग किया जाता है जिसमें A से Z तक के अल्फाबेट्स 26 पंक्तियों में लिखे होते हैं, इस विधि में एन्क्रिप्शन और डिक्रिप्शन के लिए। एन्क्रिप्शन Key: WELCOME Message: Thisis