যারা ম্যাথ বা গণিতের পটু নন কিংবা যারা প্রোগ্রামিং সেক্টরে নেই তাদের কাছে এই অ্যালগোরিদম কথাটি বেশ অন্যরকম মনে হতে পারে। আবার আজ আমি কথা বলতে চলে এলাম কম্পিউটার অ্যালগোরিদম নিয়ে। আর শুরুতেই বলে নিচ্ছি আমি কিন্তু ম্যাথ বা কম্পিউটার সাইন্সের টিচার নই, তাই পোস্টে বলা সকল ক্ষেত্রগুলো আমি রিসার্চ করে পেয়েছি। যারা এই সেক্টরগুলোতে রয়েছেন তারা আমার আজকের পোস্টে কোনো ভুল থাকলে অবশ্যই কমেন্ট সেকশনে সেটা বলে দিবেন। আমি আজকের পোস্টে কম্পিউটার অ্যালগোরিদমকে আপনাদের সামনে যতটুকু সহজ ভাষায় সম্ভব ততটুকু ভাবে উপস্থাপন করার চেষ্টা করব!
কম্পিউটার অ্যালগোরিদম
কম্পিউটার অ্যালগোরিদম কথাটি দুটি শব্দের সাহায্যে গঠিত। একটি হচ্ছে কম্পিউটার এবং অপরটি হচ্ছে অ্যালগোরিদম। কম্পিউটার কি সে সম্পর্কে আমরা সবাই টুকিটাকি ধারণা রাখি তাই এটা নিয়ে কিছু বললাম না । অন্যদিকে অ্যালগোরিদম হচ্ছে—একটি গাণিতিক পরিভাষা। কম্পিউটার অ্যালগোরিদম হচ্ছে একটি কম্যান্ডের সেট যা কম্পিউটারকে আমরা নির্দেশ হিসেবে প্রদান করে থাকি। কম্পিউটার প্রোগ্রামিং সেক্টরে এই অ্যালগোরিমের বেশি ব্যবহূত হয়ে থাকে, তবে ফাইল কমপ্রেস এবং ডাটা এনক্রিপ্টশনেও এই অ্যালগোরিদম বেশ গুরুত্বপূর্ণ ভূমিকা রেখে থাকে।
কম্পিউটারকে দিয়ে কোনো কাজ করাতে চাইলে আপনাকে কম্পিউটার প্রোগ্রাম লিখতে হবে। কম্পিউটার প্রোগ্রাম লেখার জন্য আপনাকে স্টেপ বাই স্টেপ সঠিক কাজের নির্দেশনাগুলোকে লিখতে হবে। তারপরই কম্পিউটার এই প্রোগ্রামটিকে চালায় এবং আপনার উক্ত কাজটি কম্পিউটার করে ফেলে। এখানে লক্ষণীয় বিষয় হচ্ছে—প্রোগ্রামের মাধ্যমে শুধু আপনি কম্পিউটারকে কি কি করতে হবে সেটাই বলছেন না; কীভাবে কাজগুলো করতে হবে সেটাও বলে দিচ্ছেন। আর এই ‘কীভাবে’ কাজগুলো করতে হবে এখানেই আসে কম্পিউটার অ্যালগোরিদম। একটি প্রোগ্রামের কমান্ডগুলোকে কীভাবে কোন স্টেপ কোনটার আগে হবে বা পরে হবে সেটাই আপনি কম্পিউটার অ্যালগোরিদমের মাধ্যমে কম্পিউটারকে বুঝিয়ে থাকেন।
একটি বাস্তব ঘটনার মাধ্যমে এই অ্যালগোরিদমকে আপনাদের সামনে উপস্থাপন করার চেষ্টা করছি। ধরুন এয়ারপোর্টে আপনার একজন বন্ধু বিদেশ থেকে আসছে, এবার এয়ারপোর্ট থেকে বন্ধুটিকে আপনার বাসায় আসতে হবে। আর আপনার বাসায় আসতে গেলে চারটি ভিন্ন ভিন্ন উপায়ে সে আসতে পারবে। এই সম্পূূর্ণ ঘটনাটি কম্পিউটারকে বুঝাতে গেলে আপনার দরকার হবে চারটি (৪) অ্যালগোরিদম! এগুলো হচ্ছে—
ট্যাক্সি অ্যালগোরিদম
ট্যাক্সি স্ট্যান্ডে যেতে হবে, একটি ট্যাক্সিতে উঠতে হবে, ড্রাইভারকে গন্তব্যস্থলের ঠিকানা দিতে হবে
কল মি অ্যালগোরিদম
প্লেন থেকে নেমে আমাকে ফোন দিতে হবে, এয়ারপোর্টের ব্যাগেজ স্টোরের সামনে আমার সঙ্গে দেখা করতে হবে
রেন্ট-এ-কার অ্যালগোরিদম
এয়ারপোর্টের পাশের রেন্টাল কার প্রতিষ্ঠানে যেতে হবে, একটি গাড়ি রেন্ট করতে হবে, জিপিএসে ঠিকানা প্রবেশ করে এটা ফলো করে গন্তব্যস্থলে চলে আসতে হবে।
বাস অ্যালগোরিদম
এয়ারপোর্ট থেকে বাস নাম্বার ৭০-এ উঠতে হবে, মহাখালীতে নেমে যেতে হবে এবং লেগুনায় উঠতে হবে, শ্যামলীতে নেমে যেতে হবে এবং হেঁটে শ্যামলী পার্কের পাশে আসতে হবে, পার্কের পাশে এসে ১৪ নম্বর রোডে ঢুকে আমার বাসায় চলে আসতে হবে।
লক্ষ্য করে দেখুন যে, এই চারটি ভিন্ন ভিন্ন পদ্ধতির শেষ ঠিকানা কিন্তু একটিই, কিন্তু প্রতিটি অ্যালগোরিদম কাজগুলোকে একদমই আলাদাভাবে করে থাকে। প্রতিটি অ্যালগোরিদমের খরচ এবং সময় ভিন্ন ভিন্ন হবে। টেক্সি নিয়ে চলে আসার অ্যালগোরিদমটি সব থেকে দ্রুত সিদ্ধান্ত হবে কিন্তু এতে খরচ হবে বেশি, আবার বাস অ্যালগোরিদমটিতে খরচ সব থেকে কম হবে কিন্তু এতে সময় লাগবে প্রচুর। এভাবেই কোনো প্রোগ্রাম বানানোর সময় পারিপার্শ্বিক অবস্থাকে বিবেচনা করে সঠিক অ্যালগোরিদম নির্বাচন করে থাকেন প্রোগ্রামাররা।
আর কম্পিউটার প্রোগ্রামিংয়ে এই অ্যালগোরিদমকে বিভিন্ন পদ্ধতিতে ব্যবহার করা যায়। আর এই পদ্ধতিগুলোর নিজস্ব সুবিধা এবং অসুবিধা দুটোই রয়েছে। আর কোনো প্রোগ্রামিংয়ে বিভিন্ন অ্যালগোরিদমকে ব্যবহার করা হয় Sorting এর কাজ করার জন্য। কারণ কম্পিউটার যে কোনো প্রোগ্রামের কমান্ড লিস্টগুলোকে সঠিকভাবে সর্টিং করার জন্য প্রচুর সময় ব্যয় করে থাকে। Sorting করার জন্য পাঁচ ধরনের অ্যালগোরিম ব্যবহূত হয়ে থাকে! এগুলো হচ্ছে—Bin sort, Merge sort, Bubble sort, Shell sort, Quicksort
আপনার যদি লক্ষাধিক ইন্টেগার থাকে যাদের ভ্যালু ১ এবং ১০ এর মধ্যে সীমাবদ্ধ রয়েছে এগুলোকে সর্টিং করার জন্য আপনার সব থেকে বেস্ট মেথড হবে bin sort অ্যালগোরিদম। অন্যদিকে আপনার যদি লক্ষাধিক বুক টাইটেল থাকে তাহলে এগুলোকে সর্টিং করার জন্য আপনার সব থেকে বেস্ট মেথড হবে quicksort অ্যালগোরিদম। আর এই অ্যালগোরিদমের সুবিধা ও অসুবিধা জেনেই একজন প্রোগ্রামার সঠিক অ্যালগোরিদমকে ব্যবহার করে থাকে।
সব থেকে সহজ ভাষায় যদি বলি তাহলে কম্পিউটার অ্যালগোরিদম হচ্ছে রেসিপি। রেসিপির সাহায্যে আমরা যেমন সুন্দর করে রান্না করতে পারি, ঠিক তেমনি কম্পিউটার অ্যালগোরিদম একটি কম্পিউটার প্রোগ্রামকে সুন্দর করে সাজাতে সাহায্য করে থাকে। তবে কম্পিউটার অ্যালগোরিদম যে শুধু প্রোগ্রামারদেরকেই সাহায্য করে থাকে সেটা নয়, নন-প্রোগ্রামার বা সাধারণ কম্পিউটার ব্যবহারকারীরাও এই অ্যালগোরিদম থেকে বিভিন্ন সুবিধা পেয়ে থাকেন।
সাধারণ কম্পিউটার ব্যবহারকারীরা (যেমন আমার মতো) মূলত দুটি ধরনের অ্যালগোরিদমের সাহায্য প্রতিদিনই পেয়ে থাকি। এগুলো হচ্ছে—
১. সার্চ ইঞ্জিন অ্যালগোরিদম :সার্চ ইঞ্জিন অ্যালগোরিদম আমাদের সাধারণ কম্পিউটার ব্যবহারকারীদের প্রতিদিনের জীবনে সব থেকে বেশি ব্যবহূত হয়ে থাকে। বিভিন্ন সার্চ ইঞ্জিন সঠিকভাবে কাজ করার জন্য এই অ্যালগোরিদম ব্যবহূত হয়ে থাকে। ভিজিটরের কিওয়ার্ড কে সার্চ ইঞ্জিনের ডাটাবেসে খুঁজে নিয়ে সঠিক ওয়েবপেজগুলোকে ভিজিটরের সামনে উপস্থাপন করাই হচ্ছে—
সার্চ ইঞ্জিন অ্যালগোরিদমের কাজ। আর এই কাজগুলো চোখের পলকেই হয়ে থাকে। এই জিনিসটি আসলেই বেশ চমকপ্রদ।
২. এনক্রিপ্টশন অ্যালগোরিদম :কম্পিউটার ইনফরমেশনগুলোকে দুর্বোধ্য বা সাধারণ মানুষ সহজেই বুঝতে পারবে না এমন ভাষায় টান্সফরম করার কাজে এই অ্যালগোরিদমটি ব্যবহূত হয়। বিভিন্ন এনক্রিপ্টশন সফটওয়্যারে এই অ্যালগোরিদমটি ব্যবহূত হয়ে থাকে। এর মাধ্যমে হ্যাকারদের হাত থেকে গুরুত্বপূর্ণ তথ্যগুলোকে সুরক্ষিত রাখা হয়।
এই ছিল কম্পিউটার অ্যালগোরিদম নিয়ে বেসিক ধারণা। আশা করব আমার মতো যারা প্রোগ্রামার নন কিংবা কম্পিউটার অ্যালগোরিদম সম্পর্কে আগে ধারণা ছিল না তারা এই পোস্টটি পড়ে কম্পিউটার অ্যালগোরিদম সম্পর্কে প্রাথমিক ধারণা নিতে পেরেছেন।
আর প্রোগ্রামার ছাড়া আমাদের মতো সাধারণত কম্পিউটার ব্যবহারকারীদের কম্পিউটার অ্যালগোরিদম সম্পর্কে বিস্তারিত ধারণা নেওয়ার প্রয়োজন পড়বে না। ওপরের বিষয়গুলো ছাড়াও কম্পিউটার অ্যালগোরিদম আমাদের ডিজিটাল লাইফের সর্বত্রই ছড়িয়ে রয়েছে। যেমন—ফিটবিট ডিভাইসের অ্যালগোরিদমের সাহায্যে আমরা আমাদের স্বাস্থ্যের ওপর খেয়াল রাখতে পারছি। অনলাইন শপিং করতে গিয়ে অ্যালগোরিদমের সাহায্যে আমরা দ্রুত সময়ে সঠিক মূল্যে সঠিক পণ্যটি খুঁজে পেতে পারছি।
তবে হ্যাঁ এই ক্ষেত্রে অ্যালগোরিদম পরোক্ষভাবে আমাদের উপকার করে আসছে। আবার সবকিছুরই যেমন ভালো এবং খারাপ দিক রয়েছে; ঠিক তেমনটি প্রায়ই সময় অ্যালগোরিদমকেও এই খারাপ ধাপে ব্যবহার করা হয়ে থাকে। যেমন—মানুষের ডিজিটাল প্রাইভেসি ভঙ্গ করতে অনেকে অ্যালগোরিদমের সাহায্য নিয়ে থাকেন, ক্ষতিমূলক হ্যাকিং চালাতেও অ্যালগোরিদমের ব্যবহার হয়ে থাকে।
এখানে লক্ষ্য করলে দেখবেন যে, অ্যালগোরিদমের নিজস্ব কোনো খারাপ দিক নেই, মানুষরাই একে খারাপ এবং একই সঙ্গে ভালো পথে ব্যবহার করছে। আর বর্তমানে মানুষের পাশাপাশি AI বা আর্টেফিশিয়াল ইন্টেলিজেন্সগুলোকেও অ্যালগোরিদম শেখানো হচ্ছে যাতে তারা আমাদের ডিজিটাল লাইফকে আরো সহজ করে দিতে পারে।