লিনিয়ার সার্চ (Linear Search):
লিনিয়ার সার্চ হচ্ছে সার্চ এলগরিদম গুলোর ভিতরে অন্যতম সিম্পল সার্চ এলগরিদম । লিনিয়ার সার্চে আমরা একটি লিস্টের এলিমেন্টগুলোকে স্ক্যান করতে থাকি এবং আমাদের দরকার এমন একটি এলিমেন্টকে খুঁজতে থাকি । যদি এলিমেন্টটি পাওয়া যায় তাহলে লিনিয়ার সার্চ সেই এলিমেন্টটার ইন্ডেক্স রিটার্ন করে আর যদি না পায় তবে -1 রিটার্ন করে । -1 এর অর্থ হচ্ছে এলিমেন্টটি লিস্টে খুজে পাওয়া যায় না।
উদাহরণ স্বরূপ বলা যায়, আপনি যদি এলোমেলোভাবে খোঁজো তাহলে বইটি পেতেও পারেন আবার না পেতেও পারেন। কিন্তু তুমি যদি বুক সেলফের এক প্রান্ত থেকে খুঁজতে শুরু করেন শেষ প্রান্ত পর্যন্ত খোঁজা হয়, তাহলে নিশ্চিত ভাবে বলা যায় বইটি লাব্রেরিতে থাকলে আপনি অবশ্যই পাবেন। এটাই হল linier search প্রক্রিয়া।
বাইনারি সার্চ (Binary Search):
বাইনারি সার্চ হলো কম্পিউটার সাইন্সের (Computer Science) কিছু ফান্ডামেন্টাল অ্যালগরিদম গুলোর মধ্যে অন্যতম। একটি বাইনারি সার্চ হল একটি অনুসন্ধান যেখানে মধ্যবর্তী উপাদানটি অনুসন্ধান করা উপাদানটির চেয়ে ছোট বা বড় কিনা তা পরীক্ষা করার জন্য গণনা করা হয়। বাইনারি অনুসন্ধান ব্যবহার করার প্রধান সুবিধা হল এটি তালিকার প্রতিটি উপাদান স্ক্যান করে না। প্রতিটি উপাদান স্ক্যান করার পরিবর্তে, এটি তালিকার অর্ধেক অনুসন্ধান করে। সুতরাং, বাইনারি অনুসন্ধান একটি লিনিয়ার অনুসন্ধানের তুলনায় একটি উপাদান অনুসন্ধান করতে কম সময় নেয়।
বাইনারি অনুসন্ধানের একটি পূর্বশর্ত হল যে একটি অ্যারে সাজানো ক্রমে হওয়া উচিত, যেখানে লিনিয়ার অনুসন্ধানটি সাজানো এবং সাজানো না হওয়া অ্যারে উভয় ক্ষেত্রেই কাজ করে। বাইনারি সার্চ অ্যালগরিদম ডিভাইড অ্যান্ড কনক্যুয়ার টেকনিকের উপর ভিত্তি করে তৈরি, যার মানে এটি অ্যারেটিকে পুনরাবৃত্তভাবে ভাগ করবে।
লিনিয়ার এবং বাইনারি সার্চের মধ্যে পার্থক্যঃ
লিনিয়ার সার্চ এবং বাইনারি সার্চের মধ্যে প্রধান পার্থক্য হ’ল বাইনারি সার্চ উপাদানগুলির বাছাই করা তালিকা থেকে কোনও উপাদান অনুসন্ধান করতে কম সময় লাগে। লিনিয়ার এবং বাইনারি সার্চের মধ্যে পার্থক্য নিম্নরূপ-
১। লিনিয়ার সার্চে (Linear search) হল এমন একটি অনুসন্ধান যা তালিকায় উপাদানটি না পাওয়া পর্যন্ত উপাদানটিকে ক্রমানুসারে অনুসন্ধান করে তালিকায় একটি উপাদান খুঁজে পায়। অন্যদিকে, একটি বাইনারি সার্চ (Binary Search) হল এমন একটি অনুসন্ধান যা তালিকার মাঝের উপাদানটিকে পুনরাবৃত্তভাবে খুঁজে পায় যতক্ষণ না মাঝের উপাদানটি অনুসন্ধান করা উপাদানের সাথে মেলে।
২। লিনিয়ার সার্চে (Linear search) অ্যারে থেকে একটা ইলিমেন্ট খুঁজে বের করা হয় পর্যায়ক্রমিক ভাবে অ্যারেতে খুঁজে। আমরা যতক্ষণ না পর্যন্ত ইলিমেন্টটি খুজে পাবো অথবা অ্যারের শেষে না যাবো, ততক্ষণ পর্যন্ত আমাদেরকে খুঁজতে হবে।
অন্যদিকে, বাইনারি সার্চে (Binary Searching) আমরা একটি সর্টেড অ্যারে (Sorted array) ব্যবহার করি যেখানে আমরা একটি সার্চ রেঞ্জের মাঝখানের ইলিমেন্টকে সবসময় বিবেচনা করি। যদি মাঝখানের ইলিমেন্টটা আমাদের টার্গেট না হয় তবে হয় ডানে অথবা বামে যেতে হয়। সম্পূর্ণ অ্যারে ঘুরে দেখার কোন প্রয়োজন পরে না।
৩। লিনিয়ার সার্চে (Linear search) যেকোন রৈখিক ডেটা স্ট্রাকচার যেমন ভেক্টর, এককভাবে লিঙ্কযুক্ত তালিকা, ডবল লিঙ্কড তালিকাতে প্রয়োগ করা যেতে পারে। অন্যদিকে, বাইনারি সার্চ (Binary সার্চ) সেই ডেটা স্ট্রাকচারগুলিতে দ্বি-মুখী ট্রাভার্সালের সাথে প্রয়োগ করা যেতে পারে, অর্থাৎ, ফরোয়ার্ড এবং ব্যাকওয়ার্ড ট্রাভার্সাল।
৪। লিনিয়ার সার্চ ব্যবহার করা সহজ, বা আমরা বলতে পারি যে এটি কম জটিল কারণ একটি লিনিয়ার সার্চের উপাদানগুলি যে কোনও ক্রমে সাজানো যেতে পারে। অন্যদিকে, একটি বাইনারি সার্চ উপাদানগুলিকে একটি নির্দিষ্ট ক্রমে সাজাতে হবে।
৫। লিনিয়ার সার্চ বড় ডেটা সেটের জন্য উপযুক্ত নয়। আমরা যদি অ্যারের শেষ উপাদান, যেটি উপাদানটি অনুসন্ধান করতে চাই, একটি রৈখিক অনুসন্ধান প্রথম উপাদান থেকে অনুসন্ধান শুরু করবে এবং শেষ উপাদান পর্যন্ত চলবে, তাই উপাদানটি অনুসন্ধান করতে সময় লাগবে। অন্যদিকে, বাইনারি সার্চ একটি বড় ডেটা সেটের জন্য উপযুক্ত কারণ এটি কম সময় নেয়।
৬। লিনিয়ার সার্চে একক এবং বহুমাত্রিক অ্যারে উভয় ক্ষেত্রেই ব্যবহার করা যেতে পারে। অন্যদিকে, বাইনারি সার্চে শুধুমাত্র এক-মাত্রিক অ্যারেতে প্রয়োগ করা যেতে পারে।