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

जावास्क्रिप्ट में गहराई-पहली खोज ट्रैवर्सल


DFS सहोदर शीर्षों पर जाने से पहले बच्चे के शीर्षों पर जाता है; यानी यह किसी विशेष पथ की चौड़ाई का पता लगाने से पहले उसकी गहराई को पार कर जाता है। एक स्टैक (अक्सर प्रोग्राम का कॉल स्टैक रिकर्सन के माध्यम से) आमतौर पर एल्गोरिथम को लागू करते समय उपयोग किया जाता है।

DFS कैसे काम करता है -

  • आसन्न अगोचर शीर्ष पर जाएं। इसे विज़िट किए गए के रूप में चिह्नित करें। इसे प्रदर्शित करें। इसे एक स्टैक में पुश करें।
  • यदि कोई आसन्न शीर्ष नहीं मिलता है, तो स्टैक से एक शीर्ष पॉप अप करें। (यह स्टैक से सभी शीर्षों को पॉप अप करेगा, जिसमें आसन्न कोने नहीं हैं।)
  • नियम 1 और नियम 2 को तब तक दोहराएं जब तक कि स्टैक खाली न हो जाए।

आइए एक उदाहरण देखें कि डीएफएस ट्रैवर्सल कैसे काम करता है।

<थेड> <थ>विवरण <टीडी> जावास्क्रिप्ट में गहराई-पहली खोज ट्रैवर्सल <टीडी> जावास्क्रिप्ट में गहराई-पहली खोज ट्रैवर्सल <टीडी> जावास्क्रिप्ट में गहराई-पहली खोज ट्रैवर्सल <टीडी> जावास्क्रिप्ट में गहराई-पहली खोज ट्रैवर्सल <टीडी> जावास्क्रिप्ट में गहराई-पहली खोज ट्रैवर्सल <टीडी> जावास्क्रिप्ट में गहराई-पहली खोज ट्रैवर्सल <टीडी> जावास्क्रिप्ट में गहराई-पहली खोज ट्रैवर्सल
चरण ट्रैवर्सल
1 स्टैक को इनिशियलाइज़ करें।
2 Sचिह्नित करें के रूप में दौरा किया और इसे ढेर पर रख दिया। S . से किसी भी न देखे गए आसन्न नोड को एक्सप्लोर करें . हमारे पास तीन नोड हैं और हम उनमें से किसी को भी चुन सकते हैं। इस उदाहरण के लिए, हम नोड को वर्णानुक्रम में लेंगे।
3 Aचिह्नित करें के रूप में दौरा किया और इसे ढेर पर रख दिया। A . से किसी भी न देखे गए आसन्न नोड को एक्सप्लोर करें . दोनों एस और डी ए के निकट हैं लेकिन हम केवल अनजान नोड्स के लिए चिंतित हैं।
4 विजिट D और इसे विज़िट के रूप में चिह्नित करें और स्टैक पर रखें। यहां, हमारे पास B . है और सी नोड्स, जो D . के निकट हैं और दोनों अनजान हैं। हालाँकि, हम फिर से वर्णानुक्रम में चयन करेंगे।
5 हम B, . चुनते हैं इसे विज़िट के रूप में चिह्नित करें और स्टैक पर रखें। यहां बी कोई अनजान आसन्न नोड नहीं है। तो, हम B pop पॉप करते हैं ढेर से।
6 हम पिछले नोड पर लौटने के लिए स्टैक टॉप की जांच करते हैं और जांचते हैं कि क्या इसमें कोई अनजान नोड है। यहां, हमें D . मिलता है ढेर के शीर्ष पर होना।
7 केवल विज़िट नहीं किया गया आसन्न नोड D . से है सी . है अभी। इसलिए हम C, . पर जाते हैं इसे विज़िट के रूप में चिह्नित करें और इसे स्टैक पर रखें।

सी . के रूप में कोई अनजान आसन्न नोड नहीं है इसलिए हम स्टैक को तब तक पॉप करते रहते हैं जब तक हमें एक ऐसा नोड नहीं मिल जाता है जिसमें एक अनजान आसन्न नोड होता है। इस मामले में, कोई नहीं है और हम स्टैक खाली होने तक पॉप करते रहते हैं। आइए देखें कि हम इसे जावास्क्रिप्ट में कैसे लागू कर सकते हैं।

उदाहरण

DFS(node) {// एक स्टैक बनाएं और उसमें अपना प्रारंभिक नोड जोड़ें s =new Stack(this.nodes.length); चलो पता लगाया =नया सेट (); एस.पुश (नोड); // पहले नोड को एक्सप्लोर किए गए के रूप में चिह्नित करें। जोड़ें (नोड); // हम तब तक जारी रखेंगे जब तक हमारा स्टैक खाली नहीं हो जाता (!s.isEmpty ()) {let t =s.pop (); // स्टैक कंसोल से बाहर आने वाले प्रत्येक तत्व को लॉग करें। लॉग (टी); // 1. किनारों की वस्तु में, हम उन नोड्स की खोज करते हैं जिनसे यह नोड सीधे जुड़ा हुआ है। // 2. हम उन नोड्स को फ़िल्टर करते हैं जिन्हें पहले ही खोजा जा चुका है। // 3. फिर हम प्रत्येक बेरोज़गार नोड को खोजे गए के रूप में चिह्नित करते हैं और इसे स्टैक पर धकेलते हैं। this.edges[t] .filter(n => !explored.has(n)) .forEach(n => {explored.add(n); s.push(n); }); }} 

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

आप -

. का उपयोग करके इसका परीक्षण कर सकते हैं
चलो g =नया ग्राफ़ ();g.addNode("A");g.addNode("B");g.addNode("C");g.addNode("D");g.addNode ("ई");g.addNode("F");g.addNode("G");g.addEdge("A", "C");g.addEdge("A", "B"); g.addEdge("A", "D");g.addEdge("D", "E");g.addEdge("E", "F");g.addEdge("B", "G" );g.DFS("A");

आउटपुट

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

एडीईएफबीजीसी

  1. जावास्क्रिप्ट में स्ट्रिंग की खोज कैसे करें?

    जावास्क्रिप्ट में स्ट्रिंग खोजने के लिए निम्नलिखित कोड है - उदाहरण दस्तावेज़ बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़; } .result {फ़ॉन्ट-आकार:20px; फ़ॉन्ट-वजन:500; }जावास्क्रिप्ट में स्ट्रिंग की खोज करनावसंत का मौसम आने वाला है।यहां क्लिक करेंउपरोक्त स्ट्रिंग में स्प्रिं

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

    जावास्क्रिप्ट में स्टैक को लागू करने के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document

  1. जावास्क्रिप्ट में रैखिक खोज को लागू करना

    जावास्क्रिप्ट में रैखिक खोज को लागू करने के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Docu