কম্পিউটার

পাইথনে হিপ কিউ (বা হেপকিউ)


হিপ কিউ হল একটি বিশেষ গাছের কাঠামো যেখানে প্রতিটি প্যারেন্ট নোড তার চাইল্ড নোডের চেয়ে কম বা সমান। পাইথনে এটি heapq মডিউল ব্যবহার করে প্রয়োগ করা হয়। অগ্রাধিকার সারিগুলি বাস্তবায়ন করা খুবই কার্যকর যেখানে উচ্চ ওজন সহ সারির আইটেম প্রক্রিয়াকরণে আরও অগ্রাধিকার দেওয়া হয়৷

একটি স্তূপ তৈরি করুন

পাইথনের অন্তর্নির্মিত লাইব্রেরিটি ব্যবহার করে একটি হিপ কিউ তৈরি করা হয়েছে যার নাম heapq। এই লাইব্রেরিতে একটি হিপ ডেটা স্ট্রাকচারে বিভিন্ন ক্রিয়াকলাপ চালানোর জন্য প্রাসঙ্গিক ফাংশন রয়েছে। নীচে এই ফাংশনগুলির একটি তালিকা রয়েছে৷

  • heapify - এই ফাংশনটি একটি নিয়মিত তালিকাকে একটি হিপে রূপান্তর করে। ফলস্বরূপ হিপে ক্ষুদ্রতম উপাদানটি সূচক অবস্থান 0-এ ঠেলে দেওয়া হয়। তবে বাকি ডেটা উপাদানগুলি অগত্যা সাজানো হয় না।
  • হেপপুশ – এই ফাংশনটি বর্তমান হিপ পরিবর্তন না করেই হিপে একটি উপাদান যোগ করে।
  • হেপপপ – এই ফাংশনটি হিপ থেকে ক্ষুদ্রতম ডেটা উপাদান ফেরত দেয়।
  • হিপারপ্লেস – এই ফাংশনটি ফাংশনে সরবরাহ করা একটি নতুন মান দিয়ে ক্ষুদ্রতম ডেটা উপাদানকে প্রতিস্থাপন করে।

একটি স্তূপ তৈরি করা

Heapify ফাংশন সহ উপাদানগুলির একটি তালিকা ব্যবহার করে একটি হিপ তৈরি করা হয়। নীচের উদাহরণে আমরা উপাদানগুলির একটি তালিকা সরবরাহ করি এবং heapify ফাংশন উপাদানগুলিকে পুনর্বিন্যাস করে যা ক্ষুদ্রতম উপাদানটিকে প্রথম অবস্থানে নিয়ে আসে৷

উদাহরণ

ইমপোর্ট heapqH =[21,1,45,78,3,5]# উপাদানগুলিকে পুনরায় সাজাতে heapify ব্যবহার করুনheapq.heapify(H)print(H)

আউটপুট

উপরের কোডটি কার্যকর করা হলে, এটি নিম্নলিখিত ফলাফল তৈরি করে -

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

স্তূপে ঢোকানো হচ্ছে

একটি হিপে একটি ডেটা উপাদান সন্নিবেশ করানো সর্বদা শেষ সূচকে উপাদান যোগ করে। কিন্তু আপনি নতুন যোগ করা উপাদানটিকে প্রথম সূচকে আনতে আবার heapify ফাংশন প্রয়োগ করতে পারেন শুধুমাত্র যদি এটির মান সবচেয়ে ছোট হয়। নিচের উদাহরণে আমরা 8 নম্বর সন্নিবেশ করি।

উদাহরণ

ইমপোর্ট heapqH =[21,1,45,78,3,5]# একটি heapheapq.heapify(H)মুদ্রণ(H)# elementheapq.heappush(H,8)print(H) যোগ করুন

আউটপুট

উপরের কোডটি কার্যকর করা হলে, এটি নিম্নলিখিত ফলাফল তৈরি করে -

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

স্তূপ থেকে সরানো হচ্ছে

আপনি এই ফাংশনটি ব্যবহার করে প্রথম সূচকে উপাদানটি সরাতে পারেন। নীচের উদাহরণে ফাংশনটি সর্বদা সূচী অবস্থান 1 এ উপাদানটিকে সরিয়ে দেবে।

উদাহরণ

 heapqH আমদানি করুন =[21,1,45,78,3,5]# heapheapq.heapify(H)print(H)# heapheapq.heappop(H)print(H) থেকে উপাদান সরান

আউটপুট

উপরের কোডটি কার্যকর করা হলে, এটি নিম্নলিখিত ফলাফল তৈরি করে -

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

একটি স্তূপে প্রতিস্থাপন করা হচ্ছে

heapreplace ফাংশন সর্বদা স্তূপের ক্ষুদ্রতম উপাদানটিকে সরিয়ে দেয় এবং কোনো ক্রম দ্বারা স্থির নয় এমন জায়গায় নতুন আগত উপাদান সন্নিবেশ করায়৷

উদাহরণ

 heapqH =[21,1,45,78,3,5]# heapheapq.heapify(H)print(H)# একটি elementheapq.heapreplace(H,6)print(H) প্রতিস্থাপন করুন> 

আউটপুট

উপরের কোডটি কার্যকর করা হলে, এটি নিম্নলিখিত ফলাফল তৈরি করে -

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

  1. হিপ চেক করার প্রোগ্রামটি পাইথনে সর্বোচ্চ হিপ তৈরি করছে নাকি নয়

  2. হিপ সাজানোর জন্য পাইথন প্রোগ্রাম

  3. কিউ মডিউল ব্যবহার করে পাইথনে স্ট্যাক এবং কিউ

  4. পাইথন হিপ কিউ অ্যালগরিদম