হিপ ডেটা স্ট্রাকচার প্রায়োরিটি কিউ রিপ্রেজেন্ট করতে ব্যবহার করা যায়। পাইথনে এটি heapq মডিউলে উপলব্ধ। এখানে এটি একটি মিন-হিপ তৈরি করে। তাই যখন প্রায়োরিটি ১, এটি হাইএস্ট প্রায়োরিটি প্রতীকী করে। নতুন এলিমেন্ট ইনসার্ট হলে, হিপ স্ট্রাকচার আপডেট হয়।
এই মডিউল ব্যবহার করতে হলে, আমাদের এটি ইম্পোর্ট করতে হবে -
import heapq
কিছু হিপ সংক্রান্ত অপারেশন রয়েছে। এগুলো হলো -
heapq.heapify(iterable) মেথড
এটি একটি ইতেরেবল ডেটাসেটকে হিপ ডেটা স্ট্রাকচারে কনভার্ট করতে ব্যবহৃত হয়।
heapq.heappush(heap, element) মেথড
এই মেথড হিপে এলিমেন্ট ইনসার্ট করতে ব্যবহৃত হয়। তারপর পুরো হিপ স্ট্রাকচার রি-হিপ করে।
heapq.heappop(heap) মেথড
এই মেথড হিপের শীর্ষ থেকে এলিমেন্ট রিটার্ন এবং ডিলিট করে এবং বাকি এলিমেন্টগুলোর ওপর heapify পারফর্ম করে।
heapq.heappushpop(heap, element) মেথড
এই মেথড একটি স্টেটমেন্টে ইনসার্ট এবং পপ এলিমেন্ট করতে ব্যবহৃত হয়।
heapq.heapreplace(heap, element) মেথড
এই মেথড একটি স্টেটমেন্টে ইনসার্ট এবং পপ এলিমেন্ট করতে ব্যবহৃত হয়। এটি হিপের রুট থেকে এলিমেন্ট রিমুভ করে, তারপর এলিমেন্ট হিপে ইনসার্ট করে।
heapq.nlargest(n, iterable, key=None) মেথড
এই মেথড হিপ থেকে n বড় এলিমেন্ট ফেরত দেয়।
heapq.nsmallest(n, iterable, key=None) মেথড
এই মেথড হিপ থেকে n ছোট এলিমেন্ট ফেরত দেয়।
উদাহরণ কোড
import heapq
my_list = [58, 41, 12, 17, 89, 65, 23, 20, 10, 16, 17, 19]
heapq.heapify(my_list)
print(my_list)
heapq.heappush(my_list, 7)
print(my_list)
print('Popped Element: ' + str(heapq.heappop(my_list)))
print(my_list)
new_iter = list()
new_iter = heapq.nlargest(4, my_list)
print(new_iter)
আউটপুট
[10, 16, 12, 17, 17, 19, 23, 20, 41, 89, 58, 65] [7, 16, 10, 17, 17, 12, 23, 20, 41, 89, 58, 65, 19] Popped Element: 7 [10, 16, 12, 17, 17, 19, 23, 20, 41, 89, 58, 65] [89, 65, 58, 41]