शालमोली गुप्ता ने पहले ही समझाया कि सामान्य समस्या एनपी-हार्ड है, इसलिए मैंने जांच करने का फैसला किया कि क्या कोई विशेष मामले बहुपद घुलनशील हैं। आखिरकार, मुझे एक सेट के विशेष मामले का समाधान मिला जो एक पेड़ का प्रतिनिधित्व करता है, या अधिक आम तौर पर, सभी अतुलनीय सेटों के साथ उप-समावेश द्वारा एक श्रृंखला के समानांतर क्रम से असहमति होती है।
एक संपत्ति जो चीजों को आसान बनाती है, अगर सेट की सूची चौराहे के नीचे बंद है। यदि है, तो, वहाँ एक इष्टतम आदेश जिसमें है से पहले आता है । हम डब्ल्यूएलओजी मान सकते हैं कि इष्टतम आदेश, उप-समावेश द्वारा दिए गए आंशिक आदेश का एक रैखिक विस्तार है।s 1 s 2s1⊆s2s1s2
चूँकि सेट के सभी उपसमुच्चय क्रम में इसके सामने आते हैं, इसका मतलब यह है कि किसी दिए गए सेट द्वारा रनिंग योग में जोड़ी गई राशि को निर्धारित किया जाता है, चाहे वह कहीं भी दिखाई दे। यदि सेट्स की सूची है, तो एक सेट की वृद्धिशील लागत उन तत्वों की संख्या है जो किसी भी सबसेट में नहीं हैं जो में दिखाई देता है । यदि एक ही सेट में कई बार दिखाई देता है , तो हम मनमाने ढंग से पहले जाने के लिए एक का चयन कर सकते हैं और दूसरों को 0 खर्च करने दें।एस एसSSS
इसका मतलब है कि यह समस्या एकल मशीन शेड्यूलिंग में पूर्ववर्ती बाधाओं के साथ न्यूनतम भारित समय पूरा करने की समस्या के बराबर है। इस समस्या में, वज़न के साथ नौकरियों का एक सेट दिया गया है और टाइम्स , और नौकरियों पर एक आंशिक आदेश , हम उन नौकरियों का क्रम खोजना चाहते हैं जो भारित कुल पूरा होने के समय को कम करता है, अर्थातटी जे पीwjtjP
∑ni=1wji(∑ik=1tjk)
पूर्वता के अधीन बाधाओं । चौराहे बंद सेट के साथ न्यूनतम संचयी सेट समस्या को प्रत्येक सेट के लिए एक नौकरी बनाकर इसे चालू किया जा सकता है, जहां प्रत्येक नौकरी का वजन 1 है, ऊपर परिभाषित लागत के बराबर समय, और उप-समावेश द्वारा दिया गया आदेश है।पीPP
जैसा कि यह पता चला है, यह समस्या सामान्य लिए एनपी-हार्ड भी है। हालाँकि, कुछ विशेष रूपों को बहुपद समय में हल किया जा सकता है।पीPP
यह पेपर श्रृंखला के समानांतर आदेश (जिसमें पेड़ों का महत्वपूर्ण मामला भी शामिल है के मामले में एक एल्गोरिथ्म देता है । दुर्भाग्य से, मैं उस कागज तक नहीं पहुंच सका, इसलिए मैंने इसे स्वतंत्र रूप से मजबूत करने की कोशिश करने का फैसला किया। यहाँ मैं क्या लेकर आया हूँ।पीO(nlogn)P
इस समस्या को हल करने के लिए, कई टिप्पणियों की आवश्यकता होती है।
सबसे पहले, किसी भी पूर्वता की कमी के अभाव में, इष्टतम समाधान केवल बढ़ती नौकरियों के क्रम में नौकरियों को सॉर्ट करने के लिए है । सादगी के लिए, मैं इसे नौकरी के मूल्य के रूप में संदर्भित करूंगा, संक्षिप्त । ध्यान दें कि चूंकि छंटाई , इसलिए इस जटिलता से बेहतर करना असंभव है। v(j)O(nlogn)tjwjv(j)O(nlogn)
नियम 1 चलो और ऐसी है कि नौकरियों होना और ख एक को शामिल किया गया। यदि , तो हम इष्टतम आदेश या उद्देश्य मूल्य को प्रभावित किए बिना बाधा को गिरा सकते हैं ।ख एक < ख ∈ पी वी ( एक ) < वी ( ख ) एक < baba<b∈Pv(a)<v(b)a<b
मान लीजिए पहले दिखाई देने वाला आराम समस्या के इष्टतम आदेश में। चूँकि b ने मूल रूप से कवर किया है, इसका मतलब है कि नए क्रम में b और a के बीच की सभी नौकरियाँ a और b के लिए अतुलनीय हैं। लेकिन चूंकि b का a से अधिक मूल्य है, इसलिए हम b और a, एक विरोधाभास को स्वैप करके उद्देश्य मूल्य को कम कर सकते हैं।एba
इसी तरह, हम इस मामले में बाधा को गिरा सकते हैं कि जब तक हम यह सुनिश्चित करते हैं कि मूल्य के अनुसार छँटाई के बाद, हम मूल (सरलीकृत) समस्या के पूर्ववर्ती संबंधों से परामर्श करके संबंध तोड़ लेते हैं। यह सुनिश्चित करता है कि आराम की समस्या के लिए पाया गया इष्टतम समाधान भी मूल समस्या का एक इष्टतम समाधान है।v(a)=v(b)
इसलिए, जब भी b a और को कवर करता है , हम बाधा हटाकर समस्या को सरल कर सकते हैं ।एक < bv(a)≤v(b)a<b
नियम 2 मान लीजिए कि हम जानते हैं कि बी एक इष्टतम समाधान के तुरंत बाद होता है। हम उचित रूप से अनुबंधित करते हुए और साथ एक नए नोड c में विलय कर सकते हैं ।टी सी = टी ए + टी बी पीwc=wa+wbtc=ta+tbP
नई समस्या का इष्टतम उद्देश्य मान मूल उद्देश्य मान (विशेष रूप से ) से एक निरंतर भिन्न होता है , हालांकि यह निरंतरता आदेश पर निर्भर नहीं करती है और इसलिए इष्टतम आदेश प्रभावित नहीं होता है। हम नई समस्या के लिए सर्वोत्कृष्ट समाधान लेने से बदलकर इसे पुरानी समस्या को सर्वोत्कृष्ट समाधान ठीक हो सकता है के साथ । c a bwatbcab
3 नियम मान लीजिए कि एक समस्या उदाहरण के लिए सर्वोत्कृष्ट समाधान में, से ठीक पहले आता है और । अब मान लें कि हम श्रृंखला के साथ नए पॉज़ेट या मूल के साथ समानांतर रचना के साथ नई नौकरियों को जोड़कर एक बड़ी समस्या बना रहे हैं। वहाँ हमेशा बड़ा समस्या जहां के लिए सर्वोत्कृष्ट समाधान हो जाएगा से ठीक पहले आता है ।b v ( a ) > v ( b ) a babv ( a ) > v ( b )एख
मान लीजिए अन्यथा। इष्टतम समाधान में । चूँकि को श्रृंखला समांतर रचना द्वारा बनाया गया था, हम जानते हैं कि सभी s और लिए अतुलनीय हैं । नियम 2 का उपयोग करके सभी नोड्स को एक नए नोड में मर्ज करें। अब विचार करें । अगर तो हम स्वैप कर सकते हैं और उद्देश्य मूल्य वृद्धि के बिना। इसी तरह, यदि , हम और स्वैप कर सकते हैं । इसलिए, । लेकिनपी एक्स आई ए बी एक्स मैंए , एक्स1, एक्स2, ... , खपीएक्समैंएखएक्समैं वी ( एक्स ' ) वी ( एक्स ' ) ≤ वी ( एक ) एक्स ' एक वी ( एक्स ' ) ≥ वी ( ख ) एक्स ' ख वी ( एक ) < वी ( एक्स ' )एक्स'v ( x)')v ( x)') A वी ( ए )एक्स'एv ( x)') ≥ वी ( ख )एक्स'खv ( a ) > v ( b )v ( a ) < v ( x)') < v ( बी )v ( a ) > v ( b ), एक विरोधाभास।
नियम 2 और नियम 3 का उपयोग करते हुए, हम पहले से ही एक सरल लेकिन सबॉप्टिमल एल्गोरिदम प्राप्त कर सकते हैं। चूंकि एक श्रृंखला समानांतर क्रम है, इसलिए मान लें कि इनपुट में का एक पेड़ प्रतिनिधित्व है जहां प्रत्येक नोड श्रृंखला संरचना या समानांतर रचना का प्रतिनिधित्व करता है, और पत्तियां व्यक्तिगत नौकरियां हैं। हम पेड़ के प्रीऑर्डर ट्रैवर्सल के साथ एक इष्टतम समाधान प्राप्त कर सकते हैं, जिससे यह सुनिश्चित किया जा सके कि प्रत्येक उप-उत्पाद का इष्टतम समाधान बढ़ते मूल्य क्रम में एक श्रृंखला है।पी पीओ ( एन)2)पीपी
मान लीजिए पॉस और साथ उपप्रकारों की श्रृंखला रचना है । चलो इष्टतम समाधान और आदेश दे । का इष्टतम समाधान स्पष्ट रूप से इन जंजीरों का संघटन है। हालांकि, यह संभव है कि में पहली नौकरी में अंतिम नौकरी से । जब तक कि समाधान एक सॉर्ट की गई श्रृंखला नहीं होती है, तब अपरिवर्तनीय बनाए रखने के लिए, हम एंडपॉइंट्स को मर्ज करने के लिए नियम 3 + नियम 2 का उपयोग करते हैं जब तक कि वे क्रमबद्ध क्रम में नहीं होते हैं।P 1 P 2 C 1 C 2 P C 2 C 1पीपी1पी2सी1सी2पीसी2सी1
यदि एक समानांतर रचना है, तो हम बस और श्रृंखलाओं को और उन्हें एक नई क्रमबद्ध श्रृंखला में मिला देते हैं। इनवाइट के लिए धन्यवाद, यह मान्य है।एस 1 एस 2पीएस1एस2
दुर्भाग्य से, यह एल्गोरिथ्म । एल्गोरिथ्म प्राप्त करने के लिए , हमें नियम 1 का उपयोग करके श्रृंखलाओं को आलसी रूप से गणना करने की आवश्यकता है।O ( n l o g n )ओ ( एन)2)O ( n l o g)n )
विशेष रूप से, यदि एक उपप्रकार में केवल नोड होते हैं जहां पूर्ववर्ती बाधाएं मानों के क्रम के समान होती हैं, तो हम पूर्ववर्ती बाधाओं को पूरी तरह से भूल सकते हैं और केवल मूल्यों को देख सकते हैं। यह उसी अपरिवर्तनीय द्वारा सुनिश्चित किया जाता है जिसने समाधान सुनिश्चित किया है कि पिछले एल्गोरिथ्म में श्रृंखलाबद्ध हैं।
प्रत्येक उप-प्रक्रम के लिए एक क्रमबद्ध श्रृंखला की गणना करने के बजाय, हम सबबॉल्म में सभी नौकरियों वाले सभी फाइबोनैचि ढेर, एक मिनट के ढेर और एक अधिकतम ढेर के रूप में एक उप-उत्पाद के लिए इष्टतम समाधान का प्रतिनिधित्व करते हैं। इसका मतलब है कि हम लघुगणक समय में समाधान के न्यूनतम या अधिकतम तत्व को पॉप कर सकते हैं।
पहले की तरह, हम एक प्रीवार्ड ट्रैवर्सल करते हैं। जहां एक श्रृंखला रचना है, हम पहली ढेर जोड़ी की अधिकतम नौकरी और दूसरी ढेर जोड़ी की न्यूनतम नौकरी की जांच करते हैं। यदि उनके मूल्य क्रम से बाहर हैं, तो हम उन्हें नियम 2 और 3 का उपयोग करके उन्हें बंद कर देते हैं और फिर नए बनाए गए जॉब की तुलना नए एंडपॉइंट्स से करते हैं और जब तक वे ऑर्डर से बाहर होते हैं तब तक पॉपिंग और विलय जारी रखते हैं। एक बार जब एंडपॉइंट्स ऑर्डर क्रम से बाहर नहीं होते हैं, तो हम नियम 1 के लिए श्रृंखला पूर्वता प्रतिबंध के लिए सुरक्षित रूप से भूल सकते हैं। फिर हम नव निर्मित नौकरियों को धक्का देते हैं यदि कोई ढेर पर है, तो ढेर जोड़ी बनाने के लिए ढेर का विलय करें समाधान का प्रतिनिधित्व करते हुए करने के लिए ही।पीपीपी
एक समानांतर रचना के लिए, हम बस ढेर जोड़े को मिलाते हैं। नया मिन हीप प्रत्येक सबप्रोबलम से मिन हीप का मर्ज है और इसी तरह अधिकतम हीप होता है। ध्यान दें कि फिबोनाची ढेर लगातार समय में विलय योग्य हैं।
एक बार जब हमारे पास पूरी समस्या के समाधान का प्रतिनिधित्व करने वाली एक ढेर जोड़ी होती है, तो हम मिन हीप को खाली करने तक वास्तविक समाधान का आदेश दे सकते हैं जब तक कि यह खाली न हो। उसके बाद हम मूल समस्या का समाधान पाने के लिए सभी नियम 2 प्रतिस्थापनों को पूर्ववत करते हैं।
प्रत्येक कार्य जो ढेर से पॉप अप किया जाता है, या तो तुरंत एक नई नौकरी में विलय कर दिया जाता है, कुल नौकरी की संख्या को कम करता है, या अंत में एक बार ठीक से पॉप किया जाता है। इसलिए ढेर पॉपों में से एक सबसे अधिक संख्या में है, जिससे समय खत्म हो गया है। अन्य ऑपरेशन प्रति नोड या नौकरी के लिए निरंतर समय हैं और इसलिए सभी पर रैखिक हैं।O ( n l o g)n )