نظریه گراف

نظریه گراف شاخه‌ای از ریاضیات است که دربارهٔ گراف‌ها بحث می‌کند. به صورت شهودی، گراف نموداری است، شامل تعدادی رأس، که با یال‌هایی به هم وصل شده‌اند.

== تعریف ==

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

یال‌ها بر دو نوع ساده و جهت دار هستند، که هر کدام در جای خود کاربردهای بسیاری دارد. مثلاً اگر صرفاً اتصال دو نقطه -مانند اتصال تهران و زنجان با کمک آزادراه- مد نظر شما باشد، کافیست آن دو شهر را با دو نقطه نمایش داده، و اتوبان مزبور را با یالی ساده نمایش دهید. اما اگر بین دو شهر جاده‌ای یکطرفه وجود داشته باشد آنگاه لازمست تا شما با قرار دادن یالی جهت دار مسیر حرکت را در آن جاده مشخص کنید. همچنین برای اینکه فاصله بین دو شهر را در گراف نشان دهید، می‌توانید از گراف وزن دار استفاده کنید و مسافت بین شهرها را با یک عدد بر روی هر یال نشان دهید.

آغاز نظریهٔ گراف به سدهٔ هجدهم بر می‌گردد. اولر ریاضیدان بزرگ مفهوم گراف را برای حل مسئله پل‌های کونیگسبرگ ابداع کرد اما رشد و پویایی این نظریه عمدتاً مربوط به نیم سدهٔ اخیر و با رشد علم انفورماتیک بوده‌است.

مهم‌ترین کاربرد گراف مدل‌سازی پدیده‌های گوناگون و بررسی بر روی آنهاست. با گراف می‌توان به راحتی یک نقشه بسیار بزرگ یا شبکه‌ای عظیم را در درون یک ماتریس به نام ماتریس وقوع گراف ذخیره کرد و یا الگوریتمهای مناسب مانند الگوریتم دایسترا یا الگوریتم کروسکال و … را بر روی آن اعمال نمود.

یکی از قسمت‌های پرکاربرد نظریهٔ گراف، گراف مسطح است که به بررسی گراف‌هایی می‌پردازد که می‌توان آن‌ها را به نحوی روی صفحه کشید که یال‌ها جز در محل راس‌ها یکدیگر را قطع نکنند. این نوع گراف در ساخت جاده‌ها و حل مساله کلاسیک و قدیمی سه خانه و سه چاه آب به کار می‌رود.

نظریه گراف یکی از پرکاربردترین نظریه‌ها در شاخه‌های مختلف علوم مهندسی (مانند عمران)، باستان‌شناسی (کشف محدوده یک تمدن) و … است.

روابط میان راس‌های یک گراف را می‌توان با کمک ماتریس بیان کرد .

برای نمایش تصویری گراف‌ها معمولاً از نقطه یا دایره برای کشیدن راس‌ها و از کمان یا خط راست برای کشیدن یال بین راس‌ها استفاده می‌شود.

== اندازه گراف ==

