ग्राफ डेटा संरचना और Algorithms (उदाहरण)

⚡ स्मार्ट सारांश

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

  • 📐 संरचना: एक ग्राफ G = (V, E) शीर्षों (नोड्स) के एक समूह को उनके बीच किनारों (लिंक्स) के एक समूह के साथ जोड़ता है।
  • 🔤 शब्दावली: प्रमुख शब्दों में शीर्ष, किनारा, डिग्री, इनडिग्री, आउटडिग्री, सेल्फ-लूप और आसन्नता शामिल हैं।
  • प्रतिनिधित्व: ग्राफ को एडजसेंसी मैट्रिक्स या एडजसेंसी लिस्ट का उपयोग करके संग्रहीत किया जाता है, जिनमें से प्रत्येक में अलग-अलग स्पेस संबंधी समझौते होते हैं।
  • 🧭 प्रकार: निर्देशित, अनिर्देशित, भारित, चक्रीय, अचक्रीय, पूर्ण, द्विपक्षीय आदि श्रेणियों में ग्राफ़ को उनकी संरचना के आधार पर वर्गीकृत किया जाता है।
  • 🌐 आवेदन: गूगल मैप्स रूटिंग, सोशल नेटवर्क, वेब रैंकिंग और संसाधन निर्भरता, ये सभी ग्राफ पर निर्भर करते हैं।

ग्राफ डेटा संरचना और Algorithms

डेटा संरचना में ग्राफ क्या है?

ग्राफ एक गैर-रेखीय डेटा संरचना है जिसमें शीर्ष और किनारे होते हैं, जहां शीर्षों में जानकारी या डेटा होता है, और किनारे शीर्षों के एक जोड़े के बीच एक कड़ी के रूप में काम करते हैं।

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

यदि किनारों को E के रूप में और शीर्षों को V के रूप में दर्शाया जाता है, तो ग्राफ G को शीर्षों और किनारों के समूह के रूप में लिखा जा सकता है, जैसे जी (वी, ई).

डेटा संरचना में ग्राफ का उदाहरण

ग्राफ डेटा संरचना का एक सरल उदाहरण यहां दिया गया है:

डेटा संरचना में ग्राफ का उदाहरण

यह एक सरल अप्रत्यक्ष ग्राफ है (एक प्रकार का ग्राफ)। यहाँ शीर्षों का समुच्चय {A, B, C, D, E, F} है। दो शीर्ष मिलकर एक किनारा बनाते हैं। उदाहरण के लिए, A और B एक किनारे से जुड़े हुए हैं। हालांकि, A और F किसी भी किनारे से नहीं जुड़े हुए हैं।

डेटा संरचना में ग्राफ़ शब्दावली

ग्राफ डेटा संरचना में प्रयुक्त कुछ महत्वपूर्ण शब्द निम्नलिखित हैं:

अवधिविवरण
शिखरप्रत्येक डेटा तत्व को शीर्ष या नोड कहा जाता है। ऊपर दिए गए चित्र में, A, B, C, D और E शीर्ष हैं।
किनारा (आर्क)दो नोड्स या शीर्षों को जोड़ने वाली कड़ियों को किनारा (चाप) कहा जाता है। इसके दो सिरे होते हैं और इसे (प्रारंभिक शीर्ष, अंतिम शीर्ष) के रूप में दर्शाया जाता है।
अनिर्दिष्ट किनारायह एक द्विदिशीय किनारा है।
निर्देशित किनारायह एक दिशात्मक किनारा है।
भारित किनाराएक किनारा जिस पर कोई मान अंकित हो।
डिग्रीकिसी ग्राफ में, किसी शीर्ष से जुड़े किनारों की संख्या को डिग्री कहा जाता है।
इंडिग्रीएक शीर्ष से जुड़े आने वाले किनारों की कुल संख्या.
आउटडिग्रीकिसी शीर्ष से जुड़े हुए बहिर्गामी किनारों की कुल संख्या.
स्व पाशकिसी किनारे को स्व-लूप कहा जाता है यदि उसके दो अंतबिन्दु एक दूसरे से मिलते हों।
समीपताशीर्षों को आसन्न कहा जाता है यदि उनके बीच एक किनारा जुड़ा हो।

डेटा संरचना में ग्राफ़ के प्रकार

