DAG में दो कोने के बीच सबसे छोटा और सबसे लंबा रास्ता खोजना


14

एक अनजाने डीएजी (निर्देशित एसाइक्लिक ग्राफ) D=(V,A) और दो कोने s और t , क्या बहुपद समय में s से तक सबसे छोटा और लंबा रास्ता खोजना संभव है t? पथ की लंबाई किनारों की संख्या से मापा जाता है।

मैं बहुपद समय में संभव पथ लंबाई की सीमा को खोजने में रुचि रखता हूं।

Ps।, यह प्रश्न एक DAG में StackOverflow प्रश्न सबसे लंबे पथ का डुप्लिकेट है ।

जवाबों:


10

सबसे छोटी पथ समस्या के लिए, यदि हम वज़न की परवाह नहीं करते हैं, तो चौड़ाई पहली खोज एक निश्चित तरीका है। अन्यथा दीजकस्ट्रा का एल्गोरिदम तब तक काम करता है जब तक कि कोई नकारात्मक किनारा न हो।

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


2
Bellman- फोर्ड है एक गतिशील प्रोग्रामिंग एल्गोरिथ्म।
राफेल

1
@ राफेल हाँ, लेकिन मुझे लगता है कि सभी किनारे भार को नकारने के बजाय अधिकतम पथ खोजने के लिए एक सीधा डीपी एल्गोरिदम है।
jmite

1
@jmite: क्यों, निश्चित रूप से: केवल बेलमैन-फोर्ड को रूपांतरण ऑनलाइन करने के लिए बदलें, या अधिकतम करें, या ...
राफेल

1
वैसे, मैं सहज रूप से आश्वस्त नहीं हूं कि एनपी-पूर्ण समस्या लॉन्गेस्ट पथ इस प्रकार पीएजी पर डीएजी में आसानी से है। मैं एक सबूत / संदर्भ / स्पष्टीकरण की सराहना करता हूं।
राफेल

2
इसके अलावा DAG के

8

चलो और एम = | ( जी ) | । चलो डब्ल्यू ( एक ) बढ़त के वजन को निरूपित ( एक ) । मान लीजिए कि आप न्यूनतम और अधिकतम पथ लागत को s से t तक खोजना चाहते हैं ।n=|V(G)|m=|E(G)|w(ab)(ab)st

से शुरू होकर , निम्नलिखित कार्य करें:b:=t

  1. bmin(b)max(b)b

  2. निर्धारित करें और रिकॉर्ड करें और निम्नानुसार है।min(b)max(b)

    • यदि , स्टोर ।b=smin(s):=max(s):=0
    • Else set अनदेखी जिसके लिए । किनारों के खाली सेट पर न्यूनतम और अधिकतम की गणना करते समय (इनबाउंड किनारों पर या सभी को नजरअंदाज नहीं किया जाता है), सेट करें ।
      min(b):=minab[w(ab)+min(a)]max(b):=maxab[w(ab)+max(a)]
      min(a)=max(a)=inaccessiblebmin(b):=max(b):=inaccessible

आपको यह साबित करने में सक्षम होना चाहिए कि यह एल्गोरिथ्म में चलता है , सभी शीर्ष क्रियाओं को शुरू करने के लिए आवश्यक समय की उपेक्षा करता है।O(m)


यह पुनरावर्ती "पुल" दृष्टिकोण वास्तव में सामान्य गतिशील "पुश" दृष्टिकोण से धीमा हो सकता है और इसे पुनरावृत्ति को संभालने के लिए रैखिक आकार के ढेर की आवश्यकता होती है। सामान्य दृष्टिकोण एक सामयिक क्रम में कोने लेना है और वर्तमान नोड के प्रत्येक पड़ोसी के लिए अंतरिम न्यूनतम और अधिकतम सुधार करना है। वर्तमान नोड में हमेशा न्यूनतम और अधिकतम का अंतिम मूल्य होता है क्योंकि सभी इनबाउंड किनारों का उपयोग उन्हें सुधारने के लिए पहले से ही किया जाना चाहिए।
पलेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.