प्रायोरिटी क्यू प्राथमिकता वाले तत्वों के संग्रह को संग्रहीत करने के लिए एक अमूर्त डेटा प्रकार है जो तत्वों के सम्मिलन और हटाने का समर्थन करता है उनकी प्राथमिकताओं के आधार पर, यानी पहली प्राथमिकता वाले तत्व को किसी भी समय हटाया जा सकता है। प्रायोरिटी क्यू स्टैक्स, क्यूज, लिस्ट आदि की तरह अपनी लोकेशन के संबंध में तत्वों को रैखिक फैशन में संग्रहीत नहीं करता है। प्रायोरिटी क्यू 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