Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में फ़्लॉइड-वॉर्शल एल्गोरिथम


जिकस्ट्रा के एल्गोरिथम का उपयोग एक नोड से अन्य सभी नोड्स तक के सबसे छोटे पथ की दूरी/पथ को खोजने के लिए किया जाता है। ऐसे मामले हैं जहां हमें सभी नोड्स से अन्य सभी नोड्स के लिए सबसे छोटा रास्ता खोजने की आवश्यकता है। यह वह जगह है जहां सभी जोड़े सबसे छोटा पथ एल्गोरिदम काम में आते हैं। सबसे अधिक इस्तेमाल किया जाने वाला सबसे छोटा पथ एल्गोरिथम फ़्लॉइड वारशॉल एल्गोरिथम है।

फ़्लॉइड वारशॉल एल्गोरिथम निम्न प्रकार से कार्य करता है -

  • हम दूरियों के एक N x N मैट्रिक्स को इनफिनिटी के रूप में प्रारंभ करते हैं।
  • फिर प्रत्येक किनारे u, v के लिए, हम इस मैट्रिक्स को इस किनारे का भार दिखाने के लिए अपडेट करते हैं और किनारों v, v के लिए हम वजन को 0 पर अपडेट करते हैं।
  • हम इटरेटर I, j और k के साथ 3 नेस्टेड लूप बनाते हैं। प्रत्येक नोड के लिए I की दूरी प्रत्येक नोड j के लिए, हम k को मध्यवर्ती बिंदुओं के रूप में उपयोग करने पर विचार करते हैं और यदि हमें मौजूदा arr[i][j] से कम मिलता है तो दूरी को अपडेट करें।

मैट्रिक्स का उपयोग करने के बजाय, हम किसी ऑब्जेक्ट का उपयोग करेंगे क्योंकि यदि हम प्रत्येक नोड का प्रतिनिधित्व करने के लिए जटिल ऑब्जेक्ट का उपयोग कर रहे हैं तो हमें इंडेक्स का ट्रैक रखने की आवश्यकता नहीं है।

आइए अब उसी के क्रियान्वयन पर एक नजर डालते हैं -

उदाहरण

floydWarshallAlgorithm() { let dist ={}; के लिए (चलो मैं =0; मैं  (dist[this.nodes[i]][e.node] =e.weight) ); this.nodes.forEach(n => {// अन्य सभी नोड्स के लिए इसे अनंत को असाइन करें यदि (dist[this.nodes[i]][n] ==undefined) dist[this.nodes[i]][n] =इन्फिनिटी; // सेल्फ एज के लिए डिस्ट को 0 पर असाइन करें यदि (यह। नोड्स [i] ===n) डिस्ट [यह। नोड्स [i]] [n] =0;}); } यह। सीधे i से j तक जा रहा है। यदि हाँ तो // i से j मान को नए मान में अपडेट करें यदि (dist[i][k] + dist[k][j]  

आप -

. का उपयोग करके इसका परीक्षण कर सकते हैं

उदाहरण

चलो g =नया ग्राफ़ ();g.addNode("A");g.addNode("B");g.addNode("C");g.addNode("D");g.addEdge ("ए", "सी", 100);g.addEdge("A", "B", 3);g.addEdge("A", "D", 4);g.addEdge("D", "सी", 3);console.log(g.floydWarshallAlgorithm());

आउटपुट

यह आउटपुट देगा -

 {ए:{सी:7, बी:3, डी:4, ए:0}, बी:{ए:3, बी:0, सी:10, डी:7}, सी:{ए:7 , डी:3, बी:10, सी:0}, डी:{ए:4, सी:3, बी:7, डी:0}}

  1. जावास्क्रिप्ट में नया लक्ष्य

    new.target एक मेटाप्रॉपर्टी है जो हमें रनटाइम पर यह निर्धारित करने की अनुमति देती है कि एक फ़ंक्शनर कंस्ट्रक्टर को new कीवर्ड का उपयोग करके बुलाया गया था या नहीं। जावास्क्रिप्ट में new.target के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <m

  1. जावास्क्रिप्ट में डिबगर स्टेटमेंट

    जावास्क्रिप्ट में डिबगर स्टेटमेंट का उपयोग कोड में ब्रेकपॉइंट सेट करने के लिए किया जाता है। जैसे ही यह डिबगर स्टेटमेंट का सामना करता है और डिबगर फ़ंक्शन (यदि उपलब्ध हो) को कॉल करता है, तो कोड निष्पादन को रोक देता है। जावास्क्रिप्ट में डिबगर स्टेटमेंट को लागू करने के लिए कोड निम्नलिखित है - उदाहरण &

  1. जावास्क्रिप्ट में छवि () ऑब्जेक्ट।

    छवि वस्तु HTML तत्व का प्रतिनिधित्व करती है। जावास्क्रिप्ट में इमेज ऑब्जेक्ट के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-sc