ग्राफ सर्च और ट्री सर्च में क्या अंतर है?


जवाबों:


176

मौजूदा जवाबों को देखते हुए, इस अवधारणा के बारे में बहुत भ्रम की स्थिति है।

समस्या हमेशा एक ग्राफ है

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

यदि आप एक पेड़ के आकार की समस्या से निपट रहे हैं , तो दोनों एल्गोरिथ्म वेरिएंट के बराबर परिणाम देते हैं। तो आप सरल पेड़ खोज संस्करण को चुन सकते हैं।

ग्राफ और ट्री सर्च में अंतर

आपका मूल ग्राफ़ खोज एल्गोरिथ्म निम्नलिखित जैसा कुछ दिखता है। एक शुरुआती नोड के साथ start, निर्देशित किनारों के रूप में successorsऔर goalलूप स्थिति में उपयोग किए गए विनिर्देश। openस्मृति में नोड्स हैं, जो वर्तमान में विचाराधीन हैं, खुली सूची । ध्यान दें कि निम्नलिखित छद्म कोड हर पहलू (2) में सही नहीं है।

वृक्ष खोज

open <- []
next <- start

while next is not goal {
    add all successors of next to open
    next <- select one node from open
    remove next from open
}

return next

आपके द्वारा लागू किए जाने के आधार पर select from open, आप खोज एल्गोरिदम के विभिन्न प्रकार प्राप्त करते हैं, जैसे गहराई-पहली खोज (DFS) (नवीनतम तत्व चुनें), चौड़ाई पहली खोज (BFS) (सबसे पुराना तत्व चुनें) या समान लागत खोज (सबसे कम पथ लागत वाला तत्व चुनें) ), लोकप्रिय ए-स्टार खोज सबसे कम लागत के साथ नोड को चुनने के साथ हीरिविस्टिक मूल्य, और इसी तरह।

ऊपर वर्णित एल्गोरिदम को वास्तव में ट्री सर्च कहा जाता है । यह कई बार अंतर्निहित समस्या ग्राफ की स्थिति का दौरा करेगा, यदि प्रारंभ राज्य में इसके लिए कई निर्देशित मार्ग हैं। एक निर्देशित लूप पर स्थित होने पर, अनंत बार किसी राज्य की यात्रा करना संभव है। लेकिन प्रत्येक यात्रा हमारे खोज एल्गोरिदम द्वारा उत्पन्न वृक्ष में एक अलग नोड से मेल खाती है । यह स्पष्ट अक्षमता कभी-कभी वांछित होती है, जैसा कि बाद में बताया गया है।

रेखाचित्र खोज

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

open <- []
closed <- []
next <- start

while next is not goal {
    add next to closed
    add all successors of next to open, which are not in closed 
    remove next from open
    next <- select from open
}

return next

तुलना

हम देखते हैं कि ग्राफ़ खोज में अधिक मेमोरी की आवश्यकता होती है, क्योंकि यह सभी विज़िट किए गए राज्यों का ट्रैक रखता है। इसकी भरपाई छोटी खुली सूची से हो सकती है, जिसके परिणामस्वरूप खोज क्षमता में सुधार होता है।

इष्टतम समाधान

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

ए*

इसके अलावा (बहुत लोकप्रिय) A * ट्री सर्च एल्गोरिदम एक इष्टतम समाधान देता है जब एक स्वीकार्य हेयुरिस्टिक के साथ उपयोग किया जाता है । हालांकि, ए * ग्राफ खोज एल्गोरिथ्म, केवल इस गारंटी देता है जब यह एक सुसंगत (या "मोनोटोनिक") हेयुरिस्टिक ( प्रशंसा की तुलना में मजबूत स्थिति ) के साथ प्रयोग किया जाता है ।

(२) छद्म कोड के पंजे

सादगी के लिए, प्रस्तुत कोड नहीं है:

  • असफल खोजों को संभालना, अर्थात यह केवल तभी काम करता है जब कोई समाधान मिल सकता है

1
अच्छा अच्छा जवाब! क्या आप पेड़ के आकार की समस्या के बारे में विस्तार से बता सकते हैं ? इसके अलावा, आप पूर्ण ट्रैवर्सल के विपरीत लक्ष्य तक पहुंचने के लिए एल्गोरिथ्म द्वारा यात्रा किए गए पथ के भंडारण का प्रस्ताव कैसे करते हैं?
ब्रायन

