मैं वर्तमान में निर्देशित ग्राफ़ में सबसे छोटे रास्तों का अध्ययन कर रहा हूं। एक नेटवर्क में सबसे छोटा रास्ता खोजने के लिए कई कुशल एल्गोरिदम हैं, जैसे कि डाइजेक्स्ट्रा या बेलमैन-फोर्ड-डी। लेकिन क्या होगा अगर ग्राफ गतिशील है? डायनामिक कहने से मेरा मतलब है कि हम प्रोग्राम के निष्पादन के दौरान कोने सम्मिलित या हटा सकते हैं। मैं एक नए सिरे से सबसे छोटे पथ एल्गोरिथम को फिर से चलाने की आवश्यकता के बिना, एक किनारे ई से डालने के बाद, एक वर्टेक्स से हर दूसरे शीर्ष यू के लिए सबसे छोटे रास्तों को अपडेट करने के लिए एक कुशल एल्गोरिदम खोजने की कोशिश कर रहा हूं । मैं यह कैसे कर सकता हूँ? अग्रिम में धन्यवाद।
- नोट: परिवर्तन एल्गोरिथ्म के पहले पुनरावृत्ति के बाद किया जा सकता है
- नोट [2]: दो नोड्स दिया जाता है, स्रोत और टी लक्ष्य। मुझे इन नोड्स के बीच सबसे छोटा रास्ता खोजने की जरूरत है। जब ग्राफ अद्यतन किया जाता है मैं केवल अद्यतन करने के लिए है π ( रों , टी ) , जो बीच कम से कम पथ है रों और टी ।
- नोट [3]: मैं केवल किनारे प्रविष्टि मामले में दिलचस्पी रखता हूं।
एक औपचारिक परिभाषा : एक ग्राफ को देखते हुए । एक परिभाषित अपडेट करें कार्रवाई की बढ़त एक प्रविष्टि के रूप में 1) ई करने के लिए ई या 2) की बढ़त आ विलोपन ई से ई । उद्देश्य यह है कि एक अपडेट ऑपरेशन के बाद सभी जोड़ों के सबसे छोटे रास्तों की कुशलता से खोज की जाए। कुशलता से, हमारा मतलब है कि प्रत्येक अपडेट ऑपरेशन के बाद, एक ऑल-पेयर-शॉर्टेस्ट-पाथ एल्गोरिथ्म, जैसे कि बेलमैन-फोर्ड एल्गोरिथ्म को निष्पादित करने से बेहतर है।
संपादित करें: नीचे समस्या का एक सरलीकृत संस्करण है:
एक भारित ग्राफ दिया गया है, जिसमें यूनिडायरेक्शनल किनारों शामिल हैं, और दो महत्वपूर्ण कोने एस और टी हैं । उम्मीदवार के द्विदिश किनारों का एक सेट सी भी दिया गया है। मुझे s से t तक की दूरी को कम करने के लिए एक बढ़त ( u , v ) minimize C बनानी होगी ।