اندازه گراف تعداد یال‌های یک گراف است و به صورت |(E(G| بیان می‌شود.

== درجه راس‌ها ==

در نظریه گراف‌ها، درجه یک راس به تعداد یال‌های متصل به آن راس گفته می‌شود. به عبارت دیگر. درجه یک راس تعداد همسایگی (مجاورت)‌های مستقیم یک راس را بیان می‌کند. از آنجا که هر یال در گراف دو راس را به هم وصل می‌کند، مجموع درجه راس‌های یک گراف با دو برابر تعداد یال‌های ان گراف برابر است.

== انواع گراف ==

گراف همبند گرافی است که بین همهی راسهای آن یالی وجود داشته باشد

===گراف هی وود(Heawood Graph)===

=== گراف کنزر(Kneser) ===

=== گراف کامل ===

=== گراف پترسن ===

گراف پترسن گرافی با ۱۰ راس و ۳- منتظم است که به صورت زیر رسم می گردد:

=== گراف دو بخشی ===

==== مفهوم شهودی ====

فرض کنید در یک شرکت صنعتی تعدادی شغل بدون متصدی می باشند و تعدادی متقاضی برای این مشاغل اعلام آمادگی نموده اند. حال این سوال مطرح می‌شود که آیا می توان به هر متقاضی شغلی متناسب او اختصاص داد؟ برای حل چنین مسئله ای که به مسئلهٔ تخصیص موسوم است، با استفاده از گراف می توان وضعیت‌های خاص را پیاده سازی نمود. بدین ترتیب که گروهی که متقاضی مشاغل هستند در مجموعه ای به نام X و مجموعه مشاغل بدون متصدی را در مجموعه ای به نام Y قرار می دهیم. گراف رسم شده چنین است که به بعضی از اعضای مجموعه X یک یا چند عضو از مجموعه Y توسط یال‌ها وصل می نماید. به عبارت دیگر گراف بوجود امدی دارای یالهای xy است که مر متقاضی x را از مجموعه X به شغلهای مناسب y از مجموعه Y متصل می نماید. به عبارت دقیقتر هیچ دو راس متعلق به مجموعه X(متفاضیان) یا هیچ دو راس متعلق به مجموعه Y(مشاغل) توسط هیچ یالی به هم متصل نمی باشند. چنین گرافی را گراف دوبخشی یا دوپارچه می گویند.

==== تعریف ====

=== گراف ساده ===

گراف ساده: هر گراف G زوج مرتبی مانند (V,E) است که در آن V مجموعه‌ای متناهی و ناتهی است و E زیرمجموعه‌ای از تمام زیرمجموعه‌های دو عضوی V می‌باشد. اعضای V را رأسهای G و اعضای E را یالهای G می‌نامیم. به بیان ساده تر بین دو رأس یک گراف ساده حداکثر یک یال وجود دارد.

=== گراف همیلتونی ===

=== گراف چرخ ===

هر گراف G که دارای n راس باشد کهn≥۴ و یکی از رئوس از درجهٔ n-۱ و بقیه از درجهٔ سه باشند، را یک گراف چرخ می نامیم- مانند مثال‌های زیر:

گراف چرخn راسی را با nW نمایش می دهیم.

=== گراف چندگانه ===

گراف چندگانه: هرگاه بین دو رأس متمایز از یک گراف بیش از یک یال وجود داشته باشد، آن را یک گراف چند گانه می‌گوییم.

=== گراف مکعبی ===

یک گراف «k مکعب» (k-Cube) گرافی است که رئوس آنk تایی از «صفر» و «یک» هستند که دو رأس آن به یکدیگر متصل هستند اگر و فقط اگر دو رأسشان دقیقاً در یک مؤلفه با یکدیگر تفاوت داشته باشند. به‌عبارت دیگر اگر kعددی طبیعی باشد منظور از « kمکعب» گرافی است که رأس‌های آن همهٔ دنباله‌های رقمی از «صفر» و «یک» هستند و دو رأس در این گراف مجاور بوده هرگاه دنباله‌های متناظرشان دقیقاً در یک مؤلفه اختلاف داشته باشند (شکل ۱).

می‌توان نشان داد که یک گراف «k مکعب» (k-Cube) دارای ویژگی‌هایی نظیر ذیل است:

# تعداد رؤوس =۲k
# تعداد یال‌ها=k*۲(k-۱)
# گرافی «دوبخشی» (Bipartite) است.

=== گراف جهت دار ===

گراف جهت دار: هر گراف G زوج مرتبی مانند (V,E) است که در آن V مجموعه‌ای متناهی و ناتهی است و E زیرمجموعه‌ای از مجموعهٔ تمام زوج مرتب‌های متشکل از اعضای V است.

===گراف جهتدارو کاربردهای آن===

گراف جهت دارو کاربردهای آنگراف جهت دار D، یک سه تایی مرتب( O(D) و A(D) و ( V(D)است که تشکیل شده از یک مجموعه ناتهی V(D) از راسها ویک مجموعه (D) A مجزای از V(D)از کمانها و یک تابع وقوع O(D)که به هر کمان D یک زوج مرتب از راسهای D- که الزاماً متمایز نیستند- را نسبت میدهد. اگر a یک کمان وu,v دو راس باشند به طوری که(u,v) =(a)O (D)، آنگاه میگوئیم که u,a را به v وصل کرده است؛ u، دم v,a سرa نامیده می شود.

=== گراف مسطح ===

گراف مسطح: گراف مسطح گرافی است که می‌توان آن را در یک صفحه محاط کرد به گونه‌ای که یال‌هایش یکدیگر را تنها در راس‌ها قطع کنند.

=== گراف وزن دار ===

گراف وزن دار: در یک گراف وزن دار، به هر یال یک وزن (عدد) نسبت داده می‌شود. معمولاً اعداد حقیقی به عنوان وزن یال‌ها استفاده می‌شوند. اما بسیاری از الگوریتم‌های پر کاربرد فقط برای گراف‌هایی که دارای وزن صحیح یا مثبت هستند طراحی شده‌اند.

== خصوصیات گراف‌های خاص ==

* گراف اویلری و همیلتونی:گاهی اوقات ما می‌خواهیم در یک گراف حرکت کنیم.به اینصورت که از راسی به راسی دیگر برویم.در اینصورت ممکن است برای ما مهم باشد که از روی یال یا راس تکراری حرکت نکنیم(مشابه مسالهٔ فروشندهٔ دوره گرد).این مساله در صرفه جویی زمان و هزینه هم مهم است.(یعنی مبحث بهینه سازی).دراینجا دو موضوع گرافهای اویلری(دور زدن در گراف بدون یال تکراری)و همیلتونی(دور زدن بدون راس تکراری) مطرح می‌شود.براحتی می‌توان بررسی کرد که راسهای گراف اویلری باید درجهٔ زوج داشته باشند.اما اینکه شرایط کامل لازم و کافی برای همیلتونی بودن یک گراف چیست هنوز حل نشده مانده‌است.

== الگوریتم‌های مهم ==

=== الگوریتم کراسکال(kruskal) ===

==== کد برنامه به زبان C ====

{پایان چپ‌چین}

=== الگوریتم پریم(prim) ===

==== کد برنامه به زبان C ====

int main (int argc, char * const argv[]) { int p, i, n; i = ۳; n = ۵; std::cout << «Initiating prime number generation sequence...\n\n۱: ۲\n۲: ۳\n»; while (۱) { p = testForPrime (n); if (p == ۱) { std::cout << i << «: » << n << «\n»; i++; } n = n + ۲; } return ۰; }[/align] {پایان چپ‌چین} === الگوریتم فلوید-وارشال(الگوریتم کوتاهترین مسیر) === ==== کد برنامه به زبان C ==== == گراف‌های کاربردی == == کاربردها == از گراف‌ها برای حل مسایل زیادی در ریاضیات و علوم کامپیوتر استفاده می‌شود. ساختارهای زیادی را می‌توان به کمک گراف‌ها به نمایش در آورد. برای مثال برای نمایش چگونگی رابطه وب سایت‌ها به یکدیگر می‌توان از گراف جهت دار استفاده کرد. به این صورت که هر وب سایت را به یک راس در گراف تبدیل می‌کنیم و در صورتیکه در این وب سایت لینکی به وب سایت دیگری بود، یک یال جهت دار از این راس به راسی که وب سایت دیگر را نمایش می‌دهد وصل می‌کنیم. از گراف‌ها همچنین در شبکه‌ها، طراحی مدارهای الکتریکی، اصلاح هندسی خیابان‌ها برای حل مشکل ترافیک، و.... استفاده میشود. مهم‌ترین کاربرد گراف مدل‌سازی پدیده‌های گوناگون و بررسی بر روی آنهاست. با گراف می‌توان به راحتی یک نقشه بسیار بزرگ یا شبکه‌ای عظیم را در درون یک ماتریس به نام ماتریس وقوع گراف ذخیره کرد و یا الگوریتمهای مناسب مانند الگوریتم دایسترا یا الگوریتم کروسکال و ... را بر روی آن اعمال نمود. در این جا به بررسی گراف‌هایی می‌پردازد که می‌توان آن‌ها را به نحوی روی صفحه کشید که یال‌ها جز در محل راس‌ها یکدیگر را قطع نکنند. این نوع گراف در ساخت جاده‌ها و حل مساله کلاسیک و قدیمی سه خانه و سه چاه آب به کار می‌رود. کاربرد گراف بازه‌ها از گراف‌ها برای حل مسایل زیادی در ریاضیات و علوم کامپیوتر استفاده میشود. ساختارهای زیادی را میتوان به کمک گراف‌ها به نمایش در آورد. درخت و ماتریس درخت در رشته‌های مختلفی مانند شیمی مهندسی برق و علم محاسبه کاربرد دارد . کیرشهف در سال ۱۸۴۷ میلادی هنگام حل دستگاههای معادلات خطی مربوط به شبکه‌های الکتریکی درختها را کشف و نظریه درختها را بارور کرد. کیلی در سال ۱۸۵۷ میلادی درختها را در ارتباط با شمارش ایزومرهای مختلف هیدروکربنها کشف کرد وقتی مثلا میگوییم در ایزومر مختلف c4h۱۰ وجود دارد منظورمان این است که دو درخت متفاوت با ۱۴ راس وجود دارند که درجه ۴ راس از این ۱۴ راس جهار و درجه هر یک از ۱۰ راس باقیمانده یک است. اگر هزینه کشیدن مثلا راه آهن بین هر دو شهر ازp شهر مفروض مشخص باشد ارزانترین شبکه ای که این p شهر را به هم وصل می‌کند با مفهوم یک درخت از مرتبه p ارتباط نزدیک دارد. به جای مساله مربوط به راه آهن میتوان وضعیت مربوط به شبکه‌های برق رسانی و لوله کشی نفت و لوکشی گاز و ایجاد کانالهای آبرسانی را در نظر گرفت . برای تعیین یک شبکه با نازلترین هزینه از قاعده ای به نام الگوریتم صرفه جویی استفاده می‌شود که کاربردهای فراوان دارد. از گرافها می توان به عنوان کدهای کمکی نام برد که به DVB Player‌ها در بالا بردن قابلیت‌های آنها کمک میکنند. گراف‌ها دارایی مزایای مختلفی هستند که شفاف تر کردن و واضحتر کردن تصویر و کاهش مصرف CPU به عنوان یکی از اصلی‌ترین مزایای آنها بشمار می رود. == مطالعهٔ بیشتر == * کتاب آشنایی با نظریهٔ گراف نوشتهٔ علیرضا علیپور، انتشارات فاطمی * کتاب مقدمه‌ای بر نظریه گراف نوشته دووگلاس بی وست انتشارات گسترش علوم پایه * کتاب نظریه گراف‌ها و کاربردهای آن نوشته باندی و مورتی، ترجمه حمید ضرابی زاده، موسسه دیباگران تهران * کتاب ریاضیات گسسته نوشته ر.پ.گریمالدی، مرکز نشر دانشگاهی == جستارهای وابسته == * یکریختی گراف == پانویس ==

درج دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *