बीएफएस / डीएफएस का उपयोग करके एक पेड़ के व्यास को खोजने के लिए एल्गोरिदम। यह काम क्यों करता है?


28

यह लिंक BFS / DFS का उपयोग करके अप्रत्यक्ष पेड़ के व्यास को खोजने के लिए एक एल्गोरिथ्म प्रदान करता है । सारांश:

ग्राफ़ में किसी भी नोड पर बीएफएस चलाएं, पिछले खोजे गए नोड यू को याद करते हुए। अंतिम बार खोजे गए नोड v को याद करते हुए B से U को चलाएँ। d (u, v) पेड़ का व्यास है।

यह काम क्यों करता है?

के 2 पृष्ठ इस एक तर्क प्रदान करता है, लेकिन यह भ्रामक है। मैं प्रमाण के प्रारंभिक भाग को उद्धृत कर रहा हूं:

ग्राफ़ में किसी भी नोड पर बीएफएस चलाएं, पिछले खोजे गए नोड यू को याद करते हुए। अंतिम बार खोजे गए नोड v को याद करते हुए B से U को चलाएँ। d (u, v) पेड़ का व्यास है।

Correctness: Let a और b किन्हीं दो नोड्स जैसे कि d (a, b) ट्री का व्यास है। अ से b तक एक अनोखा रास्ता है। बीएफएस द्वारा खोजे गए उस रास्ते पर पहला नोड नहीं है। यदि पथ से s तक u और से a से b किनारों को साझा नहीं करता है, तो t से u तक के पथ में s शामिल है। इसलिएp1p2

d(t,u)d(s,u)

d(t,u)d(s,a)

.... (अधिक असमानता का पालन ..)

असमानताओं का मेरे लिए कोई मतलब नहीं है।


मुझे लिंक किए गए प्रश्न में उद्धरण नहीं मिला।
राफेल

1
समाधान में "किनारों को साझा न करें" के साथ "किनारों को साझा न करें" को बदलने का प्रयास करें।
युवल फिल्मस

आप केवल BFS का उपयोग कर रहे हैं, DFS का नहीं।
थंबनेल

जवाबों:


11

अप्रत्यक्ष किनारों के साथ पेड़ों के 2 महत्वपूर्ण गुणों पर दावा काज साबित करने के सभी भाग:

  • 1-संयोजकता (यानी किसी भी पेड़ में 2 नोड्स के बीच बिल्कुल एक रास्ता है)
  • कोई भी नोड पेड़ की जड़ के रूप में काम कर सकता है।

चुनें एक मनमाना पेड़ नोड । मान लें यू , वी वी ( जी ) के साथ नोड्स हैं ( यू , वी ) = d मैं एक मीटर ( जी ) । आगे कहा कि एल्गोरिथ्म पाता है एक नोड मान लें x पर शुरू रों पहले, कुछ नोड y से शुरू एक्स अगले। wlog ( रों , यू ) ( रों , वी ) । ध्यान दें किsu,vV(G)d(u,v)=diam(G)xsyxd(s,u)d(s,v) , पकड़ जब तक एल्गोरिथ्म के पहले चरण में खत्म नहीं होता चाहिए एक्स । हम उस d ( x , y ) = d ( u , v ) को देखेंगे।d(s,x)d(s,y)xd(x,y)=d(u,v)

इसमें शामिल सभी नोड्स का सबसे सामान्य विन्यास निम्नलिखित छद्म ग्राफिक्स में देखा जा सकता है (संभवतः या s = z x y या दोनों):s=zuvs=zxy

(u)                                            (x)
  \                                            /
   \                                          /
    \                                        /
     ( z_uv )---------( s )----------( z_xy )
    /                                        \
   /                                          \
  /                                            \
(v)                                            (y)

हम जानते हैं कि:

  1. । अन्यथा d ( u , v ) < d i a m ( G ) धारणा का खंडन करता है।d(zuv,y)d(zuv,v)d(u,v)<diam(G)
  2. । अन्यथा d ( u , v ) < d i a m ( G ) धारणा का खंडन करता है।d(zuv,x)d(zuv,u)d(u,v)<diam(G)
  3. , अन्यथा एल्गोरिथ्म के चरण 1 में x पर रोक नहीं लगी होती।d(s,zxy)+d(zxy,x)d(s,zuv)+d(zuv,u)x
  4. , अन्यथा एल्गोरिथ्म का चरण 2 पर रोका नहीं होता yd(zxy,y)d(v,zuv)+d(zuv,zxy)y