1
@ ब्रायन ट्री के आकार की समस्या का मतलब है कि आप जो ग्राफ खोज रहे हैं वह एक पेड़ है। और आपके दूसरे प्रश्न के लिए: यह समस्या पर निर्भर करता है। एक संभावना बस प्रत्येक विस्तारित नोड के साथ एक नोड के लिए पथ भंडारण है, अगर यह संभव है।
जिग्गीस्टार

5
यह कहना अधिक औपचारिक है कि एक 'एकल राज्य' को एक पेड़ की खोज से कई बार देखा जा सकता है, और एक नोड नहीं। जैसा कि खोज वृक्ष में प्रत्येक नोड राज्य अंतरिक्ष ग्राफ के साथ एक ही पथ से मेल खाता है और पेड़ की खोजों द्वारा सबसे अधिक बार देखा जाता है। (यद्यपि यह Iterative Deepening Search के लिए सही नहीं है, जो बढ़ती गहराई की सीमा के साथ पेड़ का पता लगाता है, लेकिन इस मामले में भी हर नोड में हर बार बस एक बार दौरा किया जाता है)
नादेर घनबरी

1
@NaderhadjiGhanbari ट्रैवर्सल ग्राफ के विपरीत अंतर्निहित समस्या ग्राफ के कोने के लिए पर्याप्त है stateया नहीं , यह संदर्भ पर निर्भर करता है। लेकिन समस्या ग्राफ वर्टिकल के लिए और ट्रैवर्सल ग्राफ के लिए उपयोग करने से निश्चित रूप से उत्तर की स्पष्टता में सुधार हो सकता है। मैं जल्द ही इसे फिर से लिखने की कोशिश करूंगा। धन्यवाद। nodestatenode
जिग्गीस्टार

टीएल; डीआर: ग्राफ खोज एक बंद डेटा संरचना का उपयोग कर रहा है जबकि पेड़ खोज नहीं करता है।
शिंज़ौ

7

एक पेड़ एक ग्राफ का एक विशेष मामला है, इसलिए पेड़ों के लिए सामान्य रेखांकन के लिए जो भी काम करता है। एक पेड़ एक ग्राफ है जहां नोड्स के प्रत्येक जोड़े के बीच एक पथ होता है। इसका तात्पर्य यह है कि इसमें कोई चक्र शामिल नहीं है, जैसा कि पिछले उत्तर में बताया गया है, लेकिन चक्रों के बिना एक निर्देशित ग्राफ (एक डीएजी, निर्देशित एसाइक्लिक ग्राफ) आवश्यक रूप से एक पेड़ नहीं है।

हालाँकि, यदि आप जानते हैं कि आपके ग्राफ़ में कुछ प्रतिबंध हैं, जैसे कि यह एक पेड़ या DAG है, तो आप आमतौर पर अप्रतिबंधित ग्राफ़ की तुलना में कुछ अधिक कुशल खोज एल्गोरिदम पा सकते हैं। उदाहरण के लिए, संभवतः ए *, या इसके गैर-हेयुरिस्टिक समकक्ष "डीजकस्ट्रा के एल्गोरिथ्म" का उपयोग करने का कोई मतलब नहीं है, एक पेड़ पर (जहां वैसे भी चुनने के लिए केवल एक ही रास्ता है, जिसे आप डीएफएस या डीएफएस द्वारा पा सकते हैं) या DAG पर (जहाँ सामयिक छँटनी द्वारा प्राप्त क्रम में शीर्षकों पर विचार करके एक इष्टतम मार्ग पाया जा सकता है)।

के रूप में निर्देशित बनाम अनिर्दिष्ट, एक अनिर्दिष्ट ग्राफ एक निर्देशित एक, अर्थात् मामले अगर वहाँ से बढ़त (लिंक, संक्रमण) है कि शासन "इस प्रकार की एक विशेष मामला है यू करने के लिए वी वहाँ भी से बढ़त वी करने के लिए यू

अद्यतन : ध्यान दें कि यदि आप जिस चीज की परवाह करते हैं वह ग्राफ की संरचना के बजाय खोज का ट्रैवर्सल पैटर्न है, तो यह उत्तर नहीं है। देखें, उदाहरण के लिए, @ ziggystar का उत्तर।


हम्म, प्रश्न का संदर्भ मेरे लिए पूरी तरह से स्पष्ट नहीं है, लेकिन आपके उत्तर को देखने के बाद फिर से देखने पर, @ जिग्गीस्टार, मुझे यह महसूस होता है कि A * और AI का उल्लेख इंगित करता है कि आप सही हो सकते हैं, और मेरा उत्तर मुद्दे से बाहर। मैंने "पेड़ की खोज" की व्याख्या "पेड़ की खोज" के रूप में की। "पेड़ के आकार के ट्रैवर्सल पैटर्न का उपयोग करके एक सामान्य ग्राफ की खोज नहीं", जो कि आपका उत्तर बताता है।
njlarsson

