2016-07-02 12 views
15

यह सिर्फ कुछ है जो मैं अपने साथ आया था, लेकिन यह एक मजेदार समस्या की तरह लगता है और यह मुझे फंस गया है।अंक पर त्वरण के साथ सबसे तेज़ पथ

आपके पास दो-आयामी अंतरिक्ष में बिंदुओं का एक सेट है, जिसमें एक बिंदु "प्रारंभ" और एक "अंत" नामित है। प्रत्येक बिंदु में समन्वय (उत्पत्ति से मीटर में) होता है, लेकिन यह भी "त्वरण संख्या" (डेल्टा-वी के मीटर/सेकंड में) होता है। किसी बिंदु (शुरुआत सहित) तक पहुंचने पर, आप उस बिंदु के त्वरण संख्या तक किसी भी दिशा में तेज़ी से बढ़ सकते हैं। एज लागत आपकी वर्तमान गति पर निर्भर है, लेकिन आपको भी सही दिशा में आगे बढ़ना होगा।

क्या अंत बिंदु के माध्यम से सबसे तेज़ पथ खोजने के लिए कोई कुशल एल्गोरिदम है? मैं "हर पथ का प्रयास करने और परिणामों की जांच" से बेहतर कुछ भी नहीं आया है। Djikstra और अन्य सरल एल्गोरिदम काम नहीं करते हैं, क्योंकि आप आसानी से नहीं कह सकते हैं कि एक मध्यवर्ती बिंदु के लिए एक रास्ता दूसरे से बेहतर या बदतर है, अगर वे विभिन्न प्रारंभिक वेगों के साथ आ रहे हैं।

यदि यह बहुत आसान है, तो क्या होगा यदि आप अंत बिंदु पर रुकने की आवश्यकता को जोड़ते हैं तो क्या होगा? (यानी, जब आप अंत तक पहुंचते हैं तो आपके त्वरण मूल्य से कम होना चाहिए।)

संपादित करें: स्पष्ट, दिशा के मामले में। जब आप ग्राफ को पार करते हैं तो आप एक वेग वेक्टर बनाए रखते हैं, और त्वरण का मतलब है कि इसमें एक वेक्टर जोड़ना, जिसका परिमाण उस बिंदु के त्वरण संख्या पर कैप्ड किया गया है। इसका मतलब है कि ऐसी परिस्थितियां हैं जहां एक विशाल वेग का निर्माण हानिकारक है, क्योंकि आप अन्य मूल्यवान बिंदुओं/आपके गंतव्य की ओर "स्टीयर" करने के लिए बहुत तेजी से जा रहे हैं।

+0

आपको अधिक जानकारी प्रदान करनी होगी। "त्वरण" की आपकी अवधारणा कैसे काम करेगी? क्या यह "त्वरण संख्या" द्वारा पथ के साथ सभी किनारे की लागत को कम करता है? क्या होगा यदि आप बढ़त लागत से परे "त्वरण संख्या" जमा करते हैं? "त्वरण" जैसी अवधारणा को पेश करने से पता चलता है कि घर्षण/ड्रैग के संबंधित विचार को पेश करना अच्छा हो सकता है, अन्यथा आप "अनचेक वेग" के साथ समाप्त हो सकते हैं। अब तक, मुझे नहीं लगता कि आपका प्रश्न उचित समाधान तैयार करने के लिए पर्याप्त है, लेकिन मुझे लगता है कि यह बहुत दिलचस्प है। – lightalchemist

+2

मुझे संदेह है कि इस समस्या का एक विश्लेषणात्मक समाधान है। मैं पहले एक बहुत ही सरल समस्या को हल करके शुरू करूंगा: सबसे तेज़ मार्ग जो किसी दिए गए क्रम में अंक लेता है। (उस खोज स्थान में मध्यवर्ती बिंदुओं की संख्या के बराबर कई आयाम हैं, और मैं एनीलिंग से बेहतर दृष्टिकोण नहीं देख सकता हूं।) एक बार आपके पास यह तरीका हो जाने पर, आप एक संशोधित डिजस्ट्रा बना सकते हैं। – Beta

+0

@ एक्सेलेरेशन "द्वारा प्रकाश व्यवस्था, मेरा मतलब है" वेग में परिवर्तन करें "। (तो, किनारे की लागत = euclidean दूरी/गति, लेकिन केवल तभी अनुमति दी जाती है जब आप सही दिशा में यात्रा कर रहे हों ... तो) अनचेक वेग ठीक है (यह गणित पहेली होना है, सिमुलेशन नहीं ... हालांकि मैंने किया शुरुआत में इसे ईंधन कैश चुनने वाले अंतरिक्ष यान के लिए कल्पना करें, इसलिए घर्षण अभी भी एक चीज नहीं होगी।) –

उत्तर

3

मुझे लगता है कि एक बार प्रत्येक बिंदु से त्वरण का उपयोग करने की आवश्यकता सामान्य समस्या में एनपी पूर्ण हो जाती है। अंत बिंदु और अंक के बाकी के बीच "विशाल दूरी" इतना बड़ा अंतिम समाधान की लागत पर हावी होने की है

enter image description here

, एक इष्टतम समाधान ढूँढने होगा: एक इनपुट कि इस तरह दिखता है पर विचार करें ग्राफ की शुरुआत से जितनी संभव हो उतनी गति बढ़ाने के लिए एक रास्ता खोजने के लिए उबाल लें। यदि आप केवल प्रत्येक बिंदु को एक बार पारित करने की अनुमति देते हैं, तो यह हैमिल्टनियन पथ की समस्या के बराबर होगा, जो एनपी पूर्ण है।

उस ने कहा, आपकी समस्या के शीर्ष पर कुछ अतिरिक्त नियम हैं (दूरी euclidean हैं, ग्राफ हमेशा पूरा होता है) जो समस्या को आसान बना सकता है।

