📘 CodingMarble Learn

ग्राफ़ एल्गोरिद्म

ग्राफ़ शीर्षों (vertices) का समूह है जो किनारों (edges) से जुड़े होते हैं, और किनारों पर भार हो सकता है। चौड़ाई-प्रथम खोज (BFS) कतार से परत-दर-परत खोजती है और सबसे कम किनारों वाला रास्ता देती है। गहराई-प्रथम खोज (DFS) ढेर या रिकर्शन से गहराई में जाती है और लौटती है। ट्री को प्री-ऑर्डर, इन-ऑर्डर और पोस्ट-ऑर्डर में घूमा जाता है। डाइक्स्ट्रा एल्गोरिद्म ग़ैर-ऋणात्मक भार पर एक शीर्ष से सबसे छोटे रास्ते देता है। क्रुस्कल और प्रिम न्यूनतम स्पैनिंग ट्री बनाते हैं। रूट इंस्पेक्शन हर किनारे पर चलने वाला सबसे छोटा बंद रास्ता ढूँढ़ता है; ट्रैवलिंग सेल्सपर्सन हर शीर्ष का सबसे छोटा चक्कर। प्रवाह नेटवर्क में अधिकतम प्रवाह = न्यूनतम कट की क्षमता।

🎬 कदम-दर-कदम कहानी

  1. यह एक ग्राफ़ है: छह शहर (शीर्ष) नौ सड़कों (किनारों) से जुड़े हैं। हर सड़क का एक भार है, उसकी लंबाई।
  2. चौड़ाई-प्रथम खोज A से शुरू होकर परतों में चलती है: पहले सब पड़ोसी, फिर उनके पड़ोसी। यह कतार इस्तेमाल करती है।
  3. गहराई-प्रथम खोज A से एक रास्ते पर जितना गहरा जा सके जाती है, फिर पीछे लौटती है। यह ढेर (स्टैक) इस्तेमाल करती है।
  4. डाइक्स्ट्रा एल्गोरिद्म A से हर शहर की सबसे छोटी दूरी निकालता है, हर बार सबसे पास वाला अपक्का शहर पक्का करता है।
  5. न्यूनतम स्पैनिंग ट्री सब शहरों को सबसे कम कुल सड़क से जोड़ता है। क्रुस्कल सबसे सस्ते किनारे चुनता है जो चक्र न बनाएँ।
  6. खुद करके देखिए: कोई एल्गोरिद्म और शुरुआती शहर चुनिए, और उसे कदम-दर-कदम चलते देखिए।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

क्या यह ग्राफ़ वही है जो हम आलेख (प्लॉट) में बनाते हैं?

नहीं। यहाँ ग्राफ़ बस बिंदु (शीर्ष) और रेखाएँ (किनारे) है। स्थिति मायने नहीं रखती, केवल यह कि कौन किससे जुड़ा है।

BFS को कतार ही क्यों चाहिए?

कतार में पहले आया पहले जाता है, इसलिए एक परत के सब शीर्ष अगली परत से पहले निकलते हैं।

DFS को कैसे पता चलता है कि कहाँ लौटना है?

ढेर रास्ता याद रखता है। बंद सिरे पर वह आख़िरी शीर्ष उतारकर उसका अगला अनदेखा पड़ोसी आज़माती है।

B तक सबसे छोटा रास्ता सीधी सड़क A–B क्यों नहीं?

A–B 4 km है, पर A–C–B 2 + 1 = 3 km। डाइक्स्ट्रा कुल दूरी देखता है, सड़कों की गिनती नहीं।

क्रुस्कल सस्ता किनारा क्यों छोड़ देता है?

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

क्या शुरुआती शहर बदलने से MST बदलता है?

नहीं। MST केवल भारों पर निर्भर है। खुद करके देखिए में अलग शुरुआत से MST चलाइए; BFS, DFS और डाइक्स्ट्रा बदलते हैं।

ग्राफ़ और कंप्यूटर उन्हें कैसे रखता है

ग्राफ़ में शीर्ष (नोड) और किनारे (कड़ियाँ) होते हैं। किनारे दिष्ट (एकतरफ़ा तीर) हो सकते हैं और उन पर भार (दूरी, लागत, समय या क्षमता) हो सकता है।

किसी शीर्ष की घात उस पर मिलने वाले किनारों की संख्या है। 3D ग्राफ़ में C की घात 4 है।

ट्रैवर्सल: चौड़ाई-प्रथम और गहराई-प्रथम

चौड़ाई-प्रथम खोज (BFS)

  1. शुरुआती शीर्ष को कतार में डालिए और देखा हुआ चिह्नित कीजिए।
  2. कतार के आगे वाला शीर्ष निकालिए।
  3. उसके हर अनदेखे पड़ोसी को कतार के पीछे जोड़िए और चिह्नित कीजिए।
  4. कतार ख़ाली होने तक दोहराइए।

बिना भार वाले ग्राफ़ में BFS सबसे कम किनारों वाला रास्ता देती है। उपयोग: भूलभुलैया का छोटा रास्ता, दोस्तों के दोस्त, वेब क्रॉलर।

गहराई-प्रथम खोज (DFS)

  1. शुरुआती शीर्ष पर जाइए और चिह्नित कीजिए।
  2. किसी अनदेखे पड़ोसी पर जाकर वहीं से दोहराइए (ढेर में डालिए, या रिकर्शन)।
  3. बंद सिरे पर उस आख़िरी शीर्ष तक लौटिए (pop) जिसका कोई पड़ोसी अनदेखा है।

उपयोग: भूलभुलैया और पहेलियाँ, चक्र ढूँढ़ना, ग्राफ़ जुड़ा है या नहीं, कामों का टोपोलॉजिकल क्रम।

आसन्नता सूची के साथ दोनों का समय V + E (शीर्ष + किनारे) के अनुपात में होता है।

ट्री ट्रैवर्सल: प्री-ऑर्डर, इन-ऑर्डर, पोस्ट-ऑर्डर

ट्री बिना चक्र वाला जुड़ा ग्राफ़ है। बाइनरी ट्री में DFS जड़ (root) पर तीन अलग समय पर जा सकती है:

उदाहरण: जड़ 8, बायाँ बच्चा 3 (उसके बच्चे 1 और 6), दायाँ बच्चा 10। प्री-ऑर्डर: 8, 3, 1, 6, 10। इन-ऑर्डर: 1, 3, 6, 8, 10। पोस्ट-ऑर्डर: 1, 6, 3, 10, 8।

डाइक्स्ट्रा का सबसे छोटा रास्ता एल्गोरिद्म

  1. शुरुआती शीर्ष को दूरी 0 और बाक़ी सबको ∞ दीजिए।
  2. सबसे छोटी दूरी वाले अपक्के शीर्ष को पक्का कीजिए (अब उसकी दूरी अंतिम है)।
  3. हर पड़ोसी के लिए, अगर (पक्की दूरी + किनारे का भार) उसकी मौजूदा दूरी से कम है, तो उसे बदलिए और लिखिए कि कहाँ से आया।
  4. सब पक्के होने तक दोहराइए। "कहाँ से आया" पीछे पढ़कर रास्ता निकालिए।

3D ग्राफ़ में A से: A = 0, C = 2, B = 3 (C से होकर, सीधी सड़क 4 की नहीं), D = 8, E = 10, F = 13। डाइक्स्ट्रा तभी चलता है जब कोई भार ऋणात्मक न हो। प्राथमिकता कतार के साथ इसका समय लगभग (V + E) log V है।

न्यूनतम स्पैनिंग ट्री, रूट इंस्पेक्शन और ट्रैवलिंग सेल्सपर्सन

न्यूनतम स्पैनिंग ट्री (MST)

स्पैनिंग ट्री सब V शीर्षों को V − 1 किनारों से, बिना चक्र के जोड़ता है। MST का कुल भार सबसे कम होता है।

3D ग्राफ़ में: BC 1, AC 2, DE 2, EF 3, BD 5 → कुल 13 km (AB 4 छोड़ा गया: चक्र बनता)।

रूट इंस्पेक्शन (चाइनीज़ पोस्टमैन)

हर किनारे पर कम से कम एक बार चलने वाला सबसे छोटा बंद रास्ता। अगर सब घातें सम हैं, उत्तर = कुल भार। वरना विषम घात वाले शीर्षों को जोड़ों में बाँटकर उनके बीच के सबसे छोटे रास्ते जोड़िए। 3D ग्राफ़ में B और E विषम हैं; कुल भार 41 + सबसे छोटा B–E रास्ता 7 = 48 km।

ट्रैवलिंग सेल्सपर्सन (TSP)

हर शीर्ष पर एक बार जाकर लौटने वाला सबसे छोटा चक्कर। इसका कोई तेज़ सटीक तरीका ज्ञात नहीं, इसलिए सीमाएँ निकालते हैं:

सबसे अच्छा चक्कर दोनों सीमाओं के बीच होता है।

नेटवर्क प्रवाह: अधिकतम प्रवाह और न्यूनतम कट

प्रवाह नेटवर्क एक दिष्ट ग्राफ़ है जिसमें हर चाप की क्षमता (अधिकतम कितना ले जा सकता है) होती है, जैसे पाइप या सड़कें। प्रवाह स्रोत S से निकलकर सिंक T तक पहुँचता है। बीच के हर शीर्ष पर अंदर आया प्रवाह = बाहर गया प्रवाह।

उदाहरण: S→A 4, S→B 3, A→B 2, A→T 3, B→T 4। S-A-T पर 3, S-B-T पर 3, S-A-B-T पर 1 भेजिए: प्रवाह 7। कट {S} | {A, B, T} की क्षमता 4 + 3 = 7, इसलिए 7 ही अधिकतम है।

खुद करके देखिए: खुद एल्गोरिद्म बनिए

