डीएफएस क्यों माना जाता है


11

इन नोटों के अनुसार , DFS माना जाता हैO(bm) अंतरिक्ष की जटिलता, जहां b पेड़ की शाखाओं में बंटी है और m राज्य अंतरिक्ष में किसी भी पथ की अधिकतम लंबाई है।

Uninformed Search के इस विकीबूक पृष्ठ में भी ऐसा ही कहा गया है ।

अब डीएफएस पर विकिपीडिया लेख का "इन्फोबॉक्स" एल्गोरिथ्म के अंतरिक्ष जटिलता के लिए निम्नलिखित प्रस्तुत करता है:

O(|V|), अगर पूरे ग्राफ को पुनरावृत्ति के बिना ट्रेस किया जाता है, O(सबसे लंबे पथ की खोज की) डुप्लिकेट नोड्स के उन्मूलन के बिना अंतर्निहित ग्राफ़ के लिए

जो कि मैंने सोचा था कि डीएफएस की अंतरिक्ष जटिलता के समान है, O(m), कहाँ पे m एल्गोरिथ्म द्वारा पहुंची गई अधिकतम लंबाई है।

मुझे ऐसा क्यों लगता है?

ठीक है, मूल रूप से हमें उस मार्ग के नोड्स की तुलना में किसी अन्य नोड्स को संग्रहीत करने की आवश्यकता नहीं है जो हम वर्तमान में देख रहे हैं, इसलिए गुणा करने का कोई मतलब नहीं है b विकीबूक और मेरे द्वारा आपको बताए गए नोटों द्वारा प्रदान किए गए विश्लेषण में।

इसके अलावा, रिचर्ड कोरफ द्वारा आईडीए * पर इस पत्र के अनुसार , डीएफएस की अंतरिक्ष जटिलता हैO(d), कहाँ पे d "गहराई कटऑफ" माना जाता है।

तो, डीएफएस की सही जगह की जटिलता क्या है?

मुझे लगता है कि यह कार्यान्वयन पर निर्भर हो सकता है, इसलिए मैं विभिन्न ज्ञात कार्यान्वयनों के लिए अंतरिक्ष जटिलता की व्याख्या की सराहना करूंगा।


DFS is considered to […] of the treeनहीं हर ग्राफ चल गहराई पहले एक है पेड़
ग्रेबियर

"यह यहाँ DFS कार्यान्वयन की लागत X है" और "DFS को कार्यान्वित किया जा सकता है ताकि इसमें X की लागत हो" कहने में अंतर है। तो दूसरी तरह के अलग-अलग बयानों के बारे में बहस हो रही है, जिन्हें बिल्कुल विरोधाभासी नहीं होना चाहिए। (ध्यान दें कि इसके बाद से कोई विरोधाभास नहीं हैहे()हे(), अगर हे()सब पर कोई मतलब है)।
राफेल

@greybeard क्या आप मुझे एक उदाहरण बता सकते हैं जहां एक ग्राफ पर गहराई से पहला ट्रैवर्स एक पेड़ में परिणत नहीं होगा?
नबंर

example where a depth-first traversal on a graph would not result in a treeयह बहुत अधिक विचार के बिना: पार्सिंग। (प्रतीक्षा करें: आपका क्या मतलब है result in a tree:? सवाल एक ग्राफ को खोजने / खोजने के बारे में है।)
ग्रेबर्ड

1
@greybeard सभी परिभाषाओं के अनुसार मैंने अब तक पाया है। मुझे एक परिभाषा प्राप्त करें जहां यह नोड्स का पुनरीक्षण करता है, फिर हम इसके बारे में चर्चा कर सकते हैं।
नाबर्न

जवाबों:


7

यह निर्भर करता है कि आप वास्तव में डीएफएस को क्या कहते हैं। उदाहरण के लिए विचार करें कि विकिपीडिया में वर्णित एल्गोरिथम डीएफएस-पुनरावृत्त , और मान लीजिए कि आप इसे एक पेड़ पर चलाते हैं ताकि आपको उन नोड्स पर नज़र रखने की ज़रूरत न पड़े जिन्हें आपने पहले ही देखा है। मान लीजिए कि आप इसे पूर्ण रूप से चलाते हैं-अदर का पेड़ । हम शब्दों के साथ उनके पेड़ में नोड्स की पहचान कर सकते हैं[b] सबसे अधिक लंबाई का m। एल्गोरिथ्म निम्नानुसार संचालित होता है:

  1. जड़ से शुरू करो। धक्का दें1,2,,b स्टैक के लिए (रिवर्स ऑर्डर में)।

  2. पॉप 1, और धक्का 11,12,,1 ढेर करने के लिए।

  3. पॉप 1 1, और धक्का 111,112,...,1 1 ढेर करने के लिए।

  4. ...

  5. पॉप 1-1, और धक्का 1,1-12,...,1-1 ढेर करने के लिए।

इस बिंदु पर, स्टैक में होता है

1,1-12,...,1-1,...,112,...,1 1,12,...,1,2,...,,

के कुल के लिए (-1)+1नोड्स। आप जांच कर सकते हैं कि यह समय में पिन है जिसमें स्टैक का आकार अधिकतम है।


2
समय में एक पिंट डॉक्टर को दूर रखता है।
बूढ़ा

3

बनाने के लिए यहां दो बिंदु हैं:

  1. यदि आप स्टैक में वर्तमान नोड के सभी वंशज का परिचय देते हैं, तो प्रभावी रूप से, अंतरिक्ष जटिलता है हे() कहाँ पे शाखा कारक है और अधिकतम लंबाई है। युवल फिल्मस का जवाब वास्तव में इस मामले को संदर्भित करता है। हालांकि, सामान्य रूप से ध्यान दें की तुलना में बहुत बड़ा है । इसके अलावा, कई डोमेन में, जैसे कि स्लाइडिंग-टाइल पहेली, ऊपरी एक निरंतर (उस विशिष्ट मामले में, 4) से घिरा है और इसलिए हम सुरक्षित रूप से कह सकते हैं कि डीएफएस में एक अंतरिक्ष जटिलता है जो है हे()

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

संक्षेप में, मैं यह कभी नहीं कहूंगा कि डीएफएस में एक अंतरिक्ष जटिलता है जो कि है हे() और, इसके बजाय, मैं दावा करता हूं कि इसकी अंतरिक्ष जटिलता है हे()

उम्मीद है की यह मदद करेगा,

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