دور در گراف: مسیر بسته با رأسهای متمایز
۱. تعریف دور و تفاوت آن با مسیر ساده
در نظریه گراف1، یک مسیر دنبالهای از رأسها است که هر رأس مجاور با رأس بعدی توسط یک یال به هم وصل شده باشد. اگر اولین و آخرین رأس مسیر یکی باشد، آن مسیر را بسته مینامیم. اما برای اینکه این مسیر بسته به دور (Cycle) تبدیل شود، باید شرط زیر برقرار باشد:
به عبارت دیگر: دور یک مسیر بسته با حداقل 3 یال است که هیچ رأس یا یالی (به جز شروع/پایان) تکرار نمیشود. به همین دلیل به آن «مسیر بسته با رأسهای متمایز» نیز میگویند.
مثال عملی: نقشه یک پارک را تصور کنید که در آن چهار نقطه A, B, C, D وجود دارد. اگر بتوانید از A به B، سپس به C، بعد به D و دوباره به A برگردید، یک دور به طول 4 تشکیل دادهاید. اما اگر مسیر A-B-C-B-A را طی کنید، به دلیل تکرار رأس B، این یک دور محسوب نمیشود.
۲. ویژگیهای اساسی دورها در گراف ساده
در یک گراف ساده2 (بدون یال موازی و بدون حلقه)، سادهترین نوع دور، مثلثی با سه رأس است. ویژگیهای مهم دورها عبارتند از:
- طول دور (Length): تعداد یالهای تشکیلدهنده دور. کوچکترین طول دور ممکن در گراف ساده، 3 است.
- دور همیلتونی3: دوری که از تمام رأسهای گراف دقیقاً یک بار عبور کند.
- دور اویلری4: دوری که از تمام یالهای گراف دقیقاً یک بار عبور کند.
- گراف بدون دور (آسیکلیک): گرافی که هیچ دوری نداشته باشد. درختها5 مهمترین نمونه گرافهای بدون دور هستند.
۳. انواع دورها از دیدگاه ساختار گراف
دورها را بر اساس نوع گراف و محدودیتهای مسیری میتوان به دستههای زیر تقسیم کرد:
| نوع دور | توضیح کوتاه | مثال (تعداد رأس) |
|---|---|---|
| دور ساده | هیچ رأس یا یالی تکرار نمیشود | 3,4,5,... |
| دور جهتدار | در گراف جهتدار، جهت یالها یکسان و بسته باشد | v1→v2→v3→v1 |
| دور القایی | زیرگرافی که خود یک دور است و یال دیگری بین رأسهای آن وجود ندارد | چهارضلعی بدون قطر |
| دور مبنا (پایه) | دورهایی که از یک درخت پوشا با اضافه کردن یک یال ساخته میشوند | هر یال غیر درختی یک دور میسازد |
۴. کاربرد عملی: تشخیص دور در شبکه انتقال داده
فرض کنید یک شبکه کامپیوتری متشکل از 6 گره (روتر) و 7 پیوند (لینک) داریم. اگر در این شبکه یک دور وجود داشته باشد، ممکن است بستههای داده به طور نامحدود در حلقه گردش کنند و شبکه را قفل کنند. برای جلوگیری از این پدیده، پروتکلهای مسیریابی مانند درخت پوشای کمینه از گراف اصلی دورها را حذف میکنند. عملاً کافی است یکی از یالهای دور را غیرفعال کنیم تا دیگر چرخهای وجود نداشته باشد.
مثال عددی: فرض کنید گرافی با رأسهای {A,B,C,D} و یالهای AB, BC, CD, DA, AC داریم. این گراف شامل دو دور است: یکی A-B-C-D-A (طول 4) و دیگری A-B-C-A (طول 3). با حذف یال AC، فقط یک دور باقی میماند. با حذف یک یال دیگر از آن دور، گراف به یک درخت (بدون دور) تبدیل میشود.
۵. الگوریتم تشخیص دور در گراف با جستجوی عمق اول
یکی از روشهای پایهای برای یافتن دور در گراف، استفاده از جستجوی عمق اول (DFS)6 است. ایده اصلی: حین پیمایش گراف، اگر به راسی برسیم که قبلاً ملاقات شده و پدر (والد) فعلی رأس نباشد، یک دور کشف کردهایم. مراحل تشخیص دور در گراف بدون جهت به صورت زیر است:
- گام 1 – همه رأسها را با رنگ سفید (ملاقات نشده) علامت بزن.
- گام 2 – از یک رأس شروع کن و به همسایهها برو.
- گام 3 – اگر همسایهای را دیدی که قبلاً ملاقات شده و پدر رأس فعلی نیست، پس یک دور وجود دارد.
- گام 4 – الگوریتم را تا ملاقات همه رأسها ادامه بده.
۶. چالشهای مفهومی
خیر. در یک گراف ساده (بدون یال موازی و حلقه)، برای ایجاد یک مسیر بسته با دو رأس به حداقل دو یال موازی نیاز داریم که در گراف ساده مجاز نیست. در گرافهای چندگانه (با یال موازی)، دو رأس با دو یال جداگانه میتوانند یک دور به طول 2 بسازند، اما در گراف ساده، کوچکترین دور طول 3 دارد.
بله. برای مثال، دو درخت جداگانه که هیچ یالی بین آنها نیست، هر کدام بدون دور هستند. مجموع آنها یک گراف بدون دور (جنگل) تشکیل میدهد که چند مؤلفه دارد. شرط «بدون دور بودن» به معنای همبند بودن نیست.
در یک گراف همبند، اگر m \ge n باشد، گراف حداقل یک دور دارد. درختها دقیقاً m = n - 1 یال دارند و بدون دورند. بنابراین، هر یال اضافی به تعداد m - n + 1 دور مبنا ایجاد میکند.
۷. فرمولهای کلیدی در محاسبه دور مبنا
برای یک گراف همبند با n رأس و m یال، تعداد دورهای مبنا (که فضای دور گراف را میسازند) برابر است با:
این عدد نشان میدهد که چند یال باید از گراف حذف شود تا به یک درخت (گراف بدون دور) برسیم. در یک گراف با c مؤلفه همبندی، فرمول به صورت زیر اصلاح میشود:
پاورقی
1 گراف (Graph): ساختاری متشکل از رأسها (نقاط) و یالها (اتصالات بین رأسها).
2 گراف ساده (Simple Graph): گرافی که در آن بین هر دو رأس حداکثر یک یال وجود دارد و هیچ حلقهای (یالی که از یک رأس به خودش وصل شود) ندارد.
3 دور همیلتونی (Hamiltonian Cycle): دوری که از هر رأس گراف دقیقاً یک بار عبور میکند.
4 دور اویلری (Eulerian Circuit): دوری که از هر یال گراف دقیقاً یک بار عبور میکند.
5 درخت (Tree): گراف همبند بدون هیچ دوری.
6 جستجوی عمق اول (Depth-First Search - DFS): الگوریتم پیمایش گراف که تا جایی که ممکن است در عمق پیش میرود سپس به عقب برمیگردد.