1) और 2) मतलब है d(u,v)=d(zuv,v)+d(zuv,u)d(zuv,x)+d(zuv,y)=d(x,y)+2d(zuv,zxy)d(x,y)

3) और 4) का अर्थ है d(zxy,y)+d(s,zxy)+d(zxy,x)d(s,zuv)+d(zuv,u)+d(v,zuv)+d(zuv,zxy) के बराबर d(x,y)=d(zxy,y)+d(zxy,x)2d(s,zuv)+d(v,zuv)+d(u,zuv)d(u,v)

इसलिए d(u,v)=d(x,y)

एनालॉग प्रूफ वैकल्पिक कॉन्फ़िगरेशन के लिए धारण करते हैं

                 (u)                          (x)
                   \                          /
                    \                        /
                     \                      /
     ( s )---------( z_uv )----------( z_xy )
                     /                      \
                    /                        \
                   /                          \
                 (v)                          (y)

तथा

                          (x)        (u)  
                          /            \  
                         /              \ 
                        /                \
     ( s )---------( z_xy )----------( z_uv )
                        \                /          
                         \              /           
                          \            /            
                          (y)        (v)            

xpath(s,u),xpath(s,v)ypath(x,u),ypath(x,v)


(1) पहले ग्राफिक के बारे में, s से x तक का रास्ता हमेशा वर्टीकल u और v में किसी क्रम में नहीं होना चाहिए क्योंकि वे BFS द्वारा उत्पन्न पेड़ पर मौजूद होते हैं? (२) क्या आप स्पष्ट कर सकते हैं कि असमानताएँ कैसे प्राप्त होती हैं? (3) चूँकि B से शुरू होने वाले BFS और जो x से शुरू होते हैं, रास्ते में कहीं v होते हैं, मेरा मानना ​​है कि ग्राफिक को लिंक imgur.com/jQ94erY में दिखाया जाना चाहिए । आपके द्वारा प्रदान किया गया तर्क यहां कैसे लागू होता है?
करी

(s,zxy)(zxy,x)(u,v)diag(G)। इसे अच्छी तरह से परिभाषित किया जाता है क्योंकि G 1-जुड़ा हुआ है। विज्ञापन 3) नहीं: 3.1 किसी भी 2 नोड्स के अलावा बीच 1 से अधिक पथ है , इसलिए ग्राफ एक पेड़ नहीं है। ...(s,y)
collapsar

d(x,y)>d(u,v)d(u,v)=diam(G)

9

पीछे अंतर्ज्ञान को समझना बहुत आसान है। मान लीजिए कि मुझे सबसे लंबा रास्ता खोजना है जो दिए गए पेड़ में किसी भी दो नोड्स के बीच मौजूद है।

कुछ आरेखों को खींचने के बाद हम देख सकते हैं कि सबसे लंबा रास्ता हमेशा दो पत्ती के नोड्स (केवल एक किनारे से जुड़ा हुआ नोड्स) के बीच होगा। यह विरोधाभास से भी साबित हो सकता है कि यदि सबसे लंबा रास्ता दो नोड्स के बीच है और या तो या दोनों नोड्स एक पत्ती नोड नहीं हैं तो हम लंबा रास्ता पाने के लिए पथ का विस्तार कर सकते हैं।

तो एक तरीका यह है कि पहले यह जांच लें कि नोड्स लीफ नोड्स क्या हैं, फिर नोड को इससे दूर करने के लिए लीफ नोड में से एक से बीएफएस शुरू करें।

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

लेकिन इस बात की क्या गारंटी है कि x अधिकतम पथ का अंतिम बिंदु होगा?

आइए एक उदाहरण देखें: -

       1   
    / /\ \
   6 2  4 8
         \ \
          5 9
           \
            7

मान लीजिए मैंने अपना बीएफएस 6 से शुरू किया है। 6 से अधिकतम दूरी पर नोड 7 है। बीएफएस का उपयोग करके हम इस नोड को प्राप्त कर सकते हैं। अब हम नोड 9 से बीएफएस को अधिकतम दूरी पर नोड 9 प्राप्त करने के लिए स्टार करते हैं। नोड 7 से नोड 9 तक का रास्ता स्पष्ट रूप से सबसे लंबा रास्ता है।

