অ্যালগরিদম এনালাইসিস

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

মনে করো আমরা একটা প্রোগ্রাম লিখলাম এবং সেখানে অনেক গুলো নির্দেশাবলী (Instructions) লিখেছি কোন একটা সমস্যা সমাধান করার জন্য। যখন আমরা এই প্রোগ্রামটাকে কম্পিউটারে রান করবো তখন দেখতে পারবো যে আমাদের সমস্যাটা সমাধান হচ্ছে। কিন্তু এটা অনেক সময় নিচ্ছে।এখন আমাদের খুঁজে বের করতে হবে কেন সময় বেশি নিচ্ছে বা কোন বিশেষ(Particular) নির্দেশাবলী পরিবর্তন করলে বা একটু ঘুরিয়ে লিখলে সেই সমস্যাটা সমাধান হবে, সাথে সাথে আমাদের সময়টাও কমবে।
এই যে চিন্তাভাবনা বা পড়াশোনা করা বা নির্দেশাবলী গুলোকে এনালাইসিস করার ক্ষমতকাকেই অ্যালগরিদম এনালাইসিস বা পারফরমেন্স(Performance) বলা হয়।

মনে করো একটা নিদিষ্ট সমস্যার অনেক গুলো সমাধান থাকতে পারে।

এখন আমাদের গাণিতিক প্রমাণ দিয়ে বের করতে হবে যে কোন সমাধানটা বেটার। এখানে Sn1, Sn2 এবং Sn3 কিন্তু নিদিষ্ট সমস্যাটা সমাধান করতে পারে। তাহলে একটা নিদিষ্ট সমস্যার জন্য এরকম একাধিক সমাধান থাকতে পারে। এর জন্য আমাদের খুঁজে বের করতে হবে কোন সমাধানটা স্মার্ট এবং কম সময়ে সঠিক রেজাল্ট দিবে।
ধরি, এই সমস্যাটা হচ্ছে চা বানানো। আমরা জানি অনেকভাবেই চা বানানো যায় ছবির মত।

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

এখন এই স্মার্ট সমাধান বের করতে হলে আমাদের ২ টা গুরুত্বপুর্ণ টপিক মাথায় রাখতে হবে।
1. Execution Time (CPU Time)
2. Memory Space
পার্সোনাল কাজে হয়ত মেমোরি নিয়ে খুব বেশি চিন্তা করার দরকার হয় না কিন্তু প্রফেশনাল বা অফিশিয়াল কাজে ২ টাই মাথায় রাখতে হয়।
আমি একটা প্রোগ্রাম লিখলাম যে প্রোগ্রামটা দ্রুত রেজাল্ট দিচ্ছে কিন্তু বিশাল মেমোরি লাগতেছে। তাহলে সেই প্রোগ্রামটা হয়ত মোবাইল ডিভাইসে এ ব্যবহার করতে পারবো না। র‍্যাম সর্টেজ দেখা দিবে।
তাহলে আমি দ্রুত সমাধান করছি কিন্তু মেমোরির দিকে তাকাচ্ছি না। সেই সমাধান কে অবশ্যই স্মার্ট সমাধান বলা যাবে না।

কোন প্রোগ্রাম লিখার সময় Execution Time এবং Memory Space ছাড়াও আমাদের আরো কিছু গুরুত্বপুর্ণ টপিক মাথায় রাখতে হবে।
১। Correctness: আমরা একটা প্রোগ্রাম লিখলাম যেটা ভালো পারফরমেন্স দেয় কিন্তু সঠিক রেজাল্ট দেয় না। তাহলে সেই অ্যালগরিদম এর কোন ভ্যালু নেই।
২। Modularity: আমরা একটা প্রোগ্রাম লিখলাম কিন্তু সেটাতে নতুন কোন ফিচার এড করতে করতে গেলে সমস্যা বা নতুন করে আবার প্রোগ্রাম লিখতে হয়। তাহলে সেই অ্যালগরিদম এর কোন ভ্যালু নেই।
৩। Scalability: আমরা একটা প্রোগ্রাম লিখলাম যে প্রোগ্রামটা একজন ইউজার ব্যবহার করতে পারে এবং খুব ভালো পারফরমেন্স দিচ্ছে, কিন্তু একাধিক ইউজার ব্যবহার করলে সেই স্মার্ট পারফরমেন্স টা দিচ্ছে না। তাহলে সেই অ্যালগরিদম এর কোন ভ্যালু নেই।

সুতরাং এরকম অনেক গুরুত্বপুর্ণ টপিক আছে অ্যালগরিদম লেখার সময় মাথায় রাখতে হয়।

রিলেটেড পোস্ট

অ্যালগরিদম কাকে বলে? পর্ব ০১

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

অ্যালগরিদম লিখার নিয়ম ও কয়েকটি অ্যালগরিদম

আমরা জানি অ্যালগরিদম নিদিষ্ট কোন সমস্যা কে সমাধান করার কিছু ধাপ। আপনি যে ল্যাঙ্গুয়েজ পারেন, সেই ল্যাঙ্গুয়েজ দিয়ে অ্যালগরিদমের ধাপ গুলো এক্সিকিউট করলে সেই নিদিষ্ট সমস্যার সমাধান পাবেন।