आनुवांशिक प्रोग्रामिंग पर काम करने वाले एक सहयोगी ने मुझसे निम्नलिखित प्रश्न पूछे। मैंने पहली बार एक लालची दृष्टिकोण के आधार पर इसे हल करने की कोशिश की, लेकिन एक दूसरे विचार पर, मुझे लालची एल्गोरिथ्म का एक प्रतिरूप मिला। इसलिए, मैंने सोचा कि यह यहाँ ध्यान देने योग्य है।
दो बहुपदों पर विचार करें जो उनकी अभिव्यक्ति पेड़ों द्वारा दर्शाए गए हैं। उदाहरण के लिए, और नीचे दिए गए हैं:
नियम:
- प्रत्येक नोड या तो एक चर नाम ( ), एक संख्या , या एक ऑपरेशन (+, -, ×) है।
- पेड़ के इन-ऑर्डर ट्रैवर्सल का परिणाम एक वैध बहुपद में होना चाहिए।
- ऑपरेशन नोड्स में डिग्री-2 है। अन्य नोड्स में डिग्री-डिग्री 0. सभी नोड्स में आउट-डिग्री 1 (रूट को छोड़कर, जिनकी आउट-डिग्री 0 है)।
पेड़ के नोड एन पर, निम्नानुसार मूल ऑपरेशन को परिभाषित करें :
- एक मूल ऑपरेशन नोड के लेबल को बदल सकता है। उदाहरण के लिए, को 3 में बदला जा सकता है, या + को बदला जा सकता है ।
- एक मूल ऑपरेशन एन के ऊपर एक अभिव्यक्ति पेड़ का निर्माण कर सकता है (नीचे उदाहरण देखें)।
टाइप 1 के मूल संचालन की लागत 1. टाइप 2 की लागत नव निर्मित अभिव्यक्ति पेड़ में {+, -, ×} संचालन की संख्या के बराबर है।
टाइप 2 के लिए उदाहरण: निम्न मूल ऑपरेशन की लागत 2 है, क्योंकि नोड एन के शीर्ष पर निर्मित अभिव्यक्ति ट्री दो ऑपरेशन (- और ×) का उपयोग करता है।
बता दें कि T1 और T2 दो एक्सप्रेशन ट्री हैं जो पॉलीनॉमियल का प्रतिनिधित्व करते हैं। टी 1 और टी 2 की दूरी को निम्नानुसार परिभाषित करें : टी 1 को टी 2 में परिवर्तित करने के लिए बुनियादी संचालन की न्यूनतम लागत। ध्यान दें कि हमें T2 जैसी संरचना के लिए परिवर्तित वृक्ष की आवश्यकता नहीं है। हम बस यह चाहते हैं कि यह टी 2 के समान बहुपद की गणना करे। (उदाहरण के लिए टिप्पणियाँ देखें।)
समस्या: टी 1 और टी 2 को देखते हुए, एक एल्गोरिथ्म प्रस्तुत करें जो उनकी दूरी की गणना करता है।
उदाहरण 1: T1 और T2 दो पेड़ हैं जिन्हें इस पोस्ट की शुरुआत में चित्रित किया गया है। दाएं पेड़ को बाएं पेड़ में बदलने के लिए, कोई × 3 के ऊपर लागत 3 का पेड़ बना सकता है, और 4 से 1 बदल सकता है (कुल लागत 4 है)।