डायनेमिक ग्राफ़ के सबसे छोटे पथ को पुनः प्राप्त करना


24

मैं वर्तमान में निर्देशित ग्राफ़ में सबसे छोटे रास्तों का अध्ययन कर रहा हूं। एक नेटवर्क में सबसे छोटा रास्ता खोजने के लिए कई कुशल एल्गोरिदम हैं, जैसे कि डाइजेक्स्ट्रा या बेलमैन-फोर्ड-डी। लेकिन क्या होगा अगर ग्राफ गतिशील है? डायनामिक कहने से मेरा मतलब है कि हम प्रोग्राम के निष्पादन के दौरान कोने सम्मिलित या हटा सकते हैं। मैं एक नए सिरे से सबसे छोटे पथ एल्गोरिथम को फिर से चलाने की आवश्यकता के बिना, एक किनारे ई से डालने के बाद, एक वर्टेक्स से हर दूसरे शीर्ष यू के लिए सबसे छोटे रास्तों को अपडेट करने के लिए एक कुशल एल्गोरिदम खोजने की कोशिश कर रहा हूं । मैं यह कैसे कर सकता हूँ? अग्रिम में धन्यवाद।vue

  • नोट: परिवर्तन एल्गोरिथ्म के पहले पुनरावृत्ति के बाद किया जा सकता है
  • नोट [2]: दो नोड्स दिया जाता है, स्रोत और टी लक्ष्य। मुझे इन नोड्स के बीच सबसे छोटा रास्ता खोजने की जरूरत है। जब ग्राफ अद्यतन किया जाता है मैं केवल अद्यतन करने के लिए है π ( रों , टी ) , जो बीच कम से कम पथ है रों और टीstπ(s,t)st
  • नोट [3]: मैं केवल किनारे प्रविष्टि मामले में दिलचस्पी रखता हूं।

एक औपचारिक परिभाषा : एक ग्राफ को देखते हुए । एक परिभाषित अपडेट करें कार्रवाई की बढ़त एक प्रविष्टि के रूप में 1) करने के लिए या 2) की बढ़त आ विलोपन से । उद्देश्य यह है कि एक अपडेट ऑपरेशन के बाद सभी जोड़ों के सबसे छोटे रास्तों की कुशलता से खोज की जाए। कुशलता से, हमारा मतलब है कि प्रत्येक अपडेट ऑपरेशन के बाद, एक ऑल-पेयर-शॉर्टेस्ट-पाथ एल्गोरिथ्म, जैसे कि बेलमैन-फोर्ड एल्गोरिथ्म को निष्पादित करने से बेहतर है।G=(V,E)eEeE


संपादित करें: नीचे समस्या का एक सरलीकृत संस्करण है:

एक भारित ग्राफ दिया गया है, जिसमें यूनिडायरेक्शनल किनारों शामिल हैं, और दो महत्वपूर्ण कोने एस और टी हैं । उम्मीदवार के द्विदिश किनारों का एक सेट सी भी दिया गया है। मुझे s से t तक की दूरी को कम करने के लिए एक बढ़त ( u , v ) minimize C बनानी होगीG(V,E)stC(u,v)Cst


अधिक स्पष्टीकरण सवाल: क्या आपके रास्ते के समापन बिंदु हर बार तय रहते हैं? क्या आप केवल किनारे-प्रविष्टि के मामले में रुचि रखते हैं, या ग्राफ में मनमाने ढंग से परिवर्तन करते हैं? मुझे लगता है कि आपके सवाल का जवाब देने के लिए अनुसंधान है, लेकिन दुर्भाग्य से मुझे वास्तव में नहीं पता है कि कहां देखना है। एक त्वरित Google खोज इन स्लाइड्स को बदल देती है जो बहुत मददगार लगती हैं, और यह पेपर: "डायनेमिक ग्राफ़ पर सबसे छोटा रास्ता" (उम्मीद है कि लिंक)। (u,v)
usul

जवाबों:


14

जैसा कि आपने शायद देखा है कि समस्या एक काफी कठिन समस्या है। वेब की जाँच करने से कुछ जटिल उदाहरण सामने आएंगे जिनकी शायद आपको आवश्यकता नहीं होगी। यहाँ एक समाधान है - आवश्यकता के रूप में (यानी आपको खरोंच से सब कुछ पुनर्गणना करने की आवश्यकता नहीं है)।

बढ़त जोड़ने के मामले के लिए - तो अपने पहले से निर्मित दूरी मैट्रिक्स का उपयोग करके - निम्नलिखित करें:(u,v)

नोड्स और y की प्रत्येक जोड़ी के लिए अगर d ( ( x , u ) ) + c ( ( u , v ) ) + d ( ( v , y ) ) < d ( ( x , y ) ) - यह किया जा सकता है में हे ( एन 2 ) आप नोड्स के प्रत्येक जोड़ी के तुलना कर रहे हैं के बाद से।xyd((x,u))+c((u,v))+d((v,y))<d((x,y))O(n2)

एज विलोपन के मामले के लिए: पहले से निर्मित दूरी मैट्रिक्स को देखते हुए, तो आप हर नोड लिए रूट किए गए सबसे छोटे पथ के पेड़ हो सकते हैं । यदि हटाए गए किनारे उस पेड़ में नहीं है, तो यू से हर दूसरे तक के सबसे छोटे रास्ते प्रभावित नहीं होते हैं - (वे समान रहते हैं)।uueu

