अगर ब्रेडथ फर्स्ट सर्च (बीएफएस) तेजी से एक ही काम कर सकता है तो डायजेस्ट्रा के एल्गोरिथ्म का उपयोग क्यों करें?


109

दोनों का उपयोग एकल स्रोत से सबसे छोटा रास्ता खोजने के लिए किया जा सकता है। बीएफएस में चलता है O(E+V), जबकि दिज्कस्ट्रा में चलता है O((V+E)*log(V))

इसके अलावा, मैंने देखा है कि दिज्क्स्ट्रा ने रूटिंग प्रोटोकॉल में बहुत उपयोग किया है।

इस प्रकार, अगर बीएफएस तेजी से एक ही काम कर सकता है तो डीजेकस्ट्रा के एल्गोरिथ्म का उपयोग क्यों करें?

जवाबों:


156

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

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


1
दोनों एक ही परिणाम प्राप्त करेंगे अर्थात दो चक्करों के बीच का मार्ग, लेकिन केवल द्विजत्व ही सबसे छोटे मार्ग की गारंटी देगा।
एडविन

स्वीकृत उत्तर, दूसरी टिप्पणी देखें। यह समझाने का बहुत अच्छा तरीका है कि कम्प्यूटेशनल जटिलता अलग क्यों है: stackoverflow.com/questions/25449781/…
jmcarter9t

23

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

यदि आप सभी नोड्स के बीच समान दूरी पर विचार करेंगे, तो बीएफएस बेहतर विकल्प है।

उदाहरण के लिए, = 10, = 20, = = 5 A -> (B, C) -> (F)द्वारा दिए गए एज वेट के साथ विचार करें ।A->BA->CB->FC->F

यहां, यदि हम BFS को लागू करते हैं, तो उत्तर ABF या ACF होगा, क्योंकि दोनों ही सबसे छोटे रास्ते हैं (किनारों की संख्या के संबंध में), लेकिन अगर हम Dijstra को लागू करते हैं, तो इसका उत्तर ABF ही होगा क्योंकि यह जुड़ा हुआ भार मानता है पथ।


7

दीजकस्ट्रा का एल्गोरिदम

  • भारित रेखांकन के लिए BFS की तरह।
  • यदि सभी लागत समान हैं, तो दिक्जस्त्र = बीएफएस

स्रोत: https://cs.stanford.edu/people/abisee/gs.pdf


4

कार्यान्वयन के दृष्टिकोण से, दिक्जिस्ट्रा के एल्गोरिथ्म को बीएफएस की तरह लागू किया जा सकता है queueजिसमें ए के साथ स्वैप किया जा सकता है priority queue

स्रोत

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