منابع معمولاً به دو دسته تقسیم میشن:
-
منابع سختافزاری 🖥️: مثل RAM (حافظه اصلی)، CPU (زمان پردازنده)، حافظه کش، پهنای باند شبکه و فضای ذخیرهسازی. توی ساختمان داده، انتخاب نوع داده و الگوریتم مستقیماً روی مصرف این منابع تأثیر میذاره. مثلاً آرایه حافظه کمتری نسبت به لیست پیوندی میگیره ولی انعطاف کمتری داره.
-
منابع نرمافزاری 📁: مثل فایلها، سوکتهای شبکه، دیتابیس کانکشنها و قفلها (locks). این منابع معمولاً باید به صورت دستی مدیریت بشن و آزادسازی نکردنشون باعث نشتی (leak) میشه.
نکته کلیدی: توی طراحی الگوریتم، همیشه یه trade-off بین زمان و حافظه وجود داره. مثلاً استفاده از حافظه بیشتر (مثل کش کردن نتایج) میتونه سرعت اجرا رو ببره بالا، یا برعکس
منابع (Resources) به هر چیزی گفته میشه که یک فرآیند یا سیستم برای اجرا بهش نیاز داره؛ مثل حافظه، زمان پردازنده، فضای دیسک، یا دسترسی به یک فایل. توی ساختمان داده، مدیریت درست منابع خیلی مهمه چون الگوریتمها باید بهینه ازشون استفاده کنن.