क्या होगा अगर नोड 6 से शुरू होने वाले बीएफएस ने अधिकतम दूरी पर नोड के रूप में 2 दिए। फिर जब हम 2 से BFS करेंगे तो हमें अधिकतम दूरी पर नोड के रूप में 7 मिलेंगे और सबसे लंबा रास्ता होगा तब 2-> 1-> 4-> 5-> 7 लंबाई के साथ 4. लेकिन वास्तविक सबसे लंबे पथ की लंबाई 5. यह नहीं है ऐसा इसलिए होता है क्योंकि नोड 6 से बीएफएस नोड 2 को अधिकतम दूरी पर नोड के रूप में कभी नहीं देगा।

उम्मीद है की वो मदद करदे।


1
एक सरल और स्पष्ट व्याख्या! धन्यवाद :)
अनेक्स

4

यहाँ एक प्रमाण दिया गया है जो मूल प्रश्न में MIT समाधान सेट से अधिक निकटता से जुड़ा हुआ है। स्पष्टता के लिए, मैं उसी अंकन का उपयोग करूंगा जो वे उपयोग करते हैं इसलिए तुलना अधिक आसानी से की जा सकती है।

ababp(a,b)d(a,b)sa,bs=abud(s,u)=maxxd(s,x)

लेम्मा 0: और दोनों लीफ नोड्स हैं।bab

प्रमाण: यदि वे पत्ती नोड्स नहीं थे, तो हम व्यास के विपरीत, समापन बिंदु को पत्ती नोड्स तक बढ़ाकर बढ़ा सकते थे ।डी ( , बी )d(a,b)d(a,b)

लेम्मा 1: ।max[d(s,a),d(s,b)]=d(s,u)

प्रमाण: विरोधाभास के लिए मान लीजिए कि दोनों और से कड़ाई से कम थे । हम दो मामलों को देखते हैं:डी ( एस , बी ) डी ( एस , यू )d(s,a)d(s,b)d(s,u)

p(a,b)sd(a,b)tp(a,b)sd(a,u)=d(a,t)+d(t,s)+d(s,u)>d(a,b)=d(a,t)+d(t,b)d(s,u)>d(s,b)=d(s,t)+d(t,b)>d(t,b)d(b,u)>d(a,b)d(a,b)

p(a,b)sd(a,b) ud(s,u)=maxxd(s,x)d(a,u)d(b,u)d(a,b)

uusuvd(s,v)=d(s,u)d(a,b)=2d(s,u)uv


बहुत बढ़िया। इस उत्तर को पोस्ट करने के लिए धन्यवाद। मुझे आश्चर्य है कि इस उत्तर को कोई उत्थान नहीं मिला।
जेफायर

0

पहले एक DFS को यादृच्छिक नोड से चलाएँ, फिर एक वृक्ष का व्यास अपने DFS उप-भाग में नोड के सबसे गहरे पत्तों के बीच का मार्ग है: यहाँ छवि विवरण दर्ज करें


4
यह काम क्यों करता है?
युवल फिल्मस

0

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

xaxxbaa


1
x

मुझे यकीन नहीं है कि इस तरह के सबूत का निर्माण कैसे किया जाए। मुझे ऐसा लगता है कि अनुलग्‍नक सहज रूप से सच है: यदि दो नोड एक दूसरे से अधिकतम दूरी पर हैं, तो, किसी भी दिए गए नोड के लिए, दो में से एक इससे सबसे बड़ी संभव दूरी पर है।
अतिरुद्र

vx=va=uba

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

0

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

यह विधि एक वास्तविक, भौतिक द्वीप के व्यास को खोजने के लिए भी काम करेगी यदि हमने परिभाषित किया कि सबसे छोटे वृत्त के व्यास के रूप में जो पूरी तरह से द्वीप को घेरेगा।


0

@, जिस तरह से मामलों को पीडीएफ में परिभाषित किया गया है वह थोड़ा हटकर हो सकता है।

मुझे लगता है कि दो मामले होने चाहिए:

  1. p1p2p1p2tp2s

  2. p1p2tp2p1

पीडीएफ में बाकी सबूत का पालन करना चाहिए।

इस परिभाषा के साथ, ओपी द्वारा दिखाया गया आंकड़ा केस 2 में आता है।

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