फ्लोयड का एल्गोरिदम


यदि किसी ग्राफ़ में ऋणात्मक भार का चक्र है, तो औपचारिक रूप से फ़्लॉइड-वॉर्शल एल्गोरिथम ऐसे ग्राफ़ पर लागू नहीं होता है।

वास्तव में, i शीर्षों के उन युग्मों के लिए, जिनके बीच ऋणात्मक भार के चक्र में प्रवेश करना असंभव है, एल्गोरिद्म ठीक से काम करेगा।

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

ऐसा करने के लिए, उदाहरण के लिए, निम्नलिखित मानदंड""पथ का अस्तित्वहीन होना" किया जा सकता है। तो, सामान्य फ़्लॉइड एल्गोरिथम को इस ग्राफ़ पर काम करने दें। फिर शीर्षों i और j अगर और केवल अगर i से कोई शीर्ष t पहुंच योग्य है और जिससे j पहुंच योग्य है, जिसके लिए  \(d) के बीच कोई सबसे छोटा रास्ता नहीं है [t][t]<0\)

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

मौखिक रूप से, समाधान का वर्णन इस प्रकार किया जा सकता है:
फ़्लॉइड-वॉर्शल एल्गोरिद्म द्वारा इनपुट ग्राफ़ के लिए काम करने के बाद, आइए शीर्षों के सभी युग्मों पर पुनरावृति करें \((i,j)\), और ऐसी प्रत्येक जोड़ी के लिए हम जाँचते हैं, i से j तक का सबसे छोटा रास्ता असीम रूप से छोटा है या नहीं। ऐसा करने के लिए, तीसरे शीर्ष टी पर पुनरावृति करते हैं, और यदि यह \(d[t][t] < 0\)  (अर्थात यह ऋणात्मक भार के चक्र में स्थित है), और यह i और j — तो पथ \((i,j)\) अनंत लंबाई का हो सकता है।

चूँकि फ़्लॉइड एल्गोरिथम अनुक्रमिक रूप से कोने के सभी जोड़े (i, j) के बीच की दूरी को आराम देता है, जिसमें i = j वाले भी शामिल हैं, और कोने की एक जोड़ी (i, i) के बीच की प्रारंभिक दूरी शून्य के बराबर है, तो विश्राम केवल हो सकता है यदि वर्टेक्स k ऐसा है कि d[i][k]+d[k][i]<0, जो वर्टेक्स i के माध्यम से एक नकारात्मक चक्र होने के बराबर है

आप यहां एक नकारात्मक चक्र खोजने के बारे में अधिक पढ़ सकते हैं: http://e-maxx.ru/algo/export_ford_bellman

ऋणात्मक भार के चक्र से रास्ता असंभव हो जाता है।