दिज्क्स्ट्रा के एल्गोरिथ्म का उपयोग केवल तब किया जाता है जब आपके पास एक ही स्रोत होता है और आप एक नोड से दूसरे तक का सबसे छोटा रास्ता जानना चाहते हैं, लेकिन विफल रहता है [नकारात्मक किनारों वाले ग्राफ़ में]
दिज्क्स्ट्रा का एल्गोरिथ्म एकल-स्रोत लघु पथ या एसएसएसपी एल्गोरिदम का एक उदाहरण है। हर एसएसएसपी एल्गोरिथ्म एक चुने हुए स्रोत नोड से कम से कम-पथ दूरी की गणना करता है को हर ग्राफ़ की अन्य नोड। इसके अलावा, यह एक जड़ वाले पेड़ के रूप में, एस से हर दूसरे नोड के लिए सभी सबसे छोटे रास्तों का एक कॉम्पैक्ट प्रतिनिधित्व करता है । विकिपीडिया कोड में, इस पेड़ में v का जनक है ।रोंरोंprevious[v]
v
नकारात्मक किनारों के साथ रेखांकन में दिक्क्स्ट्रा के एल्गोरिथ्म का व्यवहार चर्चा के तहत सटीक रूप पर निर्भर करता है। एल्गोरिथ्म के कुछ संस्करण, जैसे विकिपीडिया में एक है, हमेशा जल्दी से चलता है लेकिन नकारात्मक किनारों के होने पर सबसे छोटे रास्तों की सही गणना नहीं करता है। अन्य वेरिएंट, जैसे इन लेक्चर नोट्स में हमेशा सबसे छोटे रास्तों की सही गणना की जाती है (जब तक कि स्रोत से एक नकारात्मक चक्र उपलब्ध न हो) लेकिन सबसे खराब स्थिति में घातीय समय की आवश्यकता हो सकती है यदि नकारात्मक किनारे हों।
फ़्लॉइड-वारशॉल के एल्गोरिथ्म का उपयोग तब किया जाता है जब सभी नोड्स में से कोई भी एक स्रोत हो सकता है, इसलिए आप चाहते हैं कि किसी भी स्रोत नोड से किसी भी गंतव्य नोड तक पहुंचने के लिए सबसे कम दूरी हो। यह केवल तभी विफल होता है जब नकारात्मक चक्र होते हैं।
यह सही है। फ्लोयड-वारशॉल एक सभी-जोड़े सबसे छोटे पथ एल्गोरिथम का एक उदाहरण है , जिसका अर्थ है कि यह प्रत्येक जोड़ी नोड्स के बीच सबसे छोटे पथ की गणना करता है । एक और उदाहरण है "प्रत्येक नोड वी के लिए, स्रोत नोड के रूप में वी के साथ दिज्क्स्त्र चलाएं"। कई अन्य हैं।
बेल्मन-फोर्ड का उपयोग दिक्जस्ट्रा की तरह किया जाता है, जब केवल एक स्रोत होता है। यह नकारात्मक भार को संभाल सकता है और इसका कार्य फ्लोयड-वारशॉल के समान है, सिवाय एक स्रोत के, सही?
ओ ( वी)3)ओ ( वी)2इ)ओ ( वी)इ)
अधिक जानकारी के लिए, अपने पसंदीदा एल्गोरिदम पाठ्यपुस्तक से परामर्श करें। (आपके पास एक पसंदीदा एल्गोरिदम पाठ्यपुस्तक है, क्या आप नहीं?)