
অ্যালগরিদম কাকে বলে? পর্ব ০১
অ্যালগরিদম নিয়ে কাজ করার পুর্বে তার ইতিহাস জানা দরকার। এই Algorithm শব্দটা এসেছে Algorimit শব্দ থেকে। এটি একটি ল্যাটিন শব্দ। একজন জনপ্রিয় লেখক মুহাম্মদ আল-খাওয়ারিজমি।তিনি ছিলেন একজন প্রখ্যাত গণিতবিদ, জ্যোতির্বিজ্ঞানী ও ভূগোলবিদ। তার একটি ম্যাথ বইয়ের ল্যাটিন ভার্সন থেকে Algorithm শব্দটা এসেছে।
অ্যালগরিদম হলো কোন একটা সমস্যা সমাধান করার কিছু নিয়ম কানুন বা ধাপ(Step) ফলো করা। সেই ধাপ গুলো সিরিয়ালি লেখা থাকে এবং কেউ যদি সেই ধাপ অনুসরণ করে এক্সিকিউট করে তাহলে সেই নিদিষ্ট সমস্যার সমাধান পাবে। আর সহজভাবে বললে-
অ্যালগরিদম কোন একটা সমস্যাকে সমাধান করে
যেমন আমাকে বলা হলো বিরিয়ানি রান্না করতে, কিন্তু আমি বিরিয়ানি রান্না করতে পারিনা। কিন্তু তিতলী খুব ভালো বিরিয়ানি রান্না করতে পারে। কিভাবে বিরিয়ানি রান্না করতে হয় সেটা তিতলী আমাকে লিখে দিলো নিচের মত করে -
১। প্রথমে একটি পাত্রে মুরগী নিয়ে তাতে একে একে আদা বাটা, রসুন বাটা, জিরা গুড়া, ধনিয়া গুড়া, টক দই, মরিচের গুড়া, জায়ফল-জয়ত্রী গুড়া, গরম মসলা গুড়া, লবণ, এবং পেঁয়াজ মরিচ বাটা মাখিয়ে এক ঘন্টা রেখে দিতে হবে।
২। তারপর একটি প্যান-এ তেল আর ঘি দিয়ে গরম হয়ে এলে পেঁয়াজ কুঁচি দিয়ে ভেজে নিতে হবে।
৩। পেঁয়াজ সামান্য ভাজা হয়ে গেলে তাতে মেরিনেট করে রাখা মুরগী সব মসলাসহ দিয়ে দিতে হবে।
৪। ......।
১, ২, ৩, ... করে বিরিয়ানি রান্না করার রেসিপি লিখে দিলো। যদি আমি সিরিয়াল মত প্রতিটা কাজ করি তাহলে বিরিয়ানি রান্না হবে। আর যদি সিরিয়াল আনুসরন না করি, প্রথমে ২ নাম্বার টা করলাম তারপর ৪ নাম্বার ধাপ টা। তাহলে কিন্তু বিরিয়ানি রান্না হবে না। কিছু একটা হবে কিন্তু বিরিয়ানি না। অর্থাৎ একটা নিদিষ্ট সমস্যাকে সমাধান করার জন্য, নিদিষ্ট কিছু নিয়মকানুন বা ধাপ অনুসরণ করতে হয়।
আমরা কোন সমস্যা গুলো সমাধান করবো বা কিভাবে সমস্যা গুলো দেওয়া থাকবে?
*সমস্যাটির ইনপুট নিদিষ্ট সীমাবদ্ধ থাকবে
যেমন আমাকে কিছু সংখ্যা দিয়ে বলা হলো, সংখ্যা গুলো কে ছোট থেকে বড় করে অথবা বড় থেকে ছোট করে সাজিয়ে দিতে। তাহলে এখানে ইনপুট টা কি? অনেক গুলো সংখ্যা। কিন্তু নিদিষ্ট করে বলা হয়নি কয়টা সংখ্যা। সুতরাং আমাকে স্পষ্টভাবে বলে দিতে হবে, যেমন ১০ টা সংখ্যা নাকি ১০ লক্ষ সংখ্যা কে সাজিয়ে দিতে হবে। তাহলে আমার ইনপুট টা নিদিষ্ট এবং সীমাবদ্ধ হলো।
যার মধ্যে একটা নিদিষ্ট ইনপুট আছে এবং যার নিদিষ্ট আউটপুট আছে তাকে আমরা সমস্যা (Problem) বলতে পারি।
অ্যালগরিদম এর কাজ হচ্ছে এই সমস্যাটাকে সমাধান করার জন্য আমরা কি কি ধাপ(Step) ফলো করবো তার একটা নমুনা। সেই ধাপ গুলো ফলো করলে সেই সমস্যাটির নিদিষ্ট ইনপুট থেকে নিদিষ্ট আউটপুট পাবো বা সমাধান করতে পারবো। এটাই হচ্ছে অ্যালগরিদম এর মুল কাজ।
আজকের পর্ব শেষ করার আগে ছোট একটা অ্যালগরিদম দেখবো।
ইউজার দুইটি সংখ্যা দিবে, সেই দুইটি সংখ্যার মধ্য থেকে কোন সংখ্যাটি বড় আর কোন সংখ্যাটি ছোট সেটা বের করতে হবে।
Step 1: Start
Step 2: Declare variables A & B
Step 3: Input A
Step 4: Input B
Step 5: If B is bigger than A, go to step 9
Step 6: Print A is maximum
Step 7: Print B is minimum
Step 8: Go to step 11
Step 9: Print B is maximum
Step 10: Print A is minimum
Step 11: End