Thursday 15 July 2021

লিনিয়ার সার্চ (Linear Search)

linear search algorithm in javascript, shakilbaburjhuli, shakil babu, shakil, babu,

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

এখন আপনি যদি অ্যালবামের শুরু থেকে ছবিটা খুজতে থাকেন তাহলে হয়তো প্রথমেই পেতে পারেন অথবা শেষে বা মাঝেও পেতে পারেন । যদি ছবিটি অ্যালবামে থাকে তাহলে এক সময় আপনি তা খুজে পাবেন আর যদি ছবিটা পাওয়া না যায় তাহলে সহজেই বলতে পারেন যে ছবিটা অ্যালবামে নেই বাঁ পাওয়া যায় নাই ।

এই যে,  আপনি অ্যালবামের শুরু থেকে একটির পর একটি ছবিটি খুজতেছেন এই প্রক্রিয়াকেই বলে লিনিয়ার বা সিকোয়েন্সিয়াল সার্চ । যদি বাংলায় বলা হয় তাহলে হবে একাধারে বাঁ একটির পর একটি খোজ করা । এখন যদি আমরা অ্যালবামকে একটি অ্যারে হিসেবে বিবেচনা করি তাহলে প্রত্যেকটা প্লেয়ার হবে অ্যারের এলিমেন্ট বাঁ উপাদান । এবং অ্যারেটা হবে এইরকম -

let players = ["warner","rohit","mustafizur","sakib","bravo","taylor"];

এখন এই অ্যারে থেকে আমি "sakib" কে খুজে বের করতে চাচ্ছি । তাহলে আমাকে অ্যারের প্রথম উপাদান থেকে খোজা শুরু করতে হবে যা লিনিয়ার সার্চের বৈশিষ্ট । দেখতে পাচ্ছি উপরোক্ত অ্যারের প্রথম ইনডেক্সে অর্থাৎ 0 নাম্বার ইনডেক্সে "warner" আছে যা "sakib" নাহ । তাই প্রথম ইনডেক্স হবে নাহ কারণ কন্ডিশন মিথ্যা -

linear search in javascript, shakilbaburjhuli, shakilbabu,data structures in javascript

 

অ্যারের পরের উপাদান হচ্ছে "rohit" যা "sakib" নাহ তাহলে এই কন্ডিশনও মিথ্যা -
linear and binary search in javascript, javascript bangla, javascript, shakilbabu

সেইমভাবে 2 নাম্বার ইনডেক্সের কন্ডিশনও মিথ্যা । এইভাবে একাধারে অর্থাৎ একটার পর একটা খোজ করতেই থাকবে যতক্ষণ নাহ পর্যন্ত কাঙ্ক্ষিত রেজাল্ট পাওয়া যায় । অবশেষে 3 নাম্বার ইনডেক্সের উপাদানই হচ্ছে আমাদের কাঙ্ক্ষিত উপাদান -
লিনিয়ার সার্চ (Linear Search) , linear search bangla, linear search in javascript

 

এখন আমরা লিনিয়ার সার্চ অ্যালগরিদম লিখব এবং তা ইমপ্লিমেন্ট করবো ।

- লিনিয়ার সার্চ অ্যালগরিদম -

shakilbaburjhuli, shakilbabu, shakil, babu, linear search bangla

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

const linearSearch = (arr,searchItem) => {
    for(let i = 0; i<arr.length; i++){
        if(arr[i] === searchItem){
            return i;
        }
    }
    return -1;
}

এটাই লিনিয়ার সার্চ অনেক সোজা তাই নাহ ? এখন আমি একটু চেক করি যে আউটপুট ঠিকঠাক দেয় কি নাহ -

let players = ["warner","rohit","mustafizur","sakib","bravo","taylor"];
const res = linearSearch(players, 'sakib');
console.log(res);
// Output : 3

এখন এমন একটি ভ্যালু পাস করি যা উপরোক্ত অ্যারেতে নেই -

let players = ["warner","rohit","mustafizur","sakib","bravo","taylor"];
const res = linearSearch(players, 'shakil');
console.log(res);
// output: -1

যেহেতু, 'shakil' নামে কোনো উপাদান অ্যারেতে নেই তাই আউটপুটে আমরা -1 পেয়েছি যা আমাদের পাওয়ার কথা ছিলো । আশা করি আপনারা লিনিয়ার সার্চ অ্যালগরিদমটি বুঝতে পারছেন ।

 

- লিনিয়ার সার্চের কমপ্লিক্সিটি(Complexity) -

যদি আপনি আমার আগের আর্টিকেলগুলো দেখে থাকেন টাইম এবং স্পেস কমপ্লিক্সিটি(Complexity) নিয়ে তাহলে হয়তো খুব সহজেই বলতে পারবেন লিনিয়ার সার্চের টাইম এবং স্পেস কমপ্লিক্সিটি(Complexity) কত ?

লিনিয়ার সার্চ অ্যালগরিদমের স্পেস কমপ্লিক্সিটি(Complexity) হচ্ছে অর্ডার অব ওয়ান O(1) । কারণ, প্রোগ্রামে একটি মাত্র অ্যারেই আমাদের কে নিতে হবে এবং সেই অ্যারের মাঝেই searchItem টি খুজতে থাকবে । এখানে অ্যারেতে কোনো উপাদান সংযোজন বাঁ বিয়োজন হচ্ছে নাহ, আগের যে উপাদানগুলো আছে তার ভেতরেই searchItem খুজতেছে তাই বলাই যায় অ্যারেটি কন্সট্যান্ট(Constant) ।

লিনিয়ার সার্চ অ্যালগরিদমের টাইম কমপ্লিক্সিটি(Complexity) হচ্ছে অর্ডার অব এন O(n) । যদি কমপ্লিক্সিটি(Complexity) বিষয়টি নাহ বুঝে থাকেন তাহলে নিম্নোক্ত আর্টিকেলগুলো পড়তে পারেন সব ক্লিয়ার হবে যাবে -

১। অ্যালগরিদমে টাইম কমপ্লিক্সিটি(Complexity) - পর্ব(০১) 

২। অ্যালগরিদমে টাইম কমপ্লিক্সিটি(Complexity) - পর্ব(০২)

৩। অ্যালগরিদমে স্পেস কমপ্লিক্সিটি(Complexity) 

# linear search in algorithm

# linear search in javascript


Share:

0 comments:

Post a Comment