यदि , u के सबसे छोटे पथ वृक्ष में है , तो प्रत्येक नोड v के लिए ऐसा है कि सबसे छोटा पथ π ( u , v ) में e शामिल है , पथ परिवर्तित हो जाएंगे। इसलिए, यू से वी तक के सबसे छोटे पथ की गणना करें । अब, प्रत्येक नोड के लिए पिछले दोहराएं - यह सबसे अच्छा समाधान नहीं है। वास्तव में, इसके सबसे खराब मामले में यह खरोंच से हर काम करने के लिए समान रूप से समान है, लेकिन औसत पर बेहतर हो सकता है। euvπ(u,v)euv

अगर आप इससे बेहतर परिणाम चाहते हैं, तो एक नज़र डालिए:

  1. डेमेट्रेसस्कू, कैमिल और ग्यूसेप एफ। "गतिशील सभी जोड़े सबसे छोटे रास्तों के लिए एक नया दृष्टिकोण।" एसीएम (JACM) की पत्रिका 51.6 (2004): 968-992। (Google से स्वतंत्र रूप से पाया जा सकता है)

  2. या इस अच्छी तरह से लिखित सर्वेक्षण पर एक नज़र है


17

आप जिस समस्या के लिए पूछ रहे हैं वह एक प्रसिद्ध एल्गोरिथम समस्या है। यह वास्तव में अभी भी खुला है, यह समस्या कितनी कठिन है। आपको यह भी पता होना चाहिए कि इस समस्या के विभिन्न अवतार हैं। इसके विपरीत, जो आप पूछ रहे हैं, आमतौर पर केवल दूरियां लौटाई जाती हैं, जबकि आप वास्तविक सबसे छोटे रास्तों के लिए पूछ रहे हैं। ध्यान दें कि ये रास्ते पहले से ही लंबे हो सकते हैं। डायनेमिक ग्राफ़ एल्गोरिदम केवल किनारे हटने (डिक्रीमेंटल डीजी एल्गोरिदम), एज इंसर्शन केवल (इंक्रीमेंटल डीजी एल्गोरिदम) और एज इंसर्शन और डिलीशन (पूरी तरह से डायनामिक डीजी एल्गोरिदम) में अंतर करते हैं। इस प्रकार आप वृद्धिशील एल्गोरिदम में रुचि रखते हैं ।

O(n2(logn+log2(1+m/n))O(1)O(nlogn)किनारों, तो आप बस दिक्जस्त्र और फिबोनाची-ढेर के साथ खरोंच से फिर से जोड़ सकते हैं और थोरूप के एल्गोरिथ्म के समान चलने का समय प्राप्त कर सकते हैं। इसलिए यदि आपके रेखांकन सघन नहीं हैं, तो मैं दिज्क्स्ट्रा का उपयोग करने की सलाह दूंगा।

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


(s,t)

@RondogiannisAristophanes वास्तव में जो अभी तक प्रस्तावित किया गया है वह किसी भी तरह से सबसे अच्छा है। इस पत्र पर एक नज़र डालें जो दावा करता है कि: "भारित निर्देशित या अप्रत्यक्ष रेखांकन के लिए वृद्धिशील और वृद्धिशील एकल-स्रोत लघु-पथ समस्याएं, एक मजबूत अर्थ में, कम से कम स्थिर सभी जोड़े के सबसे छोटे पथों के समान कठिन हैं। संकट।" (ईमानदार होने के लिए, मैंने केवल वें इंट्रो पढ़ा है) - संदर्भ: "डायनेमिक शॉर्टेस्ट पाथ प्रॉब्लम्स पर", रोडीटी एंड ज़्विक - लेकिन क्या आप हमें बताएंगे कि आपके पास सटीक समस्या क्या है? क्या विशिष्ट परिदृश्य? आपने अभी तक क्या किया है? - शायद हम आपकी बेहतर मदद कर सकें।
एजेएड

@RondogiannisAristophanes बेहतर प्रदर्शन, कठिन यह लागू करने के लिए है (ज्यादातर मामलों में) और कभी-कभी व्यावहारिक अनुप्रयोगों में आपको प्रदर्शन पर सभी सुधार की आवश्यकता नहीं होती है।
एजेएड

@AJed मैंने समस्या के सरलीकृत विवरण को शामिल करने के लिए अपनी पोस्ट को संपादित किया।
रोंतोगियनिस एरिस्टोफैनिस

5

मेरा मानना ​​है कि AD * एल्गोरिदम आपकी मदद कर सकता है।

http://www.cs.cmu.edu/~ggordon/likhachev-etal.anytime-dstar.pdf

जब अंतर्निहित ग्राफ के बारे में अद्यतन जानकारी प्राप्त होती है, तो एल्गोरिदम अपने पिछले समाधान की मरम्मत करता है। परिणाम एक ऐसा दृष्टिकोण है जो किसी भी समय और वृद्धिशील योजनाकारों के संयोजन को जटिल, गतिशील खोज समस्याओं के लिए fi, cient समाधान प्रदान करता है।

AD * हाइलाइट्स: यह "कभी भी" है, जिसका अर्थ है कि यह आपको बहुत जल्दी "सब-इष्टतम समाधान" दे सकता है, हालांकि यह सबसे अच्छा नहीं हो सकता है। हालांकि पर्याप्त समय देते हुए, यह इष्टतम समाधान लौटाएगा। इसके अलावा, आप उप-इष्टतम समाधान को कुछ उपयोगकर्ता द्वारा परिभाषित निरंतर द्वारा इष्टतम समाधान से बदतर नहीं होने के लिए प्रतिबंधित कर सकते हैं। यह आपको वास्तविक समय नियोजन परिदृश्य में इसका उपयोग करने की क्षमता प्रदान करता है, जहां एक ठीक समाधान (जहां 'ठीक है' सैद्धांतिक रूप से बाध्य है) का कोई समाधान नहीं होने से बेहतर है।

http://www.cs.cmu.edu/~maxim/software.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.