क्या मैं फ्लोयड-वारशॉल, डेज्स्ट्रा और बेलमैन-फोर्ड एल्गोरिदम के बीच अंतर के बारे में सही हूं?


16

मैं तीनों का अध्ययन कर रहा हूं और मैं नीचे से उनके बारे में बता रहा हूं। कोई मुझे बता सकता है कि क्या मैंने उन्हें पर्याप्त रूप से समझा है या नहीं? धन्यवाद।

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

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

  3. बेल्मन-फोर्ड का इस्तेमाल दिक्जस्त्र की तरह किया जाता है, जब एक ही स्रोत होता है। यह नकारात्मक भार को संभाल सकता है और इसका कार्य फ्लोयड-वारशॉल के समान है, सिवाय एक स्रोत के, सही? (यह वह है जिसके बारे में मुझे कम से कम यकीन है।)


स्वागत हे! मैंने निरर्थक कोड भागों को संपादित किया; लोग अपने दम पर विकिपीडिया पर क्लिक कर सकते हैं, या अपनी पसंदीदा पाठ्यपुस्तकों में एल्गोरिदम की जांच कर सकते हैं। ध्यान दें कि आपका प्रश्न पूछने के लिए एक अजीब है, क्योंकि एक "हां" उत्तर में अधिक कुछ नहीं हो सकता है।
राफेल

जवाबों:


23

दिज्क्स्ट्रा के एल्गोरिथ्म का उपयोग केवल तब किया जाता है जब आपके पास एक ही स्रोत होता है और आप एक नोड से दूसरे तक का सबसे छोटा रास्ता जानना चाहते हैं, लेकिन विफल रहता है [नकारात्मक किनारों वाले ग्राफ़ में]

दिज्क्स्ट्रा का एल्गोरिथ्म एकल-स्रोत लघु पथ या एसएसएसपी एल्गोरिदम का एक उदाहरण है। हर एसएसएसपी एल्गोरिथ्म एक चुने हुए स्रोत नोड से कम से कम-पथ दूरी की गणना करता है को हर ग्राफ़ की अन्य नोड। इसके अलावा, यह एक जड़ वाले पेड़ के रूप में, एस से हर दूसरे नोड के लिए सभी सबसे छोटे रास्तों का एक कॉम्पैक्ट प्रतिनिधित्व करता है । विकिपीडिया कोड में, इस पेड़ में v का जनक है ।रोंरोंprevious[v]v

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

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

यह सही है। फ्लोयड-वारशॉल एक सभी-जोड़े सबसे छोटे पथ एल्गोरिथम का एक उदाहरण है , जिसका अर्थ है कि यह प्रत्येक जोड़ी नोड्स के बीच सबसे छोटे पथ की गणना करता है । एक और उदाहरण है "प्रत्येक नोड वी के लिए, स्रोत नोड के रूप में वी के साथ दिज्क्स्त्र चलाएं"। कई अन्य हैं।

बेल्मन-फोर्ड का उपयोग दिक्जस्ट्रा की तरह किया जाता है, जब केवल एक स्रोत होता है। यह नकारात्मक भार को संभाल सकता है और इसका कार्य फ्लोयड-वारशॉल के समान है, सिवाय एक स्रोत के, सही?

हे(वी3)हे(वी2)हे(वी)

अधिक जानकारी के लिए, अपने पसंदीदा एल्गोरिदम पाठ्यपुस्तक से परामर्श करें। (आपके पास एक पसंदीदा एल्गोरिदम पाठ्यपुस्तक है, क्या आप नहीं?)


क्या आप अपने पसंदीदा एल्गोरिदम पाठ्यपुस्तक को साझा करना चाहेंगे?
अब्दुल


@ अब्दुल बैत। - MIT / स्टैनफोर्ड में उपयोग की जाने वाली पाठ्यपुस्तक T. Cormen, et al। एल्गोरिदम का परिचय। कॉर्नेल में उपयोग की जाने वाली पाठ्यपुस्तक जे। क्लेनबर्ग, एट अल एल्गोरिदम डिजाइन है। cs.sjtu.edu.cn/~jiangli/teaching/CS222/files/materials/...
AffluentOwl

2

सभी तीन एल्गोरिदम प्रो। जेहयुन पार्क (स्टैनफोर्ड यूनिवर्सिटी) द्वारा व्याख्यान स्लाइड में शामिल हैं। यहाँ लिंक Shortest Path Algorithms है


यह अंतर के बारे में सवाल का जवाब नहीं देता है और यह आत्म-निहित नहीं है, बस सारांश के बिना एक लिंक अच्छे उत्तर के रूप में नहीं गिना जाता है। इसके अलावा यह बेमानी लगता है, क्योंकि यह मौजूदा उत्तरों से अधिक कवर नहीं करता है।
ईविल

1

सबसे छोटी पथ समस्या पर विकिपीडिया पृष्ठ दो अलग-अलग समस्याओं का वर्णन करता है: SSSP और APSP।

एकल स्रोत सबसे छोटा पथ (SSSP):

  • डीजकस्ट्रा का एल्गोरिथ्म: एकल-स्रोत सबसे छोटी पथ समस्या को हल करता है।
    • अड़चन: केवल नकारात्मक किनारों को यह नहीं संभाल सकता है।
    • अनवीटेड रेखांकन: दिज्क्स्त्र का बीएफएस जैसा ही है।
  • बेलमैन-फोर्ड एल्गोरिथ्म: एकल-स्रोत समस्या को हल करता है यदि किनारे का वजन नकारात्मक हो सकता है। यह दिज्क्स्ट्रा पर सुधार है जहाँ यह अब नकारात्मक भार को संभालने में सक्षम है।

सभी जोड़ी सबसे छोटा रास्ता (APSP):

  • फ्लोयड-वारशॉ एल्गोरिथ्म: सभी जोड़े सबसे छोटे रास्तों को हल करता है। सकारात्मक और नकारात्मक दोनों किनारों को संभालता है।
    • बाधाएं: नकारात्मक चक्रों को नहीं संभाल सकती हैं।

इसलिए, फ्लोयड-वारशॉल बीएफएस के समान नहीं है, हालांकि अंतर्निहित कार्यप्रणाली समान है, गतिशील प्रोग्रामिंग।


1

शायद यह एक उत्तर के बजाय एक टिप्पणी होनी चाहिए, लेकिन यह इन एल्गोरिदम के बीच एक अंतर है जिसका अन्य उत्तर उल्लेख नहीं करते हैं।

लोग फ़्लॉइड के एल्गोरिथ्म फ़्लॉइड-वारशॉल को कॉल करते हैं , लेकिन फ़्लॉइड्स और वॉरशॉल के एल्गोरिदम समान नहीं हैं।

हे(1)हे(n2)

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