কিউ (Queue)
ধরুন আপনি কমলাপুর স্টেশনে ট্রেনের টিকিট কাটার জন্য লাইনে দাঁড়িয়ে আছেন। যে লোকটা সবার আগে এসে লাইনে দাঁড়িয়েছে, সে সবার আগে টিকিট পাবে। এখানে কেউ মাঝখান দিয়ে লাইন ভেঙে আগে যেতে পারবে না। সবাইকে নিজের সিরিয়ালের জন্য অপেক্ষা করতে হবে।
এটাই হলো কিউ (Queue)। এর একটাই সোজা নিয়ম: ফার্স্ট ইন, ফার্স্ট আউট (First In, First Out) — সংক্ষেপে যাকে বলা হয় FIFO।
এনকিউ (Enqueue) এবং ডিকিউ (Dequeue)
এখানে মূল কাজ মূলত দুটো:
- এনকিউ (Enqueue) — লাইনের একদম পেছনে গিয়ে দাঁড়ানো (নতুন কাউকে লাইনে যোগ করা)
- ডিকিউ (Dequeue) — লাইনের একদম সামনের জনকে সার্ভিস দেওয়া (লাইন থেকে বের করে দেওয়া)
এছাড়াও আপনি পিক (Peek) করতে পারেন — মানে লাইনের একদম সামনে কে আছে তাকে জাস্ট উঁকি দিয়ে দেখা, কিন্তু বের না করা।
কোথায় কোথায় এই কিউ ব্যবহার করা হয়?
যেখানেই সিরিয়াল বা ফেয়ার ওয়েটিং দরকার, সেখানেই কিউ লাগে! যেমন, প্রিন্টারে একসাথে অনেকগুলো প্রিন্ট দিলে সেগুলো একটা কিউতে জমা হয়। ওয়েবসাইটে অনেক রিকোয়েস্ট একসাথে এলে সেগুলো সিরিয়ালে প্রসেস হয়। আর অ্যালগরিদমের দুনিয়ায় BFS (Breadth-First Search) নামের খুব বিখ্যাত একটা টেকনিক এই কিউ ব্যবহার করে গ্রাফের লেভেল বাই লেভেল স্ক্যান করে।
← → অ্যারো কি (arrow key) ব্যবহার করুন · উপাদানগুলোতে ক্লিক করুন
কিউ-এর অপারেশনগুলো (Queue Operations)
এনকিউ আর ডিকিউ কেন O(1) হয়?
একটা কিউ সাধারণত দুটো পয়েন্টার বা ট্যাগ নজর রাখে: সামনে (front) আর পেছনে (back)। পেছনে কাউকে যোগ করতে মাত্র একটা স্টেপ লাগে। — এবং দক্ষ কিউ প্রায়ই একটা ডাবলি লিংকড লিস্ট বা সার্কুলার বাফার দিয়ে তৈরি করা হয়। আবার সামনে থেকে কাউকে বের করতেও ওই একটা স্টেপই। বাকি কাউকে এদিক-সেদিক ঠেলে সরাতে হয় না। এইজন্য এই দুটো কাজই একদম চোখের পলকে, মানে ইনস্ট্যান্ট হয়।
BFS-এর ভেতর কিউ
Breadth-First Search-এ আপনি একটা গ্রাফকে ঢেউয়ের মতো স্ক্যান করেন — প্রথমে ১ দূরত্বে থাকা সব প্রতিবেশী, এরপর ২ দূরত্বে থাকা, এইরকম। এই কাজটায় কিউ একদম খাপে খাপ মিলে যায়: নতুন যে পড়শিকে খুঁজে পাবেন তাকে লাইনের পেছনে এনকিউ করবেন, আর সামনে থেকে ডিকিউ করে তাকে এক্সপ্লোর করবেন। এতে সিরিয়াল একদম পারফেক্ট থাকে।
কিউ বনাম স্ট্যাক (Queue vs Stack)
মূল পার্থক্যটা হলো সিরিয়ালে। স্ট্যাক হলো LIFO (Last In First Out) — অর্থাৎ সবার শেষে যে আসবে সে সবার আগে যাবে, যেমন বিয়ের দাওয়াতের প্লেটের স্তূপ। আর কিউ হলো FIFO — যে আগে থেকে আছে সে আগে যাবে, যেমন ব্যাংকের লাইন। আপনার কী ধরনের কাজ দরকার, তার ওপর ভিত্তি করে দুটোই সুপার দরকারী।
Complexity
কিউ দিয়ে BFS (Breadth-First Search)
ছোট কুইজ
পড়া চালিয়ে যান