संघों, चौराहे और मतभेदों से बना कम्प्यूटेशंस सेट अक्सर कई अलग-अलग तरीकों से व्यक्त किया जा सकता है। क्या कोई सिद्धांत या ठोस कार्यान्वयन है जो किसी दिए गए उत्तर तक पहुंचने के लिए आवश्यक गणना की मात्रा को कम करने का प्रयास करता है?इंटेलिजेंट पूरी तरह से कार्यात्मक सेट
उदाहरण के लिए, मैं पहली बार पड़ोसी गोले में एक असंगत सामग्री के सिमुलेशन में परमाणुओं को विघटित करने की कोशिश करते समय इसका एक व्यावहारिक अनुप्रयोग आया, जहां पहला खोल कुछ मूल मूल परमाणु के तत्काल पड़ोसियों और दूसरे खोल हैं परमाणुओं है कि यह पहले या तो पहले खोल या एक में नहीं पहले खोल के पड़ोसी हैं:
nth 0 = singleton i
nth 1 = neighbors i
nth n = reduce union (map neighbors (nth(n-1))) - nth(n-1) - nth(n-2)
इस हल करने के लिए कई अलग अलग तरीके हैं। आप परिणामों को लिखते समय प्रत्येक सेट में सदस्यता की वृद्धि कर सकते हैं या आप तीन पड़ोसी गोले के संघ की गणना कर सकते हैं और बाहरी दो को छोड़कर पिछले दो गोले को हटाने के लिए चौराहे का उपयोग कर सकते हैं। अभ्यास में, बड़े इंटरमीडिएट सेट के निर्माण की आवश्यकता वाले समाधान धीमे होते हैं।
संभावित रूप से एक बुद्धिमान सेट कार्यान्वयन मूल्यांकन की रचना करने के लिए मूल्यांकन करने से पहले मूल्यांकन करने के लिए अभिव्यक्ति की रचना की जा सकती है और उसके बाद अनुकूलित किया जा सकता है (उदाहरण के लिए इंटरमीडिएट सेट के आकार को कम करने के लिए)। क्या ऐसे सेट कार्यान्वयन मौजूद हैं?
ठीक है, मुझे लगता है कि सिंगल-कॉलम टेबल वाले SQL डेटाबेस अनिवार्य रूप से क्वेरी-भाषा-अनुकूलक के साथ सेट होते हैं। मुझे नहीं पता कि उनमें से कोई भी अनुकूलन है जो इस क्वेरी पर लागू होगा, हालांकि ... या यहां तक कि SQL इस क्वेरी को व्यक्त करने में सक्षम होने के लिए एक रोमांचक पर्याप्त भाषा है या नहीं। –
मैंने कुछ साल पहले शायद एक दर्जन देखा और एसक्यूएल क्वेरी ऑप्टिमाइज़र के उल्लेखनीय अपवाद के साथ इसका उत्तर "नहीं" था। – Gene
सी ++ अभिव्यक्ति टेम्पलेट्स की तरह लगता है ... – ildjarn