گراف (Graph)

گراف: رأس و یال، انواع (جهت‌دار، وزن‌دار)، دو روش نمایش (ماتریس مجاورت و لیست همسایگی) و کاربردها

گراف چیست؟

گراف (Graph) مجموعه‌ای از رأس (Vertex) و یال (Edge) است که اتصالات را مدل می‌کند. برخلاف درخت، دور مجاز است و هر رأس می‌تواند به چندین رأس دیگر وصل باشد.

مثال‌ها: نقشه شهرها (رأس=شهر، یال=جاده)، شبکه اجتماعی (رأس=شخص، یال=دوستی)، اینترنت (رأس=سرور، یال=کابل).

انواع گراف

نوعویژگیمثال
بی‌جهت (Undirected)یال دوطرفه استدوستی فیسبوک
جهت‌دار (Directed)یال یک‌طرفه استفالو اینستاگرام
وزن‌دار (Weighted)هر یال عدد/هزینه داردفاصله یا زمان جاده
وزن‌دار جهت‌دارترکیب هر دومسیریابی GPS

نمایش ۱: ماتریس مجاورت

آرایه n×n؛ خانه [i][j] = ۱ اگر یال بین i و j باشد:

نمایش ۲: لیست همسایگی

برای هر رأس، لیست همسایه‌هایش (معمولاً با دیکشنری از لیست‌ها):

کدام را انتخاب کنیم؟

شرایطانتخاب
گراف کم‌یال (Sparse)لیست همسایگی ✓
گراف پر یال (Dense)ماتریس مجاورت
بررسی مکرر وجود یالماتریس ✓
پیمایش BFS/DFSلیست همسایگی ✓

در عمل، لیست همسایگی رایج‌تر است (اکثر گراف‌های واقعی کم‌یال‌اند).

مفاهیم مهم

نکته: درخت در واقع گراف همبند بی‌دور است! گراف تعمیم درخت است — هر درختی یک گراف است اما هر گرافی درخت نیست.

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل ساختار داده و الگوریتم است.

ابزارهای مرتبط