@njlarsson मैं अपने जवाब में अपने rephrasing शामिल है। यह स्पष्टीकरण के लिए अच्छा है।
जिग्गीस्टार

जवाब में इसका एक नोट जोड़ा। मुझे संदेह है कि मेरा जवाब कई लोगों के लिए सही है जो Google आदि के माध्यम से यहां अपना रास्ता ढूंढते हैं, भले ही वह रेहानुर रहमान के बाद के संदर्भ से बाहर हो।
njlarsson

मैंने बहुत से छात्रों को खोज एल्गोरिदम का अध्ययन करने में कठिनाइयों का सामना करते देखा है और आपका उत्तर उन्हें भ्रमित करता है।
नादेर घनबरी

1
इसका उत्तर खोज एल्गोरिदम के बारे में भी है, लेकिन यह सच है कि यह पोस्टर के बारे में नहीं पूछा गया है। उत्तर में "अपडेट" देखें - मुझे मार्च 2014 में एहसास हुआ कि मैंने प्रश्न को गलत समझा। उत्तर को न हटाने का मेरा कारण यह है कि यह अभी भी किसी ऐसे व्यक्ति के लिए उपयोगी हो सकता है जो खोज के माध्यम से यहां आया है।
njlarsson

3

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

सोचने का एक और बिंदु उस ग्राफ़ के दिशात्मक गुण हैं जो आप के साथ काम कर रहे हैं। ज्यादातर मामलों में हम उन पेड़ों से निपटते हैं जो प्रत्येक किनारे पर माता-पिता के बच्चे के संबंधों का प्रतिनिधित्व करते हैं। एक DAG (निर्देशित एसाइक्लिक ग्राफ) भी इसी तरह की विशेषताओं को दर्शाता है। लेकिन द्वि-दिशात्मक रेखांकन अलग हैं। द्वि-दिशात्मक ग्राफ़ में प्रत्येक किनारे दो पड़ोसियों का प्रतिनिधित्व करता है। इसलिए इन दो प्रकार के रेखांकन के लिए एल्गोरिथम दृष्टिकोण थोड़ा भिन्न होना चाहिए।


3
इसे जोड़ने के लिए, यदि आपके पास वास्तव में पेड़ है, तो आपको A * में डुप्लिकेट डिटेक्शन करने की आवश्यकता नहीं है। आपको अभी भी एक अंतिम रास्ता निकालने की आवश्यकता होगी, हालाँकि, फिर भी आपके पास एक बंद सूची हो सकती है।
नाथन एस।

सामान्य शब्दों में, एक पेड़ किसी भी दो कोने के बीच एक मार्ग पर एक निर्देशित ग्राफ है। यही है, ग्राफ़ और पेड़ों के बीच दो अंतर हैं: निर्देशित और पथ विशिष्टता। डीएजी पर काम करने वाले एल्गोरिथ्म को साइकिल की जांच करने की कोई आवश्यकता नहीं है, और पेड़ पर काम करने वाले एल्गोरिथ्म को डुप्लिकेट की जांच करने की कोई आवश्यकता नहीं है।
थिटोन

1
शब्दावली बदलती है, लेकिन पेड़ों को हमेशा निर्देशित करने के लिए नहीं लिया जाता है। एक के लिए निहित पेड़, अर्थात् जब एक नोड जड़ होने के लिए निर्दिष्ट किया जाता है, वहाँ एक गर्भित दिशा है, लेकिन पेड़ रूट किया गया नहीं है। इसके अलावा, सामान्य रेखांकन को निर्देशित या अप्रत्यक्ष रूप से किया जा सकता है। इसके अलावा, यदि आप दो कोने के बीच केवल एक ही रास्ते पर मांग करते हैं, तो आप जंगलों को भी शामिल करते हैं । एक पेड़ को आम तौर पर एक जुड़े हुए ग्राफ के रूप में परिभाषित किया जाता है, अर्थात ठीक एक मार्ग होना चाहिए ।
njlarsson

यह उत्तर ग्राफ सिद्धांत में पेड़ों और रेखांकन के बीच अंतर पर अधिक मिलता है, लेकिन वास्तव में विभिन्न प्रकार के खोज एल्गोरिदम के साथ नहीं।
एमएलबीबी