अपनी गली के 6 घरों के लिए 6 बिंदु बनाइए और उन्हें रेखाओं से जोड़िए; कदमों में दूरी लिखिए। अपने घर से तालिका बनाकर हाथ से डाइक्स्ट्रा चलाइए, फिर 'खुद करके देखिए' वाले चरण में (शुरुआत A) जाँचिए। फिर हर घर को केबल से जोड़ने का सबसे सस्ता तरीका (MST) निकालिए।

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. 3D ग्राफ़ पर A से BFS चलाइए (पड़ोसी वर्णमाला क्रम में)। देखने का क्रम बताइए।

कतार: A → A निकालें, B, C जोड़ें → B निकालें, D जोड़ें → C निकालें, E जोड़ें → D निकालें, F जोड़ें → E → F। क्रम: A, B, C, D, E, F। परतें: B, C 1 किनारे पर; D, E 2 पर; F 3 पर।

2. A से F तक सबसे छोटा रास्ता डाइक्स्ट्रा से निकालिए।

A 0 पक्का। B 4, C 2। C 2 पक्का; B 3 (C से), D 12, E 10। B 3 पक्का; D 8। D 8 पक्का; E 10 ही, F 14। E 10 पक्का; F 13। F 13 पक्का। रास्ता: A–C–B–D–E–F = 2 + 1 + 5 + 2 + 3 = 13 km।

3. क्रुस्कल से 3D ग्राफ़ का MST निकालिए।

क्रम: BC 1, AC 2, DE 2, EF 3, AB 4, BD 5, DF 6, CE 8, CD 10। BC, AC, DE, EF जोड़ें। AB से चक्र A-B-C बनता है: छोड़ें। BD जोड़ें। 6 शीर्षों के लिए 5 किनारे: पूरा। कुल = 1 + 2 + 2 + 3 + 5 = 13।

4. ट्री का प्री-, इन- और पोस्ट-ऑर्डर लिखिए: जड़ 8, बायाँ 3 (बच्चे 1 और 6), दायाँ 10।

प्री-ऑर्डर 8, 3, 1, 6, 10। इन-ऑर्डर 1, 3, 6, 8, 10 (बढ़ते क्रम में, क्योंकि BST है)। पोस्ट-ऑर्डर 1, 6, 3, 10, 8।

5. 3D ग्राफ़ के लिए A से शुरू और A पर ख़त्म रूट इंस्पेक्शन लंबाई निकालिए।

घातें: A2, B3, C4, D4, E3, F2। विषम: B और E। सबसे छोटा B–E: B–D–E = 7 (B–C–E = 9)। कुल भार = 41। रास्ता = 41 + 7 = 48 km; सड़कें B–D और D–E दो बार चली जाती हैं।

6. नेटवर्क: S→A 4, S→B 3, A→B 2, A→T 3, B→T 4। अधिकतम प्रवाह निकालिए और सिद्ध कीजिए।

S-A-T पर 3, S-B-T पर 3, S-A-B-T पर 1: प्रवाह = 7। S को बाक़ी से अलग करने वाले कट की क्षमता 4 + 3 = 7। प्रवाह = कट, इसलिए 7 अधिकतम है।

आम गलतियाँ

अभ्यास क्विज़

1. BFS कौन-सी डेटा संरचना इस्तेमाल करती है?
2. बाइनरी सर्च ट्री का इन-ऑर्डर ट्रैवर्सल मान देता है:
3. डाइक्स्ट्रा एल्गोरिद्म कब ग़लत हो सकता है?
4. 10 शीर्षों वाले ग्राफ़ के स्पैनिंग ट्री में कितने किनारे होंगे?
5. अधिकतम-प्रवाह न्यूनतम-कट प्रमेय कहता है कि अधिकतम प्रवाह बराबर है:

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

BFS और DFS में क्या अंतर है?

BFS कतार से परत-दर-परत खोजती है; DFS ढेर से एक रास्ते पर गहराई में जाकर लौटती है।

डाइक्स्ट्रा एल्गोरिद्म आसान शब्दों में कैसे काम करता है?

शुरुआत 0 से, फिर बार-बार सबसे पास का अपक्का शहर पक्का कीजिए और उसके पड़ोसियों की दूरी अपडेट कीजिए, जब तक सब पक्के न हो जाएँ।

क्रुस्कल और प्रिम में क्या अंतर है?

दोनों न्यूनतम स्पैनिंग ट्री देते हैं। क्रुस्कल कहीं भी सबसे सस्ता बिना-चक्र किनारा जोड़ता है; प्रिम एक शीर्ष से एक ही ट्री को सबसे सस्ते जुड़ने वाले किनारे से बढ़ाता है।

यह कहाँ पढ़ाया जाता है

रोमानियाClasa a XI-aGraphs
यूक्रेन11 класAlgorithms
इंग्लैंडYear 12Optional application 3 Discrete (part 1)
इंग्लैंडYear 134.3 Fundamentals of algorithms
इंग्लैंडYear 13Optional application 3 Discrete (part 2)
जर्मनीJahrgangsstufe 11Graphs

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