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

C++ में पेयर्स की प्रायोरिटी क्यू (पहले द्वारा क्रमबद्ध)


प्रायोरिटी क्यू प्राथमिकता वाले तत्वों के संग्रह को संग्रहीत करने के लिए एक अमूर्त डेटा प्रकार है जो तत्वों के सम्मिलन और हटाने का समर्थन करता है उनकी प्राथमिकताओं के आधार पर, यानी पहली प्राथमिकता वाले तत्व को किसी भी समय हटाया जा सकता है। प्रायोरिटी क्यू स्टैक्स, क्यूज, लिस्ट आदि की तरह अपनी लोकेशन के संबंध में तत्वों को रैखिक फैशन में संग्रहीत नहीं करता है। प्रायोरिटी क्यू ADT (अमूर्त डेटा प्रकार) तत्वों को उनकी प्राथमिकताओं के आधार पर संग्रहीत करता है।

प्रायोरिटी क्यू निम्नलिखित फ़ंक्शन्स का समर्थन करता है:

Size() - प्रायोरिटी क्यू का आकार गणना करने के लिए उपयोग किया जाता है क्योंकि यह इसमें तत्वों की संख्या लौटाता है।

Empty() - यदि प्रायोरिटी क्यू खाली है तो true लौटाता है और अन्यथा false।

Insert(element) - प्रायोरिटी क्यू में नया तत्व डालने के लिए उपयोग किया जाता है।

Min() - सबसे छोटी संबद्ध कुंजी मान वाला तत्व लौटाता है और यदि प्रायोरिटी क्यू खाली है तो त्रुटि संदेश प्रदर्शित करता है।

removeMin() - min() फ़ंक्शन द्वारा संदर्भित तत्व को हटाता है।

कार्य C++ में पहले द्वारा क्रमबद्ध पेयर्स की प्रायोरिटी क्यू की अवधारणा को लागू करना है।

हम इस समस्या को हीप्स के समान तरीके से हल कर सकते हैं, समस्या को हल करने के दो तरीके हैं:

  • मैक्स प्रायोरिटी या मैक्स हीप
  • मिन प्रायोरिटी या मिन हीप

हीप एक ट्री संरचना है जिसमें नोड्स एक विशिष्ट क्रम में व्यवस्थित होते हैं। हीप के दो प्रकार हैं मिन हीप और मैक्स हीप। मिन हीप में रूट नोड या पैरेंट नोड अपने चाइल्ड नोड से छोटा होता है, जबकि मैक्स हीप में रूट नोड या पैरेंट नोड अपने चाइल्ड नोड से बड़ा होता है।

उदाहरण

Input: priorityq.push(make_pair(18, 200))
Input: priorityq.push(make_pair(18, 200))
priorityq.push(make_pair(29, 100))
priorityq.push(make_pair(11, 400))
Output: 29 100
Input: priorityq.push(make_pair(10, 200))
priorityq.push(make_pair(20, 100))
priorityq.push(make_pair(19, 400))
Output: 20 100 Through Max priority (Max heap)

एल्गोरिदम

Start
Step 1-> In main function()
    Define priority_queue> priorityq
    Call priorityq.push(make_pair(18, 200))
    Call priorityq.push(make_pair(29, 100))
    Call priorityq.push(make_pair(11, 400))
    Set pair top = priorityq.top()
    Print top.first and top.second
Stop

उदाहरण (मैक्स हीप)

#include <bits/stdc++.h>
using namespace std;

// main program
int main() {
    priority_queue<pair<int, int>> priorityq;
    priorityq.push(make_pair(18, 200));
    priorityq.push(make_pair(29, 100));
    priorityq.push(make_pair(11, 400));
    pair<int, int> top = priorityq.top();
    cout << top.first << " " << top.second;
    return 0;
}

आउटपुट

29 100

मिन प्रायोरिटी (मिन हीप) के माध्यम से

एल्गोरिदम

Start
Step 1-> In main function()
    Define priority_queue> priorityq
    Call pq.push(make_pair(10, 200))
    Call pq.push(make_pair(20, 100))
    Call pq.push(make_pair(15, 400))
    Set pair top = pq.top()
    Print top.first and top.second
Stop

उदाहरण (मिन हीप)

#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> pi;

// main program
int main() {
    priority_queue<pi, vector<pi>, greater<pi>> pq;
    pq.push(make_pair(10, 200));
    pq.push(make_pair(20, 100));
    pq.push(make_pair(15, 400));
    pair<int, int> top = pq.top();
    cout << top.first << " " << top.second;
    return 0;
}

आउटपुट

10 200
  1. C/C++ में प्रायोरिटी क्यू (Priority Queue) परिचय C/C++ में प्रायोरिटी क्यू (Priority Queue) परिचय

    एक प्रायोरिटी क्यू एक प्रकार की क्यू है जिसमें तत्वों को उन्हें असाइन की गई प्राथमिकताओं के अनुसार डाला या हटाया जाता है जहां प्राथमिकता एक पूर्णांक मान है जो 0-10 के बीच हो सकता है जहां 0 उच्चतम प्राथमिकता वाले तत्व को दर्शाता है और 10 निम्नतम प्राथमिकता वाले तत्व को दर्शाता है। प्रायोरिटी क्यू को

  1. C++ STL में प्राथमिकता कतार (Priority Queue) C++ STL में प्राथमिकता कतार (Priority Queue)

    प्राथमिकता कतार प्राथमिकता वाले तत्वों के संग्रह को संग्रहीत करने के लिए एक अमूर्त डेटा प्रकार है जो उनकी प्राथमिकताओं के आधार पर एक तत्व के सम्मिलन और विलोपन का समर्थन करता है, अर्थात् पहली प्राथमिकता वाले तत्व को किसी भी समय हटाया जा सकता है। प्राथमिकता कतार स्टैक, कतार, सूची आदि की तरह अपने स्थान

  1. C++ में डबल लिंक्ड लिस्ट का उपयोग करके प्राथमिकता कतार C++ में डबल लिंक्ड लिस्ट का उपयोग करके प्राथमिकता कतार

    हमें डेटा और प्राथमिकता एक पूर्णांक मान के रूप में दी गई है और कार्य दिए गए प्राथमिकता के अनुसार डबल लिंक्ड लिस्ट बनाना और परिणाम प्रदर्शित करना है।कतार एक FIFO डेटा संरचना है जिसमें पहले डाला गया तत्व सबसे पहले हटाया जाता है। प्राथमिकता कतार एक प्रकार की कतार है जिसमें तत्वों को प्राथमिकता के आधार