+1

मुझे नहीं लगता कि यह काफी हैमिल्टनियन पथ समस्या है (यह कठिन हो सकता है , आसान नहीं), क्योंकि इस बात की कोई गारंटी नहीं है कि हर बिंदु पर जाकर सबसे अच्छा होगा। एक्सेलेरेशन वेग में है, न केवल गति उठा रहा है ... इसलिए यदि आपको हर बिंदु पर हिट करने के लिए दिशानिर्देशों को बहुत कुछ बदलना है, तो आप 4 या 5 हिट करने से अधिक धीरे-धीरे आगे बढ़ सकते हैं जो आपके साथ लगभग मोटे तौर पर कॉलिनर थे गंतव्य। –

+0

उम्म ... मुझे लगता है कि आपको स्पष्ट रूप से मोड निर्दिष्ट करने की आवश्यकता हो सकती है कि भौतिकी आपके मॉडल में कैसे काम करती है। जब मैंने इसे पढ़ा तो मुझे समझ में आया कि त्वरण एक सरल "स्पीड बूस्ट" था जिसने किसी भविष्य के किनारे को सस्ता करने के लिए सस्ता बनाया। – hugomg

+0

ठीक है, इसे स्पष्ट करने के लिए समस्या संपादित की गई। मैं सोच रहा था कि दिशा परिपक्व हो गई है (इसलिए यदि आपका वेग पर्याप्त था, तो यह प्रभावी रूप से एक पूर्ण ग्राफ नहीं होगा)। मुझे लगता है कि मैं इस बात से सहमत हूं कि जिस समस्या के बारे में आपने वर्णन किया है, यह कुछ स्थितियों में हैमिल्टनियन मार्ग पर आ सकता है। –

3

आप अंततः एक दूसरे से नोड तक पथों का पता लगाने के बाद इस समस्या को हल करने का प्रयास कर सकते हैं, फिर उस नोड से किसी अन्य को चालू करने में सक्षम होने के लिए लाइन के साथ अधिकतम गति निर्दिष्ट करें। कूलिंग नियम तब होगा जब वर्तमान से अगले नोड का पथ कम वेग और अंत से बिताए गए कम समय के साथ मौजूद है, जिसका अर्थ यह होगा कि दूसरा पथ डिफ़ॉल्ट रूप से अधिक इष्टतम है क्योंकि यह अधिक नोड्स तक पहुंच सकता है और कम समय लेता है। एक बार पथ नोड शुरू करने के बाद, इसे शुरू और संग्रहित अधिकतम गति के आधार पर पुन: गणना की जानी चाहिए। फिर आप कम समय के साथ पथ इकट्ठा करते हैं।

आपको यहां किसी भी उपलब्ध पथ की खोज करनी है, क्योंकि आपके ग्राफ पर उपलब्ध पथ अप्रत्यक्ष यांत्रिकी के साथ पिछले राज्य पर निर्भर हैं, कम गति का उपयोग करके अधिक विकल्प की अनुमति मिलती है।

+0

मुझे यकीन नहीं है कि मैं आपके सभी उत्तर समझता हूं ... मन कुछ ऐसी चीजों को स्पष्ट करता है जो दिखते हैं कि वे मेरे लिए गलत हो सकते हैं? "उस नोड से किसी अन्य को चालू करने में सक्षम होने के लिए लाइन के साथ अधिकतम गति निर्दिष्ट करें" जैसे लगता है कि यह बहुत अधिक जानकारी खो देता है, क्योंकि आप कुछ नोड्स तक पहुंच सकते हैं, न कि दूसरों को, या कुछ नोड्स तक पहुंच सकते हैं, लेकिन केवल गति से ही आपको अभी भी दूसरों तक पहुंचने से रोकता है, इत्यादि। "कूलिंग नियम तब होगा यदि वर्तमान से अगले नोड का मार्ग कम वेग और अंत से कम समय के साथ मौजूद है", तो "कम वेग" से आपका क्या मतलब है? कभी-कभी वेग अच्छा होता है। –

+0

"अधिकतम गति" के बारे में - यह प्रति नोड हो सकता है, वेक्टर के नजदीक एक नोड उच्च गति की अनुमति देगा। "कम वेग" का अर्थ है कि यदि आप पथ एबी से पूछताछ कर रहे हैं, तो निर्धारित करें कि बी तक पहुंचने के लिए ए को चालू करते समय क्या वेग प्राप्त किया जा सकता है, यह पता लगाएं कि बी से एक पथ है जो ए से आया था लेकिन बी तक पहुंचने में कम समय बिताया था और धीमा था एबी, इसका मतलब है कि आपका वर्तमान मार्ग पीछे है और इसे त्याग दिया जा सकता है। – Vesper

+0

लेकिन एक चेतावनी है जिसके बारे में मैंने सोचा है: क्या होगा यदि आप ए से शुरू करते हैं और तेजी से ए को देखने में सक्षम हैं? यह एल्गोरिदम तब विफल हो जाएगा, यदि ए के बारे में कोई नोड है। कल्पना करें: बी --- ए --- सी, स्रोत ए है, लक्ष्य सी है, और आप ए में 5 के लिए तेज हो सकते हैं, और बी में 10 के लिए, एसी बहुत लंबा है। उचित मार्ग एबीएसी को समाप्त कर सकता है, कहें कि क्या आप ए से बी में 4 पर यात्रा करते हैं, बी से ए में 6 पर वापस आते हैं, और फिर 11 से ए से सी पर वापस आते हैं, जो सीधे ए से सी तक 5 पर जाने से तेज़ होगा, और एबीसी जाने से तेज़ – Vesper

संबंधित मुद्दे