मुझे इस 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
। स्पष्टीकरण: व्यक्ति -2
2 सेकंड में जाता है और उस दौरान 2 units
विकिरण उत्सर्जित होता है। वह तब 3
(दूरी :) पर जाता है 5
ताकि बैरल ने 2 + 5 = 7
विकिरण की इकाइयां जारी कीं। उस बैरल को उत्सर्जित करने वाली इकाइयाँ 4
प्राप्त करने में उसे अधिक सेकंड लगते हैं । वह उस बैरल को पाने के लिए कुछ सेकंड लेता है जहां उस बैरल ने यूनिट्स उत्सर्जित की हैं। , जिसका उत्तर है।x = 7
2 + 5 + 4 = 11
19
x = -12
2 + 5 + 4 + 19 = 30
2 + 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
भी उत्तर को बहुत प्रभावित करता है।
लालची काम नहीं करता है: मेरे पास एक लालची चयन एल्गोरिथ्म है जो एक निश्चित स्थान पर जाने की लागत का अनुमान लगाता है (जैसे अगर हम दाएं चलते हैं, तो हम बाईं बैरल और इस तरह की दूरी को दोगुना कर देते हैं)।
क्या आप एक प्राथमिकता के साथ एक प्राथमिकता-पहली खोज कर सकते हैं? अनुमानी वर्तमान यात्रा की लागत को समय बीतने की मात्रा के साथ जोड़ सकता है।