1

GRAPH VS TREE

  • रेखांकन में चक्र होते हैं
  • पेड़ों में चक्र नहीं होते हैं "उदाहरण के लिए अपने सिर में किसी भी पेड़ की कल्पना करें, शाखाओं का जड़ से सीधा संबंध नहीं है, लेकिन शाखाओं का अन्य शाखाओं से कनेक्शन है, ऊपर की ओर"

लेकिन एआई ग्राफ-सर्च बनाम ट्री-सर्च के मामले में

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

उदाहरण के लिए 3 शीर्षकों AB और C के साथ निम्नलिखित ग्राफ पर विचार करें, और निम्नलिखित किनारों पर विचार करें

AB, BC और CA, खैर C से A तक एक चक्र है,

और जब A से DFS शुरू होता है, तो A एक नया राज्य B उत्पन्न करेगा, B एक नया राज्य C उत्पन्न करेगा, लेकिन जब C की खोज की जाती है तो एल्गोरिथ्म एक नया राज्य A उत्पन्न करने का प्रयास करेगा, लेकिन A का दौरा पहले ही हो चुका है, इसलिए इसे अनदेखा किया जाएगा। ठंडा!

लेकिन पेड़ों का क्या? अच्छी तरह से पेड़ों के एल्गोरिथ्म का दौरा किया नोड के रूप में चिह्नित नहीं है, लेकिन पेड़ों को चक्र नहीं है, यह एक अनंत छोरों में कैसे मिलेगा?

इस ट्री को 3 चक्कर लगाकर निम्नलिखित किनारों पर विचार करें

ए - बी - सी नीचे, ए पर निहित है। और मान लेते हैं कि हम DFS एल्गोरिथम का उपयोग कर रहे हैं

A एक नया राज्य B उत्पन्न करेगा, B दो राज्य A & C उत्पन्न करेगा, क्योंकि पेड़ों में "मार्क नोड का दौरा नहीं किया गया है अगर यह पता लगाया जाता है" तो शायद DFS एल्गोरिथ्म फिर से A का पता लगाएगा, इस प्रकार एक नया राज्य B पैदा करता है, इस प्रकार हम एक अनंत लूप में मिल रहे हैं।

लेकिन क्या आपने कुछ देखा है, हम अप्रत्यक्ष किनारों पर काम कर रहे हैं यानी एबी और बीए के बीच संबंध है। बेशक यह एक चक्र नहीं है, क्योंकि चक्र का तात्पर्य है कि कोने> 3 होने चाहिए और सभी कोने पहले और अंतिम नोड्स को छोड़कर अलग-अलग हैं।

ST A-> B-> A-> B-> A यह एक चक्र नहीं है क्योंकि यह साइकिलिंग संपत्ति का उल्लंघन करता है> = 3. 3. लेकिन वास्तव में A-> B-> C-> A एक चक्र है> = 3 अलग-अलग नोड्स की जाँच की, पहला और अंतिम नोड समान जांचे गए हैं।

फिर से पेड़ के किनारों पर विचार करें, A-> B-> C-> B-> A, निश्चित रूप से इसका एक चक्र नहीं है, क्योंकि दो Bs हैं, जिसका अर्थ है कि सभी नोड अलग नहीं हैं।

अंत में आप एक ही नोड को दो बार एक्सप्लोर करने से रोकने के लिए ट्री-सर्च एल्गोरिथ्म को लागू कर सकते हैं। लेकिन उसके परिणाम हैं।


यह उत्तर भ्रमित करने वाला है क्योंकि यह उस स्थिति को मिलाता हुआ प्रतीत होता है जहाँ समस्या एक वृक्ष या ग्राफ है जिसमें खोज एल्गोरिदम स्वयं खोज के दौरान एक पेड़ या ग्राफ़ का उपयोग करता है।
mlibby

1

सरल शब्दों में, पेड़ में चक्र नहीं होते हैं और जहां ग्राफ़ हो सकता है। इसलिए जब हम खोज करते हैं, तो हमें ग्राफ़ में चक्रों से बचना चाहिए ताकि हम अनंत छोरों में न जाएं।

एक अन्य पहलू यह है कि पेड़ में आमतौर पर किसी प्रकार की टोपोलॉजिकल सॉर्टिंग या बाइनरी सर्च ट्री जैसी संपत्ति होती है जो ग्राफ़ की तुलना में खोज को बहुत तेज़ और आसान बनाती है।

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