एक दोस्त ने मुझे एक पहेली दी है जिसे वह कहता है कि ओ (एन^3) समय से बेहतर में हल किया जा सकता है।ओवरलैपिंग नौकरियों का सबसे छोटा सेट खोजें
एन नौकरियों के एक सेट को देखते हुए प्रत्येक के पास एक सेट स्टार्ट टाइम और एंड टाइम होता है (ओवरलैप बहुत संभव है), सबसे छोटे सबसेट को ढूंढें कि प्रत्येक नौकरी के लिए या तो नौकरी शामिल है या उस नौकरी के साथ ओवरलैप है।
मुझे पूरा यकीन है कि इष्टतम समाधान सबसे अनजान ओवरलैप के साथ नौकरी चुनना है, इसे समाधान सेट में जोड़ें, फिर इसे चिह्नित करें, और इसके ओवरलैप करें। और तब तक दोहराएं जब तक सभी नौकरियां चिह्नित न हों।
यह पता लगाने के लिए कि कौन सी नौकरी सबसे अनमार्कित ओवरलैपर्स है, एक साधारण आसन्नता मैट्रिक्स (ओ (एन^2)) है, और प्रत्येक बार नौकरी का चयन करने के लिए इसे फिर से चालू किया जाना चाहिए, अंक अपडेट करने के लिए, इसे ओ (एन^3)।
क्या कोई बेहतर समाधान है?
आपका समाधान लालची है और हमेशा सत्य नहीं है (मैं उदाहरण दे सकता हूं जहां यह विफल रहता है), लेकिन इसे बेहतर जटिलता के साथ भी लागू किया जा सकता है। –
@izomorphius यह इरादे से लालची है। लेकिन मैं इसे इष्टतम साबित करने में सक्षम नहीं हूं। कोई विचार क्या बेहतर जटिलता के साथ समाधान है? – kwiqsilver
मुझे पता है कि यह लालची है, लेकिन यह सही नहीं है। यहां एक उदाहरण दिया गया है: अंतराल: (0, 2), (1, 4), (3, 6), (5, 8), (7, 10)। पहले चरण अंतराल पर (1,4), (3,6), (5,8) सभी दो अन्य को कवर करते हैं ताकि आप उनमें से किसी एक को चुन सकें लेकिन केवल एक अच्छा जवाब है यदि आप चुनते हैं (1,4) और (5 , 8)। ऐसे उदाहरण हैं जहां अधिकांश अंतराल को कवर करने वाला अंतराल विशिष्ट रूप से पहचाना जाता है, लेकिन फिर भी सर्वोत्तम समाधान में इसे शामिल नहीं किया जाता है, लेकिन वे सोचने के लिए थोड़ा कठिन हैं। यदि आप जोर देते हैं तो मैं एक देने की कोशिश करूंगा। –