Ford-Bellman एल्गोरिदम में ही कई चरण होते हैं (
n-1
)। प्रत्येक चरण में, ग्राफ़ के सभी किनारों की जांच की जाती है, और एल्गोरिद्म लागत
c
के प्रत्येक किनारे
(a, b)
के साथ आराम करने की कोशिश करता है।
किनारे पर आराम — यह
d[a]
मान
d[b] + c
। वास्तव में, इसका मतलब यह है कि हम किनारे और शीर्ष के लिए वर्तमान उत्तर।
d
सरणी प्रारंभिक शीर्ष से सबसे छोटी लंबाई की एक सरणी है, ठीक उसी तरह जैसे दिज्क्स्त्र में, हम शुरू में इसे यथासंभव बड़ी संख्या में भरते हैं, शुरुआती शीर्ष को छोड़कर, जिसमें आपको डालने की आवश्यकता होती है 0.
किनारों को संग्रहीत करने के लिए, आसन्न मैट्रिक्स या भार मैट्रिक्स का उपयोग नहीं किया जाता है, लेकिन एक सूची जो इंगित करती है कि किनारे किस नोड से निकलते हैं (<कोड>सेकोड>), जिसके लिए यह आता है (
to
) कोड>) और उसका वजन (<कोड>लागतकोड>)।
संरचना किनारा {
int से, से, लागत;
};
वेक्टर<किनारे> किनारों;
पूर्व>
INF
स्थिरांक "अनंत" संख्या दर्शाता है - इसे इस तरह से चुना जाना चाहिए कि यह स्पष्ट रूप से सभी संभावित पथ लंबाई से अधिक हो।