জেনেটিক প্রোগ্রামিংয়ে কাজ করা একজন সহকর্মী আমাকে নিম্নলিখিত প্রশ্নটি জিজ্ঞাসা করেছিলেন। আমি প্রথমে একটি লোভী পদ্ধতির ভিত্তিতে এটি সমাধান করার চেষ্টা করেছি, কিন্তু দ্বিতীয় চিন্তায়, আমি লোভী অ্যালগরিদমের একটি প্রতিরূপ খুঁজে পেয়েছি। সুতরাং, আমি ভেবেছিলাম এটি এখানে উল্লেখযোগ্য।
দুটি বহুপদী বিবেচনা করুন যা তাদের অভিব্যক্তি গাছ দ্বারা প্রতিনিধিত্ব করা হয়। উদাহরণস্বরূপ, এবং নীচে চিত্রিত:
নিয়মাবলী:
- প্রতিটি নোড হয় একটি চলক নাম ( ), একটি সংখ্যা , বা একটি ক্রিয়াকলাপ (+, -, ×)।
- গাছের অর্ডার ক্রমবিন্যাসের ফলে বৈধ বহুপদী হওয়া উচিত।
- অপারেশন নোডগুলি ইন-ডিগ্রি 2 থাকে। অন্যান্য নোডের ইন-ডিগ্রি 0 থাকে। সমস্ত নোডের আউট-ডিগ্রি 1 থাকে (রুট ছাড়া, যার আউট-ডিগ্রি 0 হয়)।
গাছের একটি নোডে নীচে বেসিক অপারেশনটি সংজ্ঞায়িত করুন :
- একটি প্রাথমিক ক্রিয়াকলাপ N এর উপরে একটি এক্সপ্রেশন ট্রি তৈরি করতে পারে (নীচের উদাহরণটি দেখুন)।
টাইপ 1 এর মৌলিক ক্রিয়াকলাপের ব্যয় ১। টাইপ 2 এর জন্য নতুন নির্মিত এক্সপ্রেশন ট্রিতে {+, -, ×} ক্রিয়াকলাপের সমান।
টাইপ 2 এর উদাহরণ: নিম্নলিখিত মৌলিক ক্রিয়াকলাপের ব্যয় 2, যেহেতু নোড এন এর উপরে নির্মিত এক্সপ্রেশন ট্রি দুটি অপারেশন (- এবং।) ব্যবহার করে।
টি 1 এবং টি 2 বহুত্বের প্রতিনিধিত্বকারী দুটি অভিব্যক্তি গাছ হোক। নিম্নলিখিত হিসাবে টি 1 এবং টি 2 এর দূরত্বটি নির্ধারণ করুন : টি 1 কে টি 2 তে রূপান্তর করার জন্য বেসিক অপারেশনের সর্বনিম্ন ব্যয়। নোট করুন যে আমাদের রূপান্তরিত গাছের টি 2 এর মতো কাঠামো থাকতে হবে না। আমরা কেবল এটি চাই যে এটি টি 2 এর মতো একই বহুবচন গণনা করা। (একটি উদাহরণের জন্য মন্তব্য দেখুন।)
সমস্যা: টি 1 এবং টি 2 দেওয়া, একটি অ্যালগরিদম উপস্থাপন করুন যা তাদের দূরত্ব গণনা করে।
উদাহরণ 1: টি 1 এবং টি 2 এই পোস্টের শুরুতে চিত্রিত দুটি গাছ trees বাম গাছের ডান গাছকে রূপান্তর করতে, কেউ × এর উপরে তিনটি দামের একটি গাছ তৈরি করতে পারে এবং 4 থেকে 1 পরিবর্তন করতে পারে (মোট ব্যয় হয় 4)।