यहाँ सबसे आम की सूची दी गई है डेटा संरचना में ग्राफ़ के प्रकार:

  • निर्देशित ग्राफ
  • अनिर्देशित ग्राफ
  • भारित ग्राफ़
  • द्वि-दिशात्मक ग्राफ
  • अनंत ग्राफ
  • शून्य ग्राफ
  • तुच्छ ग्राफ
  • मल्टी ग्राफ
  • पूरा ग्राफ
  • कनेक्टेड ग्राफ
  • चक्रीय ग्राफ
  • निर्देशित चक्रीय ग्राफ (DAG)
  • चक्र ग्राफ
  • द्विदलीय ग्राफ
  • यूलर ग्राफ
  • हैमिल्टन ग्राफ

ग्राफ को डेटा संरचना में कैसे दर्शाया जाता है?

ग्राफ को आमतौर पर दो निरूपणों में से किसी एक का उपयोग करके मेमोरी में संग्रहीत किया जाता है। यह चुनाव इस बात को प्रभावित करता है कि ग्राफ कितनी मेमोरी का उपयोग करता है और सामान्य क्रियाएं कितनी तेजी से चलती हैं।

  • सहखंडज मैट्रिक्स: एक द्वि-आयामी V × V सरणी, जिसमें सेल [i][j] का मान 1 (या किनारे का भार) होता है यदि शीर्ष i और शीर्ष j के बीच कोई किनारा मौजूद हो, अन्यथा 0 होता है। यह O(1) एज लुकअप की अनुमति देता है लेकिन O(V²) स्थान का उपयोग करता है, जिससे यह सघन ग्राफ़ के लिए सर्वोत्तम है।
  • आसन्नता सूची: सूचियों का एक ऐरे जिसमें प्रत्येक शीर्ष अपने पड़ोसी शीर्षों की सूची संग्रहीत करता है। यह O(V + E) स्थान का उपयोग करता है और विरल ग्राफ़ के लिए कुशल है, यही कारण है कि अधिकांश वास्तविक दुनिया के ग्राफ़ इसका उपयोग करते हैं।

आप इनके बारे में और अधिक जानकारी प्राप्त कर सकते हैं। ग्राफ का आसन्नता सूची और मैट्रिक्स निरूपण ट्यूटोरियल।

ग्राफ डेटा संरचना के अनुप्रयोग

ग्राफ के कई उपयोग हैं। ग्राफ का उपयोग करने वाले कई एल्गोरिदम हैं। ग्राफ के कुछ अनुप्रयोग इस प्रकार हैं:

  • गूगल मैप्स दो सड़कों के प्रतिच्छेदन बिंदु का पता लगाने और दो स्थानों के बीच की दूरी की गणना करने के लिए ग्राफ़ का उपयोग करता है। उदाहरण के लिए, डिज्कस्ट्रास्रोत और गंतव्य स्थान के बीच की सबसे छोटी दूरी ज्ञात करने के लिए।
  • फेसबुक उपयोगकर्ताओं के आपसी मित्रों का पता लगाने के लिए ग्राफ़ का उपयोग करता है। इसका एल्गोरिदम प्रत्येक उपयोगकर्ता को ग्राफ़ के एक नोड के रूप में मानता है।
  • संसाधन आवंटन के लिए, एक डीएजी (निर्देशित चक्रीय ग्राफ) का उपयोग किया जाता है। यह संसाधनों की निर्भरता की जाँच करता है।
  • गूगल सर्च इंजन वेबसाइटों की रैंकिंग बनाने के लिए ग्राफ का उपयोग करता है।
  • एक नक्शाping यह उपकरण ग्राफ डेटा संरचना का उपयोग करता है।
  • A रूटर और इसका प्रोटोकॉल गंतव्य तक पहुंचने का मार्ग जानने के लिए ग्राफ का उपयोग करता है।

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

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

जी हां। GitHub Copilot जैसे AI सहायक एक साधारण विवरण से BFS, DFS, Dijkstra और टोपोलॉजिकल सॉर्ट के कार्यान्वयन उत्पन्न कर सकते हैं। कोड का उपयोग करने से पहले आपको डिस्कनेक्टेड नोड्स, साइकल और खाली ग्राफ़ जैसे विशिष्ट मामलों का परीक्षण अवश्य कर लेना चाहिए।

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

ट्रैवर्सल की दो मुख्य विधियाँ हैं: ब्रेथ-फर्स्ट सर्च (बीएफएस), जो एक क्यू का उपयोग करके स्तर दर स्तर खोज करती है, और डेप्थ-फर्स्ट सर्च (डीएफएस), जो वापस आने से पहले स्टैक या रिकर्सन का उपयोग करके यथासंभव गहराई तक खोज करती है।tracराजा।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: