मुझे इस ACM ICPC समस्या पर कुछ मदद चाहिए। मेरा वर्तमान विचार इसे सबसे छोटी पथ समस्या के रूप में प्रस्तुत करना है, जिसे समस्या कथन के अंतर्गत वर्णित किया गया है।
मुसीबत
कर रहे हैं N = 1000परमाणु कचरे में एक 1-डी नंबर लाइन के किनारे स्थित कंटेनर अलग से पदों -500,000 to 500,000को छोड़कर, x=0। एक व्यक्ति को सभी बेकार डिब्बे इकट्ठा करने का काम सौंपा जाता है। प्रत्येक सेकंड कि एक बेकार कंटेनर एकत्र नहीं किया जाता है, यह विकिरण की 1 इकाई का उत्सर्जन करता है। व्यक्ति शुरू होता है x = 0और 1हर सेकंड में इकाई को स्थानांतरित कर सकता है , और कचरे को इकट्ठा करना समय की नगण्य मात्रा लेता है। हम सभी कंटेनरों को एकत्रित करते हुए कम से कम विकिरण जारी करना चाहते हैं।
नमूना इनपुट:
4कंटेनरों में स्थित है [-12, -2, 3, 7]।
इन कंटेनरों को इकट्ठा करने का सबसे अच्छा क्रम इकाइयों के [-2, 3, 7, -12]न्यूनतम उत्सर्जन के लिए है 50। स्पष्टीकरण: व्यक्ति -22 सेकंड में जाता है और उस दौरान 2 unitsविकिरण उत्सर्जित होता है। वह तब 3(दूरी :) पर जाता है 5ताकि बैरल ने 2 + 5 = 7विकिरण की इकाइयां जारी कीं। उस बैरल को उत्सर्जित करने वाली इकाइयाँ 4प्राप्त करने में उसे अधिक सेकंड लगते हैं । वह उस बैरल को पाने के लिए कुछ सेकंड लेता है जहां उस बैरल ने यूनिट्स उत्सर्जित की हैं। , जिसका उत्तर है।x = 72 + 5 + 4 = 1119x = -122 + 5 + 4 + 19 = 302 + 7 + 11 + 30 = 50
टिप्पणियाँ
एक स्पष्ट O(N!)समाधान है। हालाँकि, मैंने लालची तरीकों की खोज की है जैसे निकटतम एक पर जाना, या निकटतम क्लस्टर में जाना लेकिन उन लोगों ने काम नहीं किया है।
मैंने इस समस्या के बारे में काफी समय से सोचा है, और इसे एक ग्राफ खोज समस्या के रूप में चित्रित किया है:
- हम
0आधार रेखा स्थिति के रूप में सम्मिलित करते हैं (यह प्रारंभिक स्थिति होगी) - फिर, हम स्थिति को कम से कम से सबसे बड़े तक क्रमबद्ध करते हैं।
- हम फिर एक बीएफएस / पीएफएस करते हैं, जहां के
stateहोते हैं- दो पूर्णांकों
lऔरrउस सॉर्ट किए गए स्थान सरणी में एक सन्निहित सीमा का प्रतिनिधित्व करते हैं जिसे हमने पहले ही देखा है - एक पूर्णांक
locजो हमें बताता है कि हम सीमा के बाएं या दाएं छोर पर हैं या नहीं - एक पूर्णांक
timeजो हमें बीता हुआ समय बताता है - एक पूर्णांक 'लागत' जो हमें अब तक की कुल लागत बताती है (हमारे द्वारा देखे गए नोड्स के आधार पर)
- दो पूर्णांकों
- प्रत्येक राज्य से हम [l - 1, r] और [l, r + 1] की ओर बढ़ सकते हैं, अन्य 3 पूर्णांकों को उसी के अनुसार बदल सकते हैं
- अंतिम स्थिति [0, N] है, दोनों समाप्ति स्थिति की जाँच कर रही है।
हालांकि, ऐसा लगता है कि [L, R, loc]विशिष्ट रूप से एक राज्य को परिभाषित नहीं करता है, और हमें इनमें से प्रत्येक पर L, R, loc, and timeन्यूनतम करते हुए स्टोर costकरना होगा। यह एक घातीय एल्गोरिथ्म की ओर जाता है, जो अभी भी किसी भी अच्छे के लिए बहुत धीमा है।
क्या कोई मुझे मेरे विचार पर विस्तार करने या सही दिशा में धकेलने में मदद कर सकता है?
संपादित करें: शायद इसे एक गतिशील प्रोग्रामिंग अनुकूलन समस्या के रूप में चित्रित किया जा सकता है? इसके बारे में सोचते हुए, इसमें ग्राफ़ खोज समाधान के समान मुद्दे हैं - सिर्फ इसलिए कि वर्तमान costकम है इसका मतलब यह नहीं है कि यह उस उप समस्या के लिए इष्टतम उत्तर है, क्योंकि यह timeभी उत्तर को बहुत प्रभावित करता है।
लालची काम नहीं करता है: मेरे पास एक लालची चयन एल्गोरिथ्म है जो एक निश्चित स्थान पर जाने की लागत का अनुमान लगाता है (जैसे अगर हम दाएं चलते हैं, तो हम बाईं बैरल और इस तरह की दूरी को दोगुना कर देते हैं)।
क्या आप एक प्राथमिकता के साथ एक प्राथमिकता-पहली खोज कर सकते हैं? अनुमानी वर्तमान यात्रा की लागत को समय बीतने की मात्रा के साथ जोड़ सकता है।