चौड़ाई खोज में 'चौड़ाई' का क्या अर्थ है?


11

मैं पहले खोज के बारे में जान रहा था और मेरे दिमाग में एक सवाल आया कि बीएफएस को ऐसा क्यों कहा जाता है। CLRS द्वारा एल्गोरिथ्म का परिचय पुस्तक में , मैं इसके लिए निम्नलिखित कारण पढ़ता हूं:

चौड़ाई-प्रथम खोज को इसलिए नाम दिया गया है क्योंकि यह खोजे गए और अनदेखे सिरों के बीच के सीमांत को समान रूप से विस्तृत करती है।

हालाँकि, मैं इस कथन का अर्थ नहीं समझ पा रहा हूँ। मैं इस शब्द "सीमा" और उस सीमा की चौड़ाई के बारे में उलझन में हूँ।

तो, क्या कोई इस प्रश्न का उत्तर इस तरह से दे सकता है जो मेरे जैसे शुरुआती के लिए समझना आसान है?


4
मामले में कुछ पाठक अंग्रेजी शब्द के अर्थ से परिचित नहीं हैं (इस तकनीकी शब्द के भाग के रूप में इसके उपयोग के बाहर): merriam-webster.com/dEDIA/breadth या dictionary.cambridge.org/dEDIA/english/breadth । यदि आप भौतिक वस्तु के आकार / आकार के बारे में बात कर रहे हैं तो यह "चौड़ाई" के समान है, "गहराई" से भिन्न आयाम। और ज्ञान की गहराई (एक विषय पर विशेषज्ञ) बनाम ज्ञान की चौड़ाई (विषयों के बहुत सारे) जैसे रूपात्मक अर्थ में।
पीटर कॉर्डेस

जवाबों:


22

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

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

नीचे दी गई छवि पर विचार करें। ध्यान दें कि DFS सीधे पेड़ के सबसे गहरे हिस्सों में कैसे जाता है जबकि BFS प्रत्येक स्तर की चौड़ाई पर निर्भर करता है।

डीएफएस बीएफएस

छवि यहाँ


2
मुझे लगता है कि फ्रंटियर शब्द खोजे गए नोड्स के किनारे को संदर्भित कर सकता है। जब आपने केवल खोज की है a, तो फ्रंटियर है a। जब आप की खोज की है a, b, c, सीमा है b, c। जब आप की खोज की है a, b, c, d, e, f, g, सीमा है d, e, f, g। दूसरे शब्दों में, जो नोड्स खोजे गए हैं और जिन्हें हमने अभी तक खोजा नहीं है।
थियोडोरोस चटजिआनियाकिस

मुझे लगता है कि यह एक उचित बिंदु है, लेकिन मुझे लगता है कि "सीमांत" की व्याख्या कई तरीकों से की जा सकती है, जिसमें सामान्य स्पष्टीकरण अभी भी काम कर रहा है।
थ्रॉकमॉर्टन

2

आपके द्वारा दिया गया उद्धरण "खोजे गए और अनदेखे सिरों के बीच की सीमा" कहता है। तो यह है कि फ्रंटियर लेखक के बारे में बात कर रहा है: खोजे गए और अनदेखे सिरों के बीच का सीमांत। आपके पास कुछ कोने हैं जिन्हें आपने अभी तक कुछ भी नहीं देखा है। आपके पास कुछ कोने भी हैं जिनके लिए आपने सब कुछ देखा है। और फिर आपके बीच में कोने हैं। ये आपके द्वारा देखे गए कोने हैं, लेकिन आपने उनके सभी बच्चों को अभी तक लोड नहीं किया है। यह सीमांत है।

इस पर आगे चर्चा करता है:

प्रगति का ट्रैक रखने के लिए बीएफएस रंग प्रत्येक सफेद, ग्रे या काले रंग के होते हैं। सभी लम्बे सफेद निकलते हैं और बाद में भूरे और फिर काले हो सकते हैं। खोज के दौरान पहली बार सामने आए वर्सेटेक्स की खोज की जाती है, जिस समय यह गैर-सफेद हो जाता है। इसलिए, ग्रे और काले रंग के कोने खोजे गए हैं, लेकिन BFS उनके बीच अंतर सुनिश्चित करता है कि खोज BF तरीके से आगे बढ़े।
...
प्रत्येक शीर्ष शुरू में सफेद होता है, जब यह खोज में खोजा जाता है, तो धूसर हो जाता है और समाप्त होने पर इसे काला कर दिया जाता है, जब इसकी आसन्न सूची पूरी तरह से जांच की जाती है।

तो सभी चक्कर सफेद (अनदेखा) शुरू होते हैं। जब एक नोड की खोज की जाती है, तो यह रंगीन ग्रे (फ्रंटियर) होता है। जब सब कुछ यह पता चला है की ओर इशारा करते हैं, तो यह काले रंग का है (पूरी तरह से खोजा गया)। सीमांत उन बिंदुओं का समूह है जिन्हें खोजा गया है, लेकिन अनदेखे बच्चे हैं।

मान लीजिए आप वेबसाइट पर कुछ ढूंढ रहे हैं। आप पहले मुख्य पृष्ठ पर जाएं। मान लीजिए कि "जानवरों" को लेबल किया गया है। सीमांत वर्तमान में {"जानवर"} हैं। आप मुख्य पृष्ठ को देखते हैं और यह नहीं देखते हैं कि आप क्या देख रहे हैं। लेकिन आप ध्यान दें कि इसके दो और पेजों के लिंक हैं, "क्वाड्रुपेड्स" और "वर्म्स"। तो आप "quadrupeds" के लिंक पर क्लिक करें। अब सीमांत {"जानवर", "चौगुनी"} हैं। आप "चौगुनी" के माध्यम से देखते हैं और आप जो खोज रहे हैं वह नहीं मिलता है। इसके बाद क्या करेंगे? आप या तो "चौगुनी" लिंक देख सकते हैं और उन पर अमल कर सकते हैं, या "जानवरों" पर वापस जा सकते हैं और "चिंताजनक" लिंक पर क्लिक कर सकते हैं। पहली गहराई-पहली खोज है, और दूसरी चौड़ाई-पहली खोज है।

"गहराई" रूट नोड से कितने लिंक को संदर्भित करता है एक नोड को पाने के लिए, जबकि "चौड़ाई" नोड्स को समान गहराई के रूप में संदर्भित करता है। उपरोक्त उदाहरण में, बीएफएस "जानवरों" पर शुरू होता है और पहले गहराई के सभी नोड्स को देखता है, इसलिए यह पहले "चौगुनी" और "कीड़े" को देखता है। यह सभी गहराई -1 नोड्स को देखने के बाद, इसका विस्तार उन सभी नोड्स में सीमांकित करता है; वह है, यह गहराई -2 नोड्स के किसी भी बच्चे को देखने से पहले सभी गहराई -1 नोड्स के बच्चों को देखता है। इसलिए, उदाहरण के लिए, यदि "क्वाड्रुपेड्स" पृष्ठ पर मौजूद लिंक में से एक "प्राइमेट्स" है, तो यह "प्राइमेट्स" पेज के किसी भी लिंक को देखने से पहले "वर्म्स" पेज के सभी लिंक को देखेगा।


1

aaa2a

किसी भी समय, लहर की सीमा बिल्कुल लंबवत होती है जो कतार डेटा संरचना में संग्रहीत होती है (ये कोने का दौरा किया गया है, लेकिन अभी तक आगे का पता नहीं चला है)।

aa

kaka(k0)0{a}aa

aaa

इस प्रकार, DFS और BFS उस क्रम में भिन्न होते हैं जिसमें वे कोने पर जाते हैं।

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