একটি সমস্যা বিভিন্ন এলগরিদম ব্যবহারের মাধ্যমে দক্ষতার সাথে যে সমাধান করা সম্ভব তা দেখার জন্য, চল ছোট একটি খেলা করা যাক। এই কম্পিউটারটি 1 থেকে 16 এর মধ্যে যে কোন একটি পূর্ণ সংখ্যা নির্বাচন করবে। কম্পিউটারটি যে সংখ্যাটি নির্বাচন করেছে, সেই সংখ্যাটি খুঁজে বের না করা পর্যন্ত তোমাকে বিভিন্ন সংখ্যা আন্দাজ করতে হবে:
সঠিক সংখ্যাটি খুঁজে পেলে বলতে হবে যে—কোন পদ্ধতিটি ব্যবহার করে পরের সংখ্যাটি আন্দাজ করা হয়েছে?
ধরা যাক তুমি শুরুতে 1, তারপরে 2, তারপরে 3, তারপরে 4 এবং এভাবেই সঠিক সংখ্যাটি আন্দাজ না পর্যন্ত, তুমি তোমার সংখ্যা আন্দাজ করা চালিয়েই গেছ। আমরা এটিকে লিনিয়ার সার্চ বলে থাকি, কারণ তুমি সংখ্যাগুলো এমনভাবে আন্দাজ করেছ, যেন সংখ্যাগুলো এক সারিতে আছে। এটাতে কাজ হতে পারে। কিন্তু সর্বোচ্চ কতগুলো সংখ্যা তুমি অনুমান করতে পারবে? যদি কম্পিউটারটি 30 সংখ্যাটি নির্বাচন করে থাকে, তাহলে তোমাকে 30 টি সংখ্যা আন্দাজ করতে হবে। আবার তোমার ভাগ্য যদি ভাল থাকে, কম্পিউটারটি হয়তো 1 সংখ্যাটি নির্বাচন করবে এবং প্রথমবার অনুমান করেই তুমি সংখ্যাটি বের করতে পারবে। গড়ে তাহলে কি হবে? কম্পিউটার যদি 1 থেকে 30 এর মধ্যে যে কোন একটি সংখ্যা নির্বাচন করে থাকে, তাহলে তোমাকে গড়ে 15 টি সংখ্যা আন্দাজ করতে হবে।
কিন্তু 1, 2, 3, 4, … এভাবে আন্দাজ না করে তুমি আরও কার্যকরভাবে এটি সমাধান করতে পার, তাই না? যেহেতু কম্পিউটার তোমাকে বলে দিচ্ছে যে, তোমার আন্দাজ করা সংখ্যাটি খুব ছোট, খুব বড় কিংবা সঠিক, তাহলে তুমি 15 থেকে আন্দাজ করা শুরু করতে পার। কম্পিউটারের নির্বাচন করা সংখ্যাটি যদি 15 এর থেকে কম হয় এবং কম্পিউটার বলে দেবার কারণে তুমি জানো যে 15 সংখ্যাটি অনেক বড়, তাহলে তুমি 15 থেকে 30 পর্যন্ত সংখ্যাগুলো বাদ দিতে পার। কম্পিউটারের নির্বাচন করা সংখ্যাটি যদি 15 এর থেকে বেশি হয় তাহলে তুমি 1 থেকে 15 পর্যন্ত সংখ্যাগুলো বাদ দিয়ে দিতে পার। উভয়ই ক্ষেত্রেই তুমি অর্ধেক সংখ্যা বাদ দিয়ে দিতে পারছ। পরের বার সংখ্যা আন্দাজ করার সময়, বাকি থাকা সংখ্যাগুলোর মধ্যে থেকে আর অর্ধেক সংখ্যা বাদ দিয়ে দিবে। এভাবেই বাকি থাকা সংখ্যাগুলোর মধ্যে থেকে অর্ধেক সংখ্যা বাদ দিয়ে যেতে থাক। আমরা এই পদ্ধতিকে বাইনারি সার্চ বলি এবং 1 থেকে 30 এর মধ্যে যে সংখ্যাটিই কম্পিউটার নির্বাচন করুক না কেন, তুমি এই পদ্ধতি অনুসরণ করলে সর্বোচ্চ 5 বার সংখ্যা অনুমান করার মাধ্যমে তুমি সঠিক সংখ্যাটি খুঁজে বের করতে পারবে।
এখন 1 থেকে 300 এর মধ্যে একটি সংখ্যা নিয়ে চেষ্টা করা যাক। সংখ্যাটি 9 বারের বেশি অনুমান করা লাগবে না।
এইবার সঠিক সংখ্যাটি নির্ণয় করার জন্য কত বার অনুমান করতে হল? কেন 9 বারের বেশি অনুমান করতে হয়নি? (তুমি কি এর একটি গানিতিক ব্যাখ্যা চিন্তা করতে পার)?
আমরা আবার বাইনারি সার্চে ফিরে আসব এবং আমরা জাভাস্ক্রিপ্ট অ্যারেতে কোন কিছু খুঁজে বের করার জন্য কিভাবে এই বাইনারি সার্চ ব্যবহার করতে পারি তা দেখবো। কিন্তু প্রথমে আমরা অ্যালগোরিদম সম্পর্কিত বড় সমস্যাগুলো দেখবো।

এই বিষয়বস্তুটি Dartmouth Computer Science এর প্রফেসর Thomas Cormen এবং Devin Balkcom এর সহযোগিতায় এবং একই সাথে খান একাডেমির কম্পিউটিং শিক্ষাক্রম দলের একসাথে কাজ করার মাধ্যমে তৈরি করা হয়েছে। এই বিষয়বস্তু CC-BY-NC-SA দ্বারা লাইসেন্সকৃত।