কম্পিউটার টিউটোরিয়াল

ডিটারমিনিস্টিক (Deterministic) এবং নন-ডিটারমিনিস্টিক (Non-deterministic) অ্যালগরিদমের পার্থক্য


প্রোগ্রামিং প্রেক্ষাপটে, একটি অ্যালগরিদম হলো সুতরাং ডিফাইন করা ইনস্ট্রাকশনের একটি সিকোয়েন্স যা একটি নির্দিষ্ট টাস্ক সম্পাদন করে এবং ডিজায়ারড আউটপুট অর্জন করে। এখানে "সুতরাং ডিফাইন করা ইনস্ট্রাকশন" বলতে বোঝায় যে ইউজার জানেন সেই ইনস্ট্রাকশনগুলো এক্সিকিউট হলে ফলাফল কী হবে।

ইনস্ট্রাকশনের ফলাফল সম্পর্কে জ্ঞানের ভিত্তিতে অ্যালগরিদম দুটি টাইপের: ডিটারমিনিস্টিক (Deterministic) এবং নন-ডিটারমিনিস্টিক (Non-deterministic)। এদের মধ্যে প্রধান পার্থক্যগুলো নিচে:

Sr. No. Key Deterministic Algorithm Non-deterministic Algorithm
1 সংজ্ঞা যে অ্যালগরিদমগুলোর ফলাফল একদম অনন্যভাবে ডিফাইনড থাকে, সেগুলোকে ডিটারমিনিস্টিক অ্যালগরিদম বলা হয়। অর্থাৎ, ডিটারমিনিস্টিক অ্যালগরিদম হলো সেই অ্যালগরিদম যা ফিক্সড সংখ্যক স্টেপ এক্সিকিউট করে এবং সবসময় একই ফলাফল (accept বা reject state) দিয়ে শেষ হয়। যে অ্যালগরিদমগুলোর ফলাফল অনন্যভাবে ডিফাইনড নয় এবং ফলাফল র‍্যান্ডম হতে পারে, সেগুলোকে নন-ডিটারমিনিস্টিক অ্যালগরিদম বলা হয়।
2 এক্সিকিউশন ডিটারমিনিস্টিক অ্যালগরিদম এক্সিকিউশনে, টার্গেট মেশিন একই ইনস্ট্রাকশন এক্সিকিউট করে এবং একই ফলাফল দেয়, যা ইনস্ট্রাকশন এক্সিকিউশনের প্রক্রিয়ার ওপর নির্ভরশীল নয়। নন-ডিটারমিনিস্টিক অ্যালগরিদমে, প্রতিটি অপারেশন এক্সিকিউট করার সময় মেশিন কয়েকটি সম্ভাব্য ফলাফল থেকে যেকোনো একটি বেছে নিতে পারে, যা পরবর্তীতে একটি ডিটারমিনেশন কন্ডিশন দিয়ে নিশ্চিত হয়।
3 টাইপ এক্সিকিউশন এবং ফলাফলের ভিত্তিতে ডিটারমিনিস্টিক অ্যালগরিদমগুলো বিশ্বস্ত (reliable) অ্যালগরিদম হিসেবে শ্রেণিবদ্ধ, কারণ নির্দিষ্ট ইনপুটের জন্য সবসময় একই আউটপুট দেয়। নন-ডিটারমিনিস্টিক অ্যালগরিদমগুলো অবিশ্বস্ত (non-reliable) অ্যালগরিদম হিসেবে শ্রেণিবদ্ধ, কারণ একই ইনপুটের জন্য আলাদা এক্সিকিউশনে ভিন্ন আউটপুট দিতে পারে।
4 এক্সিকিউশন টাইম ফলাফল পরিচিত এবং কনসিস্টেন্ট থাকায় ডিটারমিনিস্টিক অ্যালগরিদম পলিনোমিয়াল টাইমে এক্সিকিউট হয়। ফলাফল অজানা এবং নন-কনসিস্টেন্ট থাকায় নন-ডিটারমিনিস্টিক অ্যালগরিদম পলিনোমিয়াল টাইমে এক্সিকিউট হতে পারে না।
5 এক্সিকিউশন পাথ ডিটারমিনিস্টিক অ্যালগরিদমে অ্যালগরিদমের এক্সিকিউশন পাথ প্রতিটি এক্সিকিউশনে একই থাকে। নন-ডিটারমিনিস্টিক অ্যালগরিদমে এক্সিকিউশন পাথ প্রতিটি এক্সিকিউশনে একই নয়, যেকোনো র‍্যান্ডম পাথ নিতে পারে।

  1. অ্যালগরিদম (Algorithm) এবং ফ্লোचार্ট (Flowchart) এর পার্থক্য

  2. BFS এবং DFS-এর পার্থক্য

  3. C# এবং .NET-এর পার্থক্য

  4. Go এবং Java-এর পার্থক্য