20

मेरे पास डीएजी (लागत/भार प्रति किनारे के साथ) है और नोड्स के दो सेटों के बीच सबसे लंबा रास्ता खोजना चाहता है। ग्राफ में नोड्स की कुल संख्या की तुलना में प्रारंभ और लक्ष्य नोड्स के दो सेट अलग-अलग हैं और आकार में छोटे हैं।प्रारंभ और लक्ष्य बिंदुओं के सेट के साथ ग्राफ में सबसे लंबा पथ कैसे खोजें?

मुझे पता है कि एक के बीच यह कुशलतापूर्वक कैसे करें और नोड को लक्षित करें। एकाधिक के साथ, मैं प्रत्येक लक्ष्य से प्रत्येक लक्ष्य नोड तक सभी पथ सूचीबद्ध कर सकता हूं और सबसे लंबा चुन सकता हूं - लेकिन यह एकल पथ खोजों की श्रेणीबद्ध संख्या लेता है। क्या कोई बेहतर तरीका है?

+0

http://www.geeksforgeeks.org/find-longest-path-directed-acyclic-graph/ – Techie

+1

यह उपयोगी हो सकता है। [DAG में सबसे लंबे समय तक पथ] [1] [1]: http://stackoverflow.com/questions/10712495/longest-path-in-a-dag –

उत्तर

15

मुझे लगता है कि आप सबसे लंबे रास्ते से संभव है कि पहले सेट से किसी भी नोड में शुरू होता है और दूसरे सेट में किसी भी नोड में समाप्त होता है।

  • प्रथम नोड कोई पूर्ववर्तियों है और उसके उत्तराधिकारियों पहले सेट से नोड्स हैं: तो फिर तुम दो आभासी नोड्स जोड़ सकते हैं।

  • दूसरे नोड में कोई उत्तराधिकारी नहीं है और इसके पूर्ववर्ती दूसरे सेट से नोड्स हैं।

सभी नए जोड़े गए किनारों में शून्य वजन होना चाहिए।

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

वैसे, यह समाधान अनिवार्य रूप से पहले सेट से सभी नोड्स से एल्गोरिदम निष्पादित कर रहा है, लेकिन अनुक्रमिक दृष्टिकोण के विपरीत समानांतर में आपके प्रश्न से पता चलता है।

+0

मुझे आशा है कि मैं इस सवाल का जवाब भी स्वीकार नहीं किया जल्दी, क्योंकि सहजता से यह बहुत समझ में आता है और आश्चर्यजनक रूप से आसान है! दूसरी तरफ मैं अभी भी ब्रूट फोर्स सॉल्यूशन के खिलाफ इसका परीक्षण करना चाहता हूं। लेकिन जहां तक ​​मैं सोच सकता हूं कि यह पूरी तरह से काम करेगा! धन्यवाद! – starmole

+0

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

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