একটি অ্যালগরিদম হলো নির্দেশাবলির একটি সসীম সেট যা, যদি অনুসরণ করা হয়, একটি নির্দিষ্ট কাজ সম্পাদন করে। সকল অ্যালগরিদম অবশ্যই নিচের শর্তগুলো পূরণ করতে হবে:
ইনপুট। একটি অ্যালগরিদমের শূন্য বা অধিক ইনপুট থাকে, নির্দিষ্ট সেট অবজেক্ট থেকে নেওয়া বা সংগ্রহ করা।
আউটপুট। একটি অ্যালগরিদমের এক বা অধিক আউটপুট থাকে যारा ইনপুটের সাথে নির্দিষ্ট সম্পর্ক থাকে।
নির্দিষ্টতা (Definiteness)। প্রতিটি স্টেপ স্পষ্টভাবে সংজ্ঞায়িত থাকতে হবে; প্রতিটি ইনস্ট্রাকশন স্পষ্ট এবং অনন্যত 있어야 হবে।
সসীমতা (Finiteness)। অ্যালগরিদমটি সবসময় সসীম সংখ্যক স্টেপের পরে ফিনিশ বা টার্মিনেট হবে।
প্রভাবশীলতা (Effectiveness)। সম্পাদন করা সকল অপারেশন পর্যাপ্ত বেসিক হতে হবে যাতে সেগুলো একদম ঠিকভাবে এবং সসীম দৈর্ঘ্যে করা যায়।
আমরা একটি অ্যালগরिदমকে অনেকভাবে চিত্রিত করতে পারি।
- ন্যাচারাল ল্যাঙ্গুয়েজ: ইংরেজি বা অন্য প্রাকৃতিক ভাষা বাস্তবায়ন করা
- ফ্লো চার্ট: গ্রাফিক্যাল রিপ্রেজেন্টেশন ডেনোট করে ফ্লোচার্ট, শুধু যদি অ্যালগরিদম ছোট ও সহজ হয়।
- সিউডো কোড: এই সিউডো কোড অনিশ্চিততার অধিকাংশ বিষয় এড়িয়ে যায়; প্রোগ্রামিং ল্যাঙ্গুয়েজের সিনট্যাক্স নিয়ে কোনো নির্দিষ্টতা নেই।
উদাহরণ ১: একটি সংখ্যার ফ্যাক্টোরিয়াল মান ক্যালকুলেট করার অ্যালগরিদম
Step 1: একটি সংখ্যা n ইনপুট করা হয় Step 2: variable final ১ হিসেবে সেট করা হয় Step 3: final<= final * n Step 4: n কমানো হয় Step 5: যাচাই করা হয় n ০-এর সমান কিনা Step 6: যদি n ০-এর সমান হয়, step 8-এ যান (লুপ থেকে বের হোন) Step 7: অন্যথায় step 3-এ যান Step 8: ফলাফল final প্রিন্ট করা হয়
রিকার্সিভ অ্যালগরিদম (Recursive Algorithms)
একটি রিকার্সিভ অ্যালগরিদম নিজেকে কল করে যা সাধারণত রিটার্ন ভ্যালুকে একটি প্যারামিটার হিসেবে অ্যালগরিদমে আবার পাস করে। এই প্যারামিটার ইনপুট নির্দেশ করে যখন রিটার্ন ভ্যালু আউটপুট নির্দেশ করে।
রিকার্সিভ অ্যালগরিদম হলো সরলীকরণের একটি পদ্ধতি যা সমস্যাকে একই প্রকৃতির সাব-প্রোব্লেমে ভাগ করে। একটি রিকার্শনের ফলাফল পরবর্তী রিকার্শনের জন্য ইনপুট হিসেবে বিবেচিত হয়। পুনরাবৃত্তি আত্ম-সদৃশ ফ্যাশনে হয়। অ্যালগরিদম নিজেকে ছোট ইনপুট ভ্যালুসহ কল করে এবং এই ছোট মানগুলোর ওপর অপারেশন সম্পন্ন করে সহজে ফলাফল পায়। ফ্যাক্টোরিয়াল জেনারেশন, ফিবোনাচ্চি নম্বর সিরিজ রিকার্সিভ অ্যালগরিদমের উদাহরণ।
উদাহরণ: রিকার্শন ব্যবহার করে ফ্যাক্টোরিয়াল ফাংশন লিখা
intfactorialA(int n) { return n * factorialA(n-1); }