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

पायथन में हीप क्यू (heapq)


हीप क्यू एक विशेष ट्री संरचना है जिसमें प्रत्येक पैरेंट नोड अपने चाइल्ड नोड से कम या बराबर होता है। पायथन में इसे heapq मॉड्यूल का उपयोग करके लागू किया जाता है। यह प्रायोरिटी क्यू को लागू करने में बहुत उपयोगी है जहां अधिक वेट वाले क्यू आइटम को प्रोसेसिंग में अधिक प्राथमिकता दी जाती है।

हीप बनाना

पायथन के इनबिल्ट लाइब्रेरी heapq का उपयोग करके एक हीप क्यू बनाया जाता है। इस लाइब्रेरी में हीप डेटा संरचना पर विभिन्न ऑपरेशन करने के लिए प्रासंगिक फ़ंक्शन होते हैं। नीचे इन फ़ंक्शन्स की सूची दी गई है।

  • heapify – यह फ़ंक्शन एक सामान्य लिस्ट को हीप में बदल देता है। परिणामी हीप में सबसे छोटा एलिमेंट इंडेक्स पोजीशन 0 पर आ जाता है। लेकिन बाकी डेटा एलिमेंट्स जरूरी नहीं कि सॉर्टेड हों।
  • heappush – यह फ़ंक्शन करंट हीप को बदले बिना हीप में एक एलिमेंट जोड़ता है।
  • heappop – यह फ़ंक्शन हीप से सबसे छोटा डेटा एलिमेंट वापस करता है।
  • heapreplace – यह फ़ंक्शन सबसे छोटे डेटा एलिमेंट को फ़ंक्शन में दिए गए नए मान से बदल देता है।

हीप का निर्माण

heapify फ़ंक्शन के साथ एलिमेंट्स की एक लिस्ट का उपयोग करके हीप बनाया जाता है। नीचे दिए गए उदाहरण में हम एलिमेंट्स की एक लिस्ट देते हैं और heapify फ़ंक्शन एलिमेंट्स को पुनर्व्यवस्थित करता है जिससे सबसे छोटा एलिमेंट पहली पोजीशन पर आ जाता है।

उदाहरण

import heapq
H = [21, 1, 45, 78, 3, 5]
# एलिमेंट्स को पुनर्व्यवस्थित करने के लिए heapify का उपयोग करें
heapq.heapify(H)
print(H)

आउटपुट

उपरोक्त कोड निष्पादित होने पर निम्न परिणाम देता है:

[1, 3, 5, 78, 21, 45]

हीप में इन्सर्ट करना

हीप में डेटा एलिमेंट इन्सर्ट करने पर वह हमेशा लास्ट इंडेक्स पर जुड़ता है। लेकिन आप heapify फ़ंक्शन को फिर से लागू करके नए जोड़े गए एलिमेंट को पहली इंडेक्स पर ला सकते हैं, बशर्ते वह वैल्यू में सबसे छोटा हो। नीचे दिए गए उदाहरण में हम संख्या 8 इन्सर्ट करते हैं।

उदाहरण

import heapq
H = [21, 1, 45, 78, 3, 5]
# हीप में बदलें
heapq.heapify(H)
print(H)
# एलिमेंट जोड़ें
heapq.heappush(H, 8)
print(H)

आउटपुट

उपरोक्त कोड निष्पादित होने पर निम्न परिणाम देता है:

[1, 3, 5, 78, 21, 45]
[1, 3, 5, 78, 21, 45, 8]

हीप से हटाना

आप heappop फ़ंक्शन का उपयोग करके पहली इंडेक्स पर मौजूद एलिमेंट को हटा सकते हैं। नीचे दिए गए उदाहरण में यह फ़ंक्शन हमेशा इंडेक्स पोजीशन 0 पर मौजूद एलिमेंट को हटाता है।

उदाहरण

import heapq
H = [21, 1, 45, 78, 3, 5]
# हीप बनाएं
heapq.heapify(H)
print(H)
# हीप से एलिमेंट हटाएं
heapq.heappop(H)
print(H)

आउटपुट

उपरोक्त कोड निष्पादित होने पर निम्न परिणाम देता है:

[1, 3, 5, 78, 21, 45]
[3, 21, 5, 78, 45]

हीप में रिप्लेस करना

heapreplace फ़ंक्शन हमेशा हीप के सबसे छोटे एलिमेंट को हटाता है और नए आने वाले एलिमेंट को किसी ऐसे स्थान पर इन्सर्ट करता है जो किसी क्रम से निर्धारित नहीं होता।

उदाहरण

import heapq
H = [21, 1, 45, 78, 3, 5]
# हीप बनाएं
heapq.heapify(H)
print(H)
# एक एलिमेंट रिप्लेस करें
heapq.heapreplace(H, 6)
print(H)

आउटपुट

उपरोक्त कोड निष्पादित होने पर निम्न परिणाम देता है:

[1, 3, 5, 78, 21, 45]
[3, 6, 5, 78, 21, 45]
  1. पायथन में हीप मैक्स हीप बना रहा है या नहीं जांचने का प्रोग्राम पायथन में हीप मैक्स हीप बना रहा है या नहीं जांचने का प्रोग्राम

    मान लीजिए हमारे पास एक सूची है जो हीप ट्री का प्रतिनिधित्व करती है। जैसा कि हम जानते हैं हीप एक पूर्ण बाइनरी ट्री है। हमें जांचना है कि तत्व मैक्स हीप बना रहे हैं या नहीं। जैसा कि हम जानते हैं मैक्स हीप के लिए प्रत्येक तत्व अपने दोनों बच्चों से बड़ा होता है। इसलिए, यदि इनपुट है nums = [8, 6, 4, 2, 0

  1. पायथन प्रोग्राम: हीप सॉर्ट पायथन प्रोग्राम: हीप सॉर्ट

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक सरणी दी गई है, हमें हीपसॉर्ट की अवधारणा का उपयोग करके इसे क्रमबद्ध करना है। यहां हम अधिकतम तत्व को अंत में रखते हैं। यह तब तक दोहराया जाता है जब तक सरणी क्रमबद्ध नहीं हो जाती। उदाहरण # हीपिफाई def heapify(arr, n, i): la

  1. - पायथन हीप क्यू एल्गोरिदम

    हीप डेटा स्ट्रक्चर्स का उपयोग प्रायोरिटी क्यू को प्रस्तुत करने के लिए किया जा सकता है। पायथन में यह heapq मॉड्यूल में उपलब्ध है। यहां यह एक मिन-हीप बनाता है। इसलिए जब प्रायोरिटी 1 होती है, तो यह उच्चतम प्रायोरिटी को दर्शाता है। जब नए एलिमेंट्स डाले जाते हैं, तो हीप स्ट्रक्चर अपडेट होता है। इस मॉड्य