मुझे लगता है कि आपका पहला उदाहरण थोड़ा अस्पष्ट है - बिंदु और किनारों के रूप में नोड्स। आप केवल कुछ रूट नोड के लिए एक पॉइंटर को स्टोर करके इन पर नज़र रख सकते हैं, जिस स्थिति में किसी दिए गए नोड तक पहुंच अक्षम हो सकती है (जैसे आप नोड 4 चाहते हैं - यदि नोड ऑब्जेक्ट प्रदान नहीं किया गया है, तो आपको इसके लिए खोज करना पड़ सकता है) । इस स्थिति में, आप ग्राफ़ के उन हिस्सों को भी खो देंगे जो रूट नोड से उपलब्ध नहीं हैं। मुझे लगता है कि यह मामला है एफ 64 इंद्रधनुष मान रहा है जब वह कहता है कि किसी दिए गए नोड तक पहुंचने की समय जटिलता हे (एन) है।
अन्यथा, आप प्रत्येक नोड पर पॉइंटर्स से भरा एक सरणी (या हैशमैप) भी रख सकते हैं। यह O (1) को दिए गए नोड तक पहुंच प्रदान करता है, लेकिन मेमोरी उपयोग को थोड़ा बढ़ा देता है। यदि n नोड्स की संख्या है और e किनारों की संख्या है, तो इस दृष्टिकोण की अंतरिक्ष जटिलता O (n + e) होगी।
मैट्रिक्स दृष्टिकोण के लिए अंतरिक्ष की जटिलता ओ (n ^ 2) की पंक्तियों के साथ होगी (यह मानते हुए कि किनारे अप्रत्यक्ष हैं)। यदि आपका ग्राफ विरल है, तो आपके मैट्रिक्स में बहुत सारी खाली कोशिकाएँ होंगी। लेकिन अगर आपका ग्राफ पूरी तरह से जुड़ा हुआ है (e = n ^ 2), तो यह पहले दृष्टिकोण के अनुकूल है। जैसा कि आरजी कहते हैं, आपके पास इस दृष्टिकोण के साथ कम कैश मिस हो सकता है यदि आप मैट्रिक्स को मेमोरी के एक चंक के रूप में आवंटित करते हैं, जो कि ग्राफ़ के चारों ओर बहुत अधिक तेजी से निम्नलिखित बना सकता है।
तीसरा दृष्टिकोण संभवतः अधिकांश मामलों के लिए सबसे अधिक कुशल है - O (e) - लेकिन किसी दिए गए नोड O (e) के सभी किनारों को खोजने का कार्य करेगा। मैं ऐसे मामले के बारे में नहीं सोच सकता जहाँ यह बहुत उपयोगी होगा।