কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে Priority Queue (প্রায়োরিটি কিউ) কনসেপ্ট


Priority Queue: ধারণা ও কনসেপ্ট

Priority Queue (প্রায়োরিটি কিউ) হলো একটি অ্যাবস্ট্রাক্ট ডেটা টাইপ যা রেগুলার কিউ বা স্ট্যাকের মতোই, কিন্তু এখানে প্রতিটি এলিমেন্টের সাথে একটি "Priority" (প্রায়োরিটি) যুক্ত থাকে।

কীভাবে কাজ করে?

  • উচ্চ প্রায়োরিটি = প্রথম সার্ভিস: যেই এলিমেন্টের প্রায়োরিটি বেশি, সেটিই প্রথমে ডিকিউ/প্রসেস হয়।
  • সমান প্রায়োরিটি = FIFO: যদি দুটি এলিমেন্টের প্রায়োরিটি সমান হয়, তবে যেটি আগে ইনসার্ট হয়েছিল (First-In) সেটিই আগে বের হবে (First-Out)।

রিয়েল-ওয়ার্ল্ডAnalogy

হাসপাতালের ইমার্জেন্সি রুম (ER):

  • সাধারণ রোগী (Low Priority) -> অপেক্ষা করে।
  • হৃদরোগী/অ্যাকসিডেন্ট ভিক্টিম (High Priority) -> তত্ক্ষণাৎ চিকিৎসা।
  • এখানে "Arrival Time" না, "Severity" প্রায়োরিটি নির্ধারণ করে।

ইমপ্লিমেন্টেশন পদ্ধতিসমূহ

  1. Array (Sorted): ইনসারশন সর্ট লজিক — O(n) Enqueue, O(1) Dequeue।
  2. Array (Unsorted): O(1) Enqueue, O(n) Dequeue (লিনিয়ার সার্চ)।
  3. Binary Heap (Recommended): O(log n) Enqueue & Dequeue — সবচেয়ে কার্যকর।
  4. Linked List (Sorted): O(n) Enqueue, O(1) Dequeue।
  5. Balanced BST: O(log n) সব অপারেশন।

জাভাস্ক্রিপ্টে কোনটি ব্যবহার করবেন?

পরিস্থিতি Recommended Approach
লার্নিং / অ্যালগরিদম প্র্যাকটিস Sorted Array (সিম্পল, বোঝা সহজ)
স্মল ডেটা (< 1000 এলিমেন্ট) Sorted Array বা Native Array + Sort
প্রোডাকশন / বড় ডেটা / হাই ফ্রিকোয়েন্সি Binary Heap (npm: priorityqueue, heap, heap-js)
TypeScript + Type Safety Generic PriorityQueue Class with Heap

Priority Queue Operations Summary

অপারেশন বর্ণনা
enqueue(data, priority) প্রায়োরিটি দিয়ে এলিমেন্ট যোগ
dequeue() সর্বোচ্চ প্রায়োরিটিওয়ালা এলিমেন্ট সরিয়ে রিটার্ন
peek() সর্বোচ্চ প্রায়োরিটিওয়ালা এলিমেন্ট দেখা (রিমুভ নেই)
isEmpty() কিউ খালি কিনা
isFull() কিউ ফুল কিনা (ক্যাপাসিটি লিমিট থাকলে)
clear() সব এলিমেন্ট মুছে ফেলা
size() বর্তমান এলিমেন্ট সংখ্যা

JavaScript-এ নেটিভ Priority Queue নেই

JavaScript-এ বিল্ট-ইন PriorityQueue ক্লাস নেই। আপনাকে কাস্টম ইমপ্লিমেন্ট করতে হবে বা লাইব্রেরি ব্যবহার করতে হবে।

Quick Start with Heap (Production Ready)

// npm install heap-js
import { Heap } from 'heap-js';

const priorityQueue = new Heap((a, b) => b.priority - a.priority); // Max-Heap

priorityQueue.push({ task: "Email", priority: 1 });
priorityQueue.push({ task: "Server Crash", priority: 10 });
priorityQueue.push({ task: "Meeting", priority: 5 });

console.log(priorityQueue.pop()); // { task: 'Server Crash', priority: 10 }
console.log(priorityQueue.peek()); // { task: 'Meeting', priority: 5 }
  1. জাভাস্ক্রিপ্টে কিউ (Queue) বাস্তবায়ন

  2. জাভাস্ক্রিপ্টে new.target

  3. জাভাস্ক্রিপ্টে debugger স্টেটমেন্ট

  4. জাভাস্ক্রিপ্টে image() অবজেক্ট