आप उचित रूप से निर्मित ग्राफ में अधिकतम प्रवाह समस्या को कम करके इस समस्या को हल कर सकते हैं। विचार इस प्रकार है:
- स्प्लिट नोड्स में ग्राफ में प्रत्येक नोड v: v में और वी बाहर।
- प्रत्येक नोड वी के लिए, वी से में v से क्षमता का एक किनारा जोड़ें।
- ग्राफ में एक दूसरे के किनारे (यू, वी) क्षमता 1.
- एक नया समर्पित गंतव्य नोड टी में जोड़े की में यू से बाहर वी को बढ़त के साथ बदलें।
- लक्ष्य से प्रत्येक के लिए वी नोड, वी से बढ़त जोड़ने में क्षमता 1.
- साथ टी के लिए टी के लिए रों से एक अधिकतम प्रवाह बाहर का पता लगाएं। प्रवाह का मूल्य नोड-विवाद पथों की संख्या है।
इस निर्माण के पीछे विचार इस प्रकार है। प्रारंभ नोड से गंतव्य नोड टी तक के किसी भी प्रवाह पथ में क्षमता एक होना चाहिए, क्योंकि सभी किनारों में क्षमता एक होती है। चूंकि सभी क्षमताओं अभिन्न हैं, एक अभिन्न अधिकतम प्रवाह मौजूद है। कोई भी दो प्रवाह पथ एक ही मध्यवर्ती नोड से गुजर सकता है, क्योंकि ग्राफ में नोड से गुजरने के कारण प्रवाह पथ कोसे में से किनारे को पार करना होगा, और यहां क्षमता एक तक सीमित कर दी गई है। इसके अतिरिक्त, यह प्रवाह पथ आपके द्वारा पहचाने गए तीन विशेष नोड्स में से एक पर समाप्त होने पर टी पर पहुंचना चाहिए, फिर उस नोड से किनारे के किनारे पर। इस प्रकार प्रत्येक प्रवाह पथ स्रोत नोड से तीन नोड्स में से एक में नोड-डिजॉइंट पथ का प्रतिनिधित्व करता है। तदनुसार, यहां एक अधिकतम प्रवाह की गणना करने से आप नोड-डिज्जॉइंट पथों की अधिकतम संख्या को खोज सकते हैं जिन्हें आप तीनों गंतव्यों में से किसी एक से ले जा सकते हैं।
आशा है कि इससे मदद मिलती है!
स्पष्ट होने के लिए, आपका मतलब है कि 'i' से शुरू होने वाला पथ, तीन लक्ष्य नोड्स में से प्रत्येक के माध्यम से जाता है, और फिर दोहराए बिना दोहराए बिना दोहराए जाते हैं सिवाय इसके कि दो सिरों समान हैं? साथ ही, क्या आप ऐसे सभी पथ ढूंढना चाहते हैं (जैसे आप कहते हैं) या सबसे छोटा रास्ता (जैसे इसे टैग किया गया है)? – Dougal
मेरे उद्देश्य में, मैं नोड i से शुरू करने वाला पथ ढूंढना चाहता हूं और लक्ष्य नोड पर परिष्करण करना चाहता हूं, नोड जेड कहें। यदि एक से अधिक पथ हैं, तो नोड्स i और node z को छोड़कर इन पथों में कोई भी नोड्स नहीं होना चाहिए। मैं इन सभी पथों को i से z तक ढूंढने की आशा करता हूं। – datcn
ओह, यह मैं (और templatetypedef) समझने से बहुत अलग है। तो आप 'i' से' z' तक पथों का एक सेट खोजना चाहते हैं जैसे कि पथ अलग हैं? संभावित रूप से ऐसे कई सेट हैं (आपके द्वारा चुने गए संभावित पथों के आधार पर)। तो हो सकता है कि आप जो करना चाहते हैं वह 'i' से' z' (उदाहरण के लिए चौड़ाई-पहली खोज के माध्यम से) के सभी पथ ढूंढें और फिर उन्हें एक पृथक सेट खोजने के लिए संसाधित करें। ऐसा करने का एक आसान तरीका, जो इस तरह का सबसे बड़ा सेट या कुछ भी नहीं मिलेगा: सेट से पथ चुनें, उस पथ को छेड़छाड़ करने वाले सभी अन्य पथों को हटा दें, दोहराएं। – Dougal