कम वजन वाले अनैफैटिक ग्राफ में सबसे छोटे रास्ते खोजें


12

एक निर्देशित ग्राफ को यूनीपैथिक कहा जाता है यदि ग्राफ G = ( V , E ) में किसी भी दो वर्टीकल u और v के लिए , यू से v तक का सबसे सरल मार्ग है ।G=(V,E)uv

मान लीजिए कि मुझे एक यूनीपैथिक ग्राफ दिया गया है Gजैसे कि प्रत्येक किनारे का एक सकारात्मक या नकारात्मक वजन है, लेकिन इसमें कोई नकारात्मक भार चक्र नहीं है।

इस से मैं एक लगाना चाहते O(|V|) एल्गोरिथ्म है कि पाता सब कम से कम सभी नोड्स के लिए एक स्रोत नोड से रास्तों s

मुझे यकीन नहीं है कि मैं इस समस्या के बारे में कैसे बताऊंगा। मैं यह देखने की कोशिश कर रहा हूं कि मैं इस तथ्य का उपयोग कैसे कर सकता हूं कि इसमें कोई नकारात्मक वजन चक्र नहीं है और निश्चित रूप से किसी भी नोड u से बीच सबसे सरल मार्ग पर है v


1
अब तक तुमने क्या प्रयास किये हैं? यदि आप पूरी तरह से फंस गए हैं, तो छोटे से शुरू करें: क्या यूनीपैथिक ग्राफ वास्तव में दिखते हैं? उदाहरण के लिए, हर एक ग्राफ के साथ एक शीर्ष रेखा, दो कोने, तीन कोने, और इसी तरह से ड्रा करें। आप एक उपयोगी पैटर्न हाजिर कर सकते हैं। इसके अलावा, आप उल्लेख करते हैं कि कोई नकारात्मक वजन चक्र नहीं हैं - क्या चक्र (किसी भी वजन के) भी हो सकते हैं?
जुहो

@mrm आप किस पैटर्न के बारे में सोच रहे हैं? Unipathic रेखांकन में चक्र हो सकते हैं, एक विवश तरीके से जिसे मैं व्यक्त करने का आसान तरीका नहीं पा सकता हूं।
गिल्स एसओ- बुराई को रोकें '

@mrm नंबर एक किनारे पर अधिकतम एक चक्र हो सकता है। एक नोड किसी भी संख्या में चक्रों से संबंधित हो सकता है: -pointed- स्टार के आकार का ग्राफ E = i। Nn unipathic है (और आप और भी अधिक प्राप्त कर सकते हैं प्रति चक्र प्राथमिक चक्र का अनुपात)। =मैंn{(,मैं),(मैं,)}
गाइल्स 'एसओ- बुराई को रोकना'

जवाबों:


10

एक डेटा प्रतिनिधित्व चुनें

सबसे पहले, परिणाम का आकार देखें। आप से कम से कम पथ का संग्रह चाहते हर दूसरे नोड के लिए। जब तक एक मार्ग की औसत लंबाई एक निरंतर (जो यह नहीं है से घिरा है: किसी भी सूची unipath है, और अगर आप रूट लेने के लिए है रास्तों की कुल लंबाई है n ( n - 1 ) / 2 जहां n है सूची की लंबाई), आपको अपने डेटा प्रतिनिधित्व में सावधानी बरतने की आवश्यकता होगी: पथ वाले संरचना को पथों के बीच साझाकरण का उपयोग करना होगा।रोंरोंn(n-1)/2n

चक्रों को छोड़कर, से किसी भी अन्य नोड यू के लिए एक ही रास्ता है । यदि वह मार्ग मध्यवर्ती नोड t से होकर जाता है , तो पथ का पहला खंड s से t तक का वांछित पथ है । रोंयूटीरोंटी

मैं एक सरणी, से गिने नोड्स द्वारा अनुक्रमित में परिणाम की दुकान का प्रस्ताव करने के लिए | | - 1 , s = 0 के साथ । सरणी में प्रत्येक तत्व उस नोड के पथ पर पिछले नोड के सूचकांक को संग्रहीत करता है (उदाहरण के लिए - 1 नोड्स के लिए एक विशेष मार्कर के रूप में जो एस से पहुंच से बाहर है )। से पथ रों को0||-1रों=0-1रोंरोंहोगा ( s = R [ R [ t ] ] , , R [ R [ t]टी(रों=आर[...आर[टी]...],...,आर[आर[टी]],आर[टी],टी)

ग्राफ को पार करें

को सभी को प्रारंभ करें - 1आर-1

से शुरू होने वाले ग्राफ की गहराई-पहले या चौड़ाई-पहले ट्रावेल करें । हर बार एक नोड यू पर पहुंचने पर, आर [ यू ] को उसके पूर्ववर्ती पर सेट करें ।रोंयूआर[यू]

चूंकि चक्र हैं, एक नोड एक से अधिक बार पहुंचा जा सकता है। बीत रहा है इंगित करता है कि यू पहले से ही दौरा किया गया है।आर[यू]-1यू

शुद्धता साबित करो

एकतरफा संपत्ति के कारण, यह कोई फर्क नहीं पड़ता कि हम प्रत्येक नोड तक कैसे पहुंचते हैं, जब तक कि हमने एक चक्र पूरा नहीं किया है। केवल एक सरल मार्ग है।

जटिलता साबित करो

एल्गोरिथ्म प्रत्येक नोड तक एक से अधिक बार पहुंच सकता है, इसलिए यह स्पष्ट नहीं है कि इसकी जटिलता । किया गया कार्य वास्तव में हैहे(|वी|) जहाँ V 0 वे किनारे हैं जो स्रोत से उपलब्ध हैं। अधिक सटीक रूप से, हम केवल एक परिस्थिति में एक से अधिक बार नोड तक पहुंचते हैं: यदि नोड पहला है जो हम एक विशेष चक्र पर पहुंचते हैं, और इस मामले में हम इसे दो बार (एक सरल पथ से एक बार, और एक बार चक्र पूरा करने के बाद) तक पहुंचते हैं )।Θ(|0|)वी0

ठीक है फिर। आइए साबित करते हैं कि एक यूनीपैथिक ग्राफ में, प्राथमिक चक्रों की संख्या नोड्स की संख्या के साथ सबसे अधिक रैखिक रूप से बढ़ती है। (एक प्राथमिक चक्र वह है जिसमें एक छोटा चक्र नहीं होता है।) निम्नलिखित चर्चा में, मैं मान लूंगा कि ग्राफ में कोई आत्म-किनारे नहीं है (नोड से स्वयं के लिए कोई किनारा नहीं है; ऐसे किनारों को पथ निर्माण के लिए वैसे भी अप्रासंगिक है; )।

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

आप हो सकता है चक्र से चीज़ों को शेयर एक नोड एक और कोई अन्य नोड्स। परिणामी ग्राफ एकतरफा है। लंबाई 2 के चक्र के साथ, यह एक स्टार पैटर्न है जिसमें केंद्रीय नोड और किसी भी संख्या में नोड होते हैं ऐसा है किमैं , एक मैंमैंमैं,मैं

इसलिए हमें और कड़ी मेहनत करने की आवश्यकता है। ठीक है, चलो इसे प्रेरणादायक साबित करने की कोशिश करें। बता दें कि एक ग्राफ G , # E ( G ) किनारों की संख्या और # C ( G ) प्राथमिक चक्रों की संख्या है, जो स्वयं के किनारे नहीं हैं। मैं जोर देकर कहता हूं कि अगर G एकतरफा है और खाली नहीं है तो ##वी(जी)जी#(जी)#सी(जी)जी#सी(जी)#वी(जी)-1

एक या दो नोड्स वाले ग्राफ़ के लिए, यह स्पष्ट है। मान लीजिए कि सभी ग्राफ्स के लिए अभिकथन ऐसा है कि और G को n नोड्स के साथ एक यूनीपैथिक ग्राफ होने दें । यदि G का कोई चक्र नहीं है, तो 0 = # C ( G ) < # V ( G )#वी(जी)<nजीnजी0=#सी(जी)<#वी(जी) , केस बंद है। अन्यथा, चलो एक प्राथमिक चक्र हो।(1,...,)

चक्र को संकुचित करें: चलो ग्राफ जिसका नोड्स के हैं हो जी शून्य से { एक 1 , ... , एक मीटर } के साथ साथ एक नोड एक और जिनके किनारे सभी के किनारों हैं जी को शामिल नहीं एक मैं की, प्लस एक जी ' जब भी मैं , एक मैं जी और जी ' एक जब भी मैं , जी'जी{1,...,}जीमैंजी'मैं,मैंजीजी' सी । में हर पथ जी ' लाती में एक पथ जी (यदि पथ शामिलएक , तब तक इस की जगहएक मैंएक मैं + 1... एक j में जी )। इसलिए जी ' unipathic है। इसके अलावा, के बाद से में चक्र जी किनारों का हिस्सा नहीं है, जी ' के सारे चक्र है जी एक हम सफाया के लिए छोड़कर: # ( जीमैं,जीमैंजी'जीसीमैंमैं+1...जेसीजीजी'जीजी'जी । प्रेरण रखकर # सी ( जी ' ) # वी ( जी ' ) - 1 # सी ( G ) = # सी ( जी ' ) +#सी(जी')=#सी(जी)-1#सी(जी')#वी(जी')-1। चूंकि , हमारे पास#वी(जी')=#वी(जी)-+1#सी(जी)=#सी(जी')+1#वी(जी)-=n-n-1

यह प्रमाण को समाप्त करता है। ट्रैवर्सल इस प्रकार है किनारों।2|वी|-2

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