यदि आप बीएफएस कार्यान्वयन में कतार को एक स्टैक में बदलते हैं तो क्या आपको डीएफएस मिलता है?


35

यहाँ पहली खोज के लिए मानक छद्मकोड है:

{ seen(x) is false for all x at this point }
push(q, x0)
seen(x0) := true
while (!empty(q))
  x := pop(q)
  visit(x)
  for each y reachable from x by one edge
    if not seen(y)
      push(q, y)
      seen(y) := true

यहाँ pushऔर popमाना जाता है कि कतार संचालन होता है। लेकिन क्या होगा अगर वे स्टैक ऑपरेशन हैं? क्या परिणामस्वरूप एल्गोरिथ्म गहराई-पहले क्रम में कोने पर जाता है?


यदि आपने "यह तुच्छ है" टिप्पणी के लिए मतदान किया है, तो मैं आपको यह बताने के लिए कहूंगा कि यह तुच्छ क्यों है। मुझे समस्या काफी मुश्किल लगती है।


5
मैंने छात्रों को इसके साथ संघर्ष करते देखा है, इसलिए मुझे नहीं लगता कि यह कड़ाई से बहुत सरल है। हालांकि, "हां" या "नहीं" से अधिक एक उत्तर में क्या होना चाहिए? वांछित ग्रैन्युलैरिटी प्रश्न से स्पष्ट नहीं है।
राफेल

2
"हाँ" एक ठोस तर्क के साथ आएगा; "नहीं" एक प्रतिरूप के साथ आएगा। लेकिन हाँ / नहीं से बेहतर जवाब हैं एक बार जब आप समझ जाते हैं कि क्या हो रहा है ...
rgrig


3
छद्म कोड लिखना संभव है ताकि बस popएक स्टैक या एक कतार ऑपरेशन में बदलकर , हम डीएफएस या बीएफएस प्राप्त करें। छद्म कोड लिखना भी आसान है जिसके लिए यह पहली बार में प्रतीत होता है कि यह सच है, लेकिन ऐसा नहीं है। ics.uci.edu//~eppstein/161/960215.html एक प्रासंगिक संदर्भ है।
जो

जवाबों:


23

नहीं, यह DFS जैसा नहीं है।

ग्राफ पर विचार करें

यहाँ छवि विवरण दर्ज करें

यदि आप दाएं से बाएं क्रम में नोड्स को धक्का देते हैं, तो एल्गोरिथ्म आपको एक आघात देता है:

A,B,E,C,D

जबकि एक DFS यह होने की उम्मीद करेगा

A,B,E,D,C

समस्या इसलिए होती है क्योंकि आप इसे धक्का देने के समय पर देखते हैं, बजाय जाने के समय पर। जैसा कि टिप्पणियों में बताया गया है, यदि आप यात्रा के समय चिन्हित करते हैं, तो आपकी अंतरिक्ष आवश्यकताएँ बजाय तक जा सकती हैं ।Θ(V+E)O(V)

मैं सहमत हूं, समस्या तुच्छ नहीं है।


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

3
@rgrig: खैर, यह संभावित ट्रैवर्सल्स में से एक है, और इससे एक अनुक्रम होता है जो डीएफएस में नहीं है। कोई फर्क नहीं पड़ता कि कैसे आप पुनरावृति, अंकन के रूप में देखा 'नीचे' डीएफएस में परिणाम होगा गलत बाहर आने के लिए, यदि आप पर न जाएं पहले। DED
आर्यभट्ट

1
@ आर्यभट्ट: ओह, क्षमा करें, मुझे नहीं पता कि मैं क्यों मान रहा था कि आप किनारों को निर्देशित करने और नीचे की ओर इशारा करने के लिए थे। उनके अप्रत्यक्ष हैं, इसलिए आप सही हैं: टिप्पणी में जो मैं कह रहा था, उसके लिए भी यह एक प्रतिरूप है। (यह अजीब है: मुझे आपके हैंडल को
मिस करना
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.