আমি মনে করি আপনার প্রথম উদাহরণটি কিছুটা অস্পষ্ট - পয়েন্টার হিসাবে বস্তু এবং প্রান্ত হিসাবে নোড। আপনি কিছু মূল নোডের কেবলমাত্র একটি পয়েন্টার সংরক্ষণ করে এগুলি ট্র্যাক করে রাখতে পারেন, এই ক্ষেত্রে কোনও প্রদত্ত নোড অ্যাক্সেস অকার্যকর হতে পারে (বলুন আপনি নোড 4 চান - নোড অবজেক্টটি সরবরাহ না করা থাকলে আপনাকে এটি অনুসন্ধান করতে হতে পারে) । এই ক্ষেত্রে, আপনি গ্রাফের কিছু অংশও হারাবেন যা মূল নোড থেকে পৌঁছনীয় নয়। আমি মনে করি এটি f64 রংধনুটি ধরে নিয়েছে যখন তিনি বলেন যে প্রদত্ত নোড অ্যাক্সেসের জন্য সময় জটিলতা হ'ল হে (এন)।
অন্যথায়, আপনি প্রতিটি নোডের পয়েন্টারে পূর্ণ একটি অ্যারে (বা হ্যাশম্যাপ) রাখতেও পারেন। এটি ও (1) প্রদত্ত নোডে অ্যাক্সেসের অনুমতি দেয় তবে মেমরির ব্যবহারটি কিছুটা বাড়িয়ে তোলে। N যদি নোডের সংখ্যা হয় এবং e প্রান্তগুলির সংখ্যা হয় তবে এই পদ্ধতির স্পেস জটিলতা হবে ও (এন + ই)।
ম্যাট্রিক্স পদ্ধতির জন্য স্পেস জটিলতা ও (এন ^ 2) এর লাইনের সাথে হবে (ধরে নিচ্ছেন প্রান্তগুলি একমুখী হয়)। যদি আপনার গ্রাফ অপ্রয়োজনীয় হয় তবে আপনার ম্যাট্রিক্সে প্রচুর খালি ঘর থাকবে। তবে যদি আপনার গ্রাফটি সম্পূর্ণ সংযুক্ত থাকে (e = n ^ 2), এটি প্রথম পদ্ধতির সাথে অনুকূলভাবে তুলনা করে। আরজি যেমন বলেছে, আপনি যদি ম্যাট্রিক্সকে এক অংশের মেমোরির জন্য বরাদ্দ করেন তবে এই পদ্ধতির সাথে আপনার ক্যাশেও কম মিস হতে পারে যা গ্রাফের চারপাশে প্রচুর প্রান্তগুলি দ্রুত তৈরি করতে পারে।
তৃতীয় পদ্ধতি সম্ভবত বেশিরভাগ ক্ষেত্রে - ও (ই) - এর ক্ষেত্রে সবচেয়ে স্পেস দক্ষ, তবে প্রদত্ত নোডের সমস্ত প্রান্ত একটি হে (ই) কোরিয়ার সন্ধান করতে পারে। আমি এমন কোনও ক্ষেত্রে ভাবতে পারি না যেখানে এটি খুব কার্যকর হবে।