মূল বিষয়বস্তু
কম্পিউটার বিজ্ঞান
কোর্স: কম্পিউটার বিজ্ঞান > অধ্যায় 1
পাঠ 6: রিকার্সিভ অ্যালগোরিদম- রিকার্শন
- উৎপাদক ফাংশন
- চ্যালেঞ্জ: পুনরাবৃত্তিমূলক উৎপাদক
- রিকার্সিভ উৎপাদক
- চ্যালেঞ্জ: রিকার্সিভ উৎপাদক
- রিকার্সিভ অ্যালগোরিদমের বৈশিষ্ট্য
- একটি শব্দ প্যালিনড্রোম শব্দ কিনা তা রিকার্শন ব্যবহার করে নির্ধারণ করা
- চ্যালেঞ্জ: একটি স্ট্রিং কি একটি প্যালিনড্রোম?
- একটি সংখ্যার ঘাত হিসাব করা
- চ্যালেঞ্জ: রিকার্সিভ ঘাতসমূহ
- সিয়েরপিন্সকি গ্যাসকেট
- প্রকল্প: রিকার্সিভ কলা
© 2023 Khan Academyব্যবহারের শর্তাদিগোপনীয়তার নীতিমালাকুকি নোটিশ
রিকার্সিভ অ্যালগোরিদমের বৈশিষ্ট্য
এখানে রিকার্সিভ অ্যালগোরিদম সম্পর্কে সাধারণ কিছু ধারণা দেওয়া হল:
একটি সমস্যা সমাধান করার জন্য, ছোট একটি সমস্যার সমাধান করা নিয়ে কাজ করা যেটা ঐ মূল সমস্যাটিরই ছোট একটি রূপ এবং তারপরে এই ছোট সমস্যাটির সমাধান কাজে লাগিয়ে মূল সমস্যাটি সমাধান করা যাক।
যখন আমরা হিসাব করব, আমরা কে হিসাব করার সমস্যাটি (মূল সমস্যাটি) সমাধান করব একটি ছোট সমস্যা সমাধান করার মাধ্যমে, যেটা ছোট একটি সংখ্যার উৎপাদক হিসাব করবে, যেটা হল হিসাব করে বের করা (ঐ মূল একই সমস্যার ছোট একটি রূপ) এবং তারপরে এই ছোট সমস্যাটির সমাধান ব্যবহার করে এর মানটি হিসাব করে বের করব।
রিকার্সিভ অ্যালগোরিদমটি কাজ করানোর জন্য, ছোট সমস্যাগুলো ধীরে ধীরে বেস কেসে নিয়ে আসতে হবে। টি হিসাব করার সময়, ছোট সমস্যাটি আরও ছোট হতেই থাকে, ছোট হতেই থাকে যতক্ষণ পর্যন্ত না আমরা হিসাব করে বের করছি। তোমাকে অবশ্যই নিশ্চিত করতে হবে যেন সমাধানটি নিয়ে তুমি যেন ধীরে ধীরে মূল সমস্যার দিকে অগ্রসর হও।
উদাহরণস্বরূপ, আমরা যদি আমাদের রিকার্সিভ মেথডটি ব্যবহার করে ঋণাত্মক একটি সংখ্যা হিসাব করতে চাই তাহলে কি হবে? হিসাব করার জন্য, তুমি প্রথমে হিসাব করে বের করার জন্য চেষ্টা করে দেখতে পার, যাতে এর থেকে পাওয়া ফলাফলটি তুমি দিয়ে গুণ করতে পার। কিন্তু হিসাব করার জন্য, প্রথমে তোমাকে হিসাব করতে হবে, যাতে ফলাফলটি তুমি দিয়ে গুণ করতে পার। এবং তারপরে তুমি হিসাব করার জন্য চেষ্টা করবে এবং এভাবে চলতেই থাকবে। অবশ্যই, সংখ্যাগুলো ছোট হয়ে যাচ্ছে, কিন্তু সংখ্যাগুলো বেস কেস থেকে আরও অনেক দূরে সরে যাচ্ছে। এরকম হলে কখনই তুমি এর উত্তরটি পাবে না।
এখানে যদি তুমি এই নিশ্চয়তাও দিতে পার যে এর মানটি ঋণাত্মক হবে না, তবুও তুমি ঝামেলার মধ্যে পড়বে যদি না তুমি ছোট সমস্যাটির মান পর্যায়ক্রমে ছোট করে না নিয়ে আসো। এখানে একটি উদাহরণ দেওয়া হল। এই সূত্রটি নেওয়া যাক এবং উভইপক্ষকে দিয়ে ভাগ করা যাক, যেটা ফেরত দিবে। এখন নতুন একটি চলক তৈরি করা যাক, এবং এর মান নির্ধারণ করা যাক। যেহেতু আমাদের সূত্রটি যেকোন ধনাত্মক সংখ্যাতে প্রয়োগ করা সম্ভব, তাই এখন কে দিয়ে প্রতিস্থাপিত করা যাক, যেটা আমাদের ফলাফলটি দিবে। যেহেতু , আমাদের কাছে তাহলে এখন আছে। দিক পরিবর্তন করলে এখানে দেখা যাচ্ছে যে যেটা আমাদের দিবে। এই সূত্রটি আমাদের সেই বিশ্বাসের দিকে নিয়ে যাচ্ছে যেখান থেকে আমরা বলতে পারব যে প্রথমে হিসাব করার মাধ্যমে এবং তারপরে ফলাফলটি দিয়ে ভাগ করার মাধ্যমে আমরা সংখ্যাটি হিসাব করতে পারব। কিন্তু হিসাব করা জন্য, প্রথমে তোমাকে হিসাব করতে হবে, তারপরে এবং এভাবে আরও হিসাব করে ফল বের করতে হবে। কিন্তু এভাবে 0 এর বেস কেসে আমরা কখনই পৌঁছাতে পারব না। কেন নয়? কারণ প্রতিটি রিকার্সিভ ছোট সমস্যা তোমার কাছে বড় একটি সংখ্যা হিসাব করতে বলে, ছোট কোন সংখ্যা নয়। যদি একটি ধনাত্মক সংখ্যা হয়, তাহলে তুমি কখনই 0 এর বেস কেসে পৌঁছাতে পারবে না।
রিকার্শন সম্পর্কিত ধারণাটি আমরা দুইটি সাধারণ নিয়মে বিভক্ত করতে পারি:
- প্রতিটি রিকার্সিভ কল একই মূল সমস্যার ছোট একটি রূপ হবে, যেটা হল, ছোট একটি সমস্যা হিসেবে কাজ করবে।
- রিকার্সিভ কলগুলোর ধীরে ধীরে অবশ্যই একটি বেস কেসে পৌঁছাবে, যেটা আর কোন রিকার্শনের ব্যবহার ছাড়াই এটা সমাধান হয়ে যাবে।
এখন রাশিয়ান পুতুলগুলোর কাছে ফেরত যাওয়া যাক। যদিও তারা কোন অ্যালগোরিদমের ভিতরে থাকতে পারবে না, তুমি এখানে দেখতে পারবে যে প্রতিটি পুতুল এখানে ছোট ছোট অনেকগুলো পুতুল নিয়ে তৈরি হয়েছে (রিকার্সিভের মত অনেকটা), যতক্ষণ পর্যন্ত না সবচেয়ে ছোট পুতুলটি অন্য কোন পুতুলের ভিতরে যেতে পারবে (বেস কেসের মত)।
এই বিষয়বস্তুটি Dartmouth Computer Science এর প্রফেসর Thomas Cormen এবং Devin Balkcom এর সহযোগিতায় এবং একই সাথে খান একাডেমির কম্পিউটিং শিক্ষাক্রম দলের একসাথে কাজ করার মাধ্যমে তৈরি করা হয়েছে। এই বিষয়বস্তু CC-BY-NC-SA দিয়ে লাইসেন্সকৃত।
আলোচনায় অংশ নিতে চাও?
কোন আলাপচারিতা নেই।