ग्राफ भ्रमण, न्यूनतम विस्तारक वृक्ष व लघुतम पथ
BFS व DFS: समान लागत, भिन्न उपयोग
| पक्ष | BFS | DFS |
|---|---|---|
| लागत (सन्निकटता सूची) | O(V + E) | O(V + E) |
| आँकड़ा संरचना | कतार | स्टैक या पुनरावर्तन |
| लघुतम पथ देता है | हाँ, यदि अभारित | नहीं |
| उसके अभिलाक्षणिक उपयोग | स्तर क्रम, द्विभाजित परीक्षण | चक्र, सांस्थितिक वर्गीकरण, SCC |
न्यूनतम विस्तारक वृक्ष: अद्वितीय भार, बहुवचन वृक्ष
A, B, C, D पर वह ग्राफ लें जिसमें A–B, B–C व A–C सभी भार 1 के हों, तथा C–D भार 2 का। क्रुस्कल तीन इकाई-कोरों में दो लेता है — कोई भी दो A, B, C सबको जोड़ देते हैं — और तत्पश्चात् C–D, कुल भार 4। परंतु कौन-से दो यह स्वतंत्र चुनाव है, अतः तीन भिन्न न्यूनतम विस्तारक वृक्ष हैं, सब भार 4 के।
| पक्ष | क्रुस्कल | प्रिम |
|---|---|---|
| बढ़ाता है | वह वन जो विलीन होता है | आरंभ शीर्ष से एक वृक्ष |
| आवश्यकता | वर्गीकृत कोर + यूनियन–फ़ाइंड | शीर्षों की प्राथमिकता-कतार |
| लागत | O(E log E) | द्विआधारी ढेर से O(E log V) |
| अधिक उपयुक्त | विरल ग्राफ | घने ग्राफ |
लघुतम पथ, तथा प्रत्येक कलनविधि क्या मान सकती है
| कलनविधि | लागत | ऋण कोर सँभालती है? | स्रोत |
|---|---|---|---|
| BFS | O(V + E) | केवल अभारित | एक |
| डिजस्ट्रा | O(E log V) | नहीं — गलत उत्तर देती है | एक |
| बेलमैन–फोर्ड | O(VE) | हाँ, तथा ऋण चक्रों का पता लगाती है | एक |
| फ़्लॉयड–वॉरशॉल | O(V³) | हाँ (ऋण चक्र न हों) | सभी युग्म |
शेष चुनाव एक स्रोत व सभी के बीच है। प्रत्येक शीर्ष से चलाया बेलमैन–फोर्ड O(V²E) लेता है, जो घने ग्राफ पर जहाँ E ≈ V² है O(V⁴) है — फ़्लॉयड–वॉरशॉल के O(V³) से बुरा, जो सन्निकटता आव्यूह पर तीन नेस्टेड चक्र हैं। विरल ग्राफ पर तुलना उलट जाती है। अतः सभी-युग्म प्रश्न भी घनत्व पर लौट आता है, ठीक जैसे निरूपण का चुनाव लौटा था।
मुख्य बिंदु
- BFS व DFS दोनों O(V + E) लेते हैं; BFS लघुतम पथ केवल अभारित ग्राफ पर देता है।
- DFS चक्र-संसूचन, सांस्थितिक वर्गीकरण व प्रबल संबद्ध घटकों का आधार है।
- MST का भार सदा अद्वितीय है; MST ठीक तब अद्वितीय है जब सभी कोर-भार भिन्न हों।
- क्रुस्कल यूनियन–फ़ाइंड से O(E log E) है; प्रिम द्विआधारी ढेर से O(E log V)।
- डिजस्ट्रा ऋण कोरों पर गलत है, धीमी नहीं — वह शीर्ष को पॉप होते ही अंतिम कर देती है।
- प्रत्येक भार में अचर जोड़ना उसे ठीक नहीं करता: वह अधिक कोरों वाले पथों को दंडित करता है।
- बेलमैन–फोर्ड O(VE) है, ऋण कोर सँभालती है, तथा ऋण चक्रों का पता लगाती है।
- फ़्लॉयड–वॉरशॉल सभी युग्म O(V³) में देती है — घने ग्राफ पर बेलमैन–फोर्ड की V बार से अच्छा।
अभ्यास प्रश्न (8)
उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।
एक दिष्ट ग्राफ में कोर A→B भार 1, A→C भार 2 तथा C→B भार −2 के हैं। A से डिजस्ट्रा, B तक दूरी बताता है:
उत्तर देखें
उत्तर: B — 1, जो गलत है — वास्तविक दूरी 0 है
डिजस्ट्रा निकटतम अस्थायी शीर्ष पॉप करके उसे अंतिम कर देता है। A से B अस्थायी रूप से 1 है और C, 2, अतः B पहले पॉप होकर 1 पर नियत हो जाता है — कोर C→B देखे जाने से पूर्व ही। वास्तविक लघुतम पथ A→C→B है 2 + (−2) = 0 पर। अतः डिजस्ट्रा आत्मविश्वास से गलत संख्या लौटाता है, और महत्वपूर्ण अंश वही है: वह अटकता नहीं (विकल्प C) और समस्या का पता नहीं लगाता। इसीलिए ऋण कोरों हेतु बेलमैन–फोर्ड चाहिए, और इसीलिए प्रत्येक भार में अचर जोड़ने का मानक "उपचार" भी विफल है — प्रति कोर अचर लंबे पथों को दंडित करता है और बदल सकता है कि कौन-सा पथ लघुतम है।किसी भारित ग्राफ के कुछ कोरों का भार समान है। कौन-सा कथन सही है?
उत्तर देखें
उत्तर: B — MST अ-अद्वितीय हो सकता है परंतु उसका भार अद्वितीय है
"न्यूनतम" संख्या का गुण है, अतः प्रत्येक न्यूनतम विस्तारक वृक्ष का कुल परिभाषा से समान है — अधिक भार का विस्तारक वृक्ष सरलतः न्यूनतम नहीं है। बराबरी जो स्वतंत्र छोड़ती है वह यह है कि कई समान कोरों में कौन-सा लें, और वही वृक्ष को बहुवचन बनाता है। तीन इकाई-कोरों के त्रिभुज तथा भार 2 के एक कोर का भार 4 है और तीन भिन्न MST। साथ ले जाने योग्य उपसिद्धांत: सर्व-भिन्न भार अद्वितीय MST बाध्य करते हैं। और इसीलिए बराबरी वाले ग्राफ का "वह MST" पूछता प्रश्न कुगठित है जबकि उसका भार पूछता प्रश्न ठीक — वही भेद लघुतम पथों पर लागू है, जहाँ दूरी अद्वितीय है और पथ आवश्यक रूप से नहीं।ऋण कोरों से रहित भारित ग्राफ में एक स्रोत से लघुतम पथ ढूँढ़ने हेतु सर्वोत्तम चुनाव है:
उत्तर देखें
उत्तर: B — डिजस्ट्रा, O(E log V) पर
डिजस्ट्रा। BFS सस्ता है पर सही केवल तब जब प्रत्येक कोर की लागत समान हो, अतः वह भारित ग्राफ पर लागू नहीं। बेलमैन–फोर्ड यहाँ सही है पर उस व्यापकता — ऋण कोर — हेतु O(VE) चुकाता है जो इस ग्राफ को चाहिए नहीं। फ़्लॉयड–वॉरशॉल पूछी गई से बड़ी समस्या हल करता है, एक स्रोत के बजाय सभी युग्म, और उसके लिए O(V³) लेता है। बनाने योग्य आदत यह है कि प्रश्न से दो गुण पहले पढ़ें: कोई भार ऋण है क्या, और मुझे एक स्रोत चाहिए या सभी? वे दो उत्तर किसी जटिलता की तुलना से पूर्व ही कलनविधि चुन देते हैं।BFS व DFS के विषय में निम्नलिखित में कौन सत्य हैं? (एक से अधिक सही हो सकते हैं।)
उत्तर देखें
उत्तर: A — दोनों सन्निकटता सूची पर O(V + E) में चलते हैं; B — BFS अभारित ग्राफ में लघुतम पथ ढूँढ़ता है; C — DFS सांस्थितिक वर्गीकरण का आधार है
A, B व C। दोनों भ्रमण प्रत्येक शीर्ष व प्रत्येक कोर को एक बार स्पर्श करते हैं, अतः O(V + E) (A)। BFS छलाँग-गणना के क्रम में खोजता है, जो लघुतम पथ ठीक तब है जब सभी कोरों की लागत समान हो (B)। DFS का समापन-क्रम उलटा एक सांस्थितिक क्रम है, इसीलिए वह उस कलनविधि तथा चक्र-संसूचन व प्रबल संबद्ध घटकों के नीचे है (C)। D असत्य है और प्रश्न का अभिप्राय वही है — कोरों पर असमान भार रखें और दो-छलाँग सस्ता पथ एक-छलाँग महँगे को हरा देता है, जिसे BFS पहले ही अंतिम कर चुका होगा। डिजस्ट्रा उपचार है, और वह मूलतः प्राथमिकता-कतार सहित BFS है।चार शीर्षों के ग्राफ में कोर A–B, B–C व A–C प्रत्येक भार 1 का, तथा C–D भार 2 का है। उसके न्यूनतम विस्तारक वृक्ष का भार क्या है?
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 4
चार शीर्षों के विस्तारक वृक्ष में ठीक तीन कोर होते हैं। तीन इकाई-कोरों में दो A, B व C को जोड़ते हैं — कोई भी दो चलेंगे — और D तक पहुँचने का एकमात्र मार्ग C–D है, अतः कुल 1 + 1 + 2 = 4। ध्यान दें प्रश्न सावधानी से क्या पूछता है: भार, जो अद्वितीय है। "वह" वृक्ष पूछना कुगठित होता, क्योंकि तीन समान कोरों में स्वतंत्र चुनाव तीन भिन्न न्यूनतम विस्तारक वृक्ष देता है, सब भार 4 के। 5 उत्तर देने का अर्थ प्रायः तीनों इकाई-कोर लेना है, जो एक चक्र होगा और अतः वृक्ष नहीं।E ≈ V² वाले घने ग्राफ पर सभी-युग्म लघुतम पथ निकालना सर्वाधिक सस्ता है:
उत्तर देखें
उत्तर: B — फ़्लॉयड–वॉरशॉल
फ़्लॉयड–वॉरशॉल O(V³) है — आव्यूह पर तीन नेस्टेड चक्र। प्रत्येक शीर्ष से बेलमैन–फोर्ड O(V·VE) = O(V²E) है, और E ≈ V² के साथ वह O(V⁴) है, पूरे V गुणक से बुरा। विकल्प C केवल अभारित ग्राफों हेतु वैध है। विकल्प D पूर्णतः भिन्न समस्या हल करता है — न्यूनतम विस्तारक वृक्ष लघुतम-पथ संरचना नहीं है, और MST में दो शीर्षों के बीच का पथ लघुतम पथ होना आवश्यक नहीं, जो स्वयं में जानने योग्य तथ्य है। ध्यान दें कि विरल ग्राफ पर तुलना उलट जाती है, अतः यहाँ घनत्व तय करता है ठीक जैसे उसने निरूपण का चुनाव तय किया था।बेलमैन–फोर्ड, डिजस्ट्रा से वरीय है जब:
उत्तर देखें
उत्तर: B — कुछ कोर-भार ऋण हों
ऋण कोर-भार, और O(VE) चुकाने योग्य एकमात्र कारण वही है — डिजस्ट्रा अनंतस्पर्शी रूप से तेज़ है और अन्यथा वही चुनाव होता। बेलमैन–फोर्ड किसी शीर्ष को पॉप होने पर प्रतिबद्ध करने के बजाय प्रत्येक कोर को V − 1 बार शिथिल करता है, अतः बाद का ऋण कोर तब भी दूरी सुधार सकता है; और एक और शिथिलन जो तब भी कुछ सुधारे वह ऋण चक्र सिद्ध करता है, जिसे वह चक्र में घूमने के बजाय बताता है। विकल्प A उलटी दिशा दिखाता है, क्योंकि बड़ा ग्राफ तेज़ कलनविधि का पक्ष लेता है। विकल्प C, फ़्लॉयड–वॉरशॉल का काम है।यदि किसी संबद्ध ग्राफ में प्रत्येक कोर-भार भिन्न हो, तो:
उत्तर देखें
उत्तर: A — न्यूनतम विस्तारक वृक्ष अद्वितीय है
अद्वितीय। अ-अद्वितीयता पूर्णतः बराबरी से आती है: जब दो कोरों का भार समान हो, कोई भी लिया जा सकता है और दो भिन्न वृक्ष निकलते हैं। प्रत्येक बराबरी हटाएँ और प्रत्येक लोभी चरण के पास ठीक एक सर्वोत्तम चाल होती है, अतः क्रुस्कल व प्रिम न केवल भार पर सहमत होते हैं — जो वे सदा होते हैं — अपितु वही वृक्ष लौटाते हैं। विकल्प C किसी भी परिस्थिति में असंभव है, क्योंकि दोनों कलनविधियाँ सही हैं और प्रत्येक MST का कुल परिभाषा से समान है। विकल्प D भारों के गुण को संरचना के गुण से भ्रमित करता है: भिन्न भारों वाले ग्राफ में जितने चाहे चक्र हो सकते हैं।