You are on page 1of 51

‫ریاضیات گسسته‬

‫دکتر مرضیه ورپشتی‬


‫فصل دهم‬
‫گراف‬
‫گراف‬
‫• گراف )‪ G = (V , E‬شامل یک مجموعه ناتهی از رئوس ‪ V‬و‬
‫یک مجموعه یال ‪ E‬است‪ .‬هر یال دو رأس انتهایی را به هم‬
‫متصل میکند‪.‬‬
‫• گراف ساده‪ :‬گرافی که در آن یالهای چندگانه (یال های موازی)‬
‫نداریم و هر یال دو رأس متفاوت را به هم متصل میکند‪.‬‬

‫• گراف چندگانه‪ :‬گرافی که شامل یال های چندگانه باشد‪.‬‬


‫• طوقه (حلقه)‪ :‬یالی که یک رأس را به خودش وصل میکند‪.‬‬

‫• به گرافی که شامل طوقه باشد‪ ،‬شبه گراف هم گفته میشود‪.‬‬


‫• گراف جهتدار (‪ :)digraph‬گراف جهتدار شامل یک مجموعه‬
‫ناتهی از رئوس ‪ V‬و یک مجموعه یالهای جهتدار ‪ E‬است‪ .‬هر‬
‫یال جهتدار با یک زوج مرتب از رئوس نمایش داده میشود‪.‬‬
‫انواع گراف ها‬
‫• دو رأس در یک گراف را مجاور (همسایه) گوییم‪ ،‬اگر رئوس‬
‫انتهایی یک یال باشند‪.‬‬

‫• مجموعه همه همسایه های رأسی مانند ‪ v‬را همسایگی ‪ v‬مینامیم و‬


‫آن را با )‪ N(v‬نشان میدهیم‪.‬‬

‫• درجه یک رأس در گراف بدون جهت‪ :‬تعداد یال هایی که مجاور‬


‫آن رأس هستند و با )‪ deg(v‬نشان داده میشود‪.‬‬
‫• به رأسی با درجه صفر رأس تنها گفته میشود‪.‬‬

‫• به گره های درجه یک‪ ،‬برگ گفته میشود‪.‬‬


‫• قضیه‪ :‬اگر ‪ G‬گرافی بدون جهت با ‪ m‬یال باشد‪ ،‬آنگاه‬

‫• قضیه‪ :‬تعداد رئوس با درجه فرد در یک گراف بدون جهت‪ ،‬زوج‬


‫است‪.‬‬
‫• در یک گراف جهتدار‪ ،‬درجه ورودی ()‪ )deg-(v‬یک رأس‬
‫برابر است با تعداد یال هایی که به یک رأس وارد میشود‪ .‬درجه‬
‫خروجی ()‪ )deg+(v‬برابر است با تعداد یالهایی که از آن رأس‬
‫خارج میشود‪.‬‬
‫• قضیه‪ :‬در یک گراف جهتدار داریم‪:‬‬
‫• گراف کامل ‪ :Kn‬گراف ساده ای با ‪ n‬رأس که بین هر دو رأس آن‬
‫دقیقا یک یال وجود دارد‪.‬‬
‫• دور ‪ :Cn‬شامل ‪ n‬رأس }‪ {v1, v2,…,vn‬و یال های‬
‫})‪ {(v1,v2),(v2,v3),…,(vn-1,vn),(vn,v1‬است‬
‫گراف دو بخشی‬
‫• گراف ساده ‪ G‬دوبخشی است‪ ،‬اگر مجموعه رئوس آن را بتوان به‬
‫دو مجموعه جدا از هم ‪ V1‬و ‪ V2‬تقسیم کرد بطوریکه هر یال در‬
‫‪ G‬یک رأس از مجموعه ‪ V1‬را به یک رأس از مجموعه ‪V2‬‬
‫وصل کند‪.‬‬
‫• قضیه‪ :‬یک گراف ساده دوبخشی است اگر و فقط اگر بتوان رئوس‬
‫آن را با دو رنگ مختلف رنگ آمیزی کرد به طوریکه هیچ دو‬
‫رأس مجاوری همرنگ نباشند‪.‬‬

‫مثال‪ :‬آیا گراف های زیر دوبخشی هستند‪.‬‬


‫• گراف کامل دو بخشی ‪ :Km,n‬گرافی دو بخشی که ‪ m‬رأس در‬
‫مجموعه اول و ‪ n‬رأس در مجموعه دوم دارد و بین هر دو رأس‬
‫از دو مجموعه متفاوت دقیقا یک یال وجود دارد‪.‬‬
‫بازنمایی گراف‬
‫• روش های بازنمایی گراف عبارتند از‪:‬‬
‫• لیست مجاورت (‪)adjacency list‬‬

‫• ماتریس مجاورت (‪)adjacency matrix‬‬

‫• ماتریس تالقی (‪)incidence matrix‬‬


‫• لیست مجاورت‪ :‬برای گرافی بدون یال های موازی قابل استفاده‬
‫است‪ .‬رئوس مجاور هر رأس را لیست میکنیم‪.‬‬
‫• ماتریس مجاورت‪ :‬اگر گراف ‪ G‬شامل ‪ n‬رأس باشد‪ ،‬ماتریس‬
‫مجاورت یک ماتریس ‪ n‬در ‪ n‬است که در آن ‪ aij‬درایه ‪ ij‬ام‬
‫ماتریس مجاورت است و به صورت زیر تعریف میشود‪:‬‬
‫• ماتریس تالقی‪ :‬اگر در گراف ‪ G‬تعداد رئوس ‪ n‬و تعداد یال ها‬
‫‪ m‬باشد‪ ،‬ماتریس تالقی یک ماتریس ‪ n‬در ‪ m‬است که در آن‪:‬‬
‫یکریختی گراف ها‬
‫• دو گراف ‪ G1‬و ‪ G2‬یکریخت هستند اگر و فقط اگر یک تابع یک‬
‫به یک پوشا ‪ f‬از مجموعه رئوس ‪ G1‬به رئوس ‪ G2‬وجود داشته‬
‫باشد بطوریکه ‪ a‬و ‪ b‬در ‪ G1‬مجاور هستند اگر و فقط اگر )‪f(a‬‬
‫و )‪ f(b‬در ‪ G2‬مجاور باشند‪.‬‬
‫همبندی‬
‫• مسیر (‪ :)path‬دنباله ای از رئوس است بطوری که بین هر دو‬
‫رأس متوالی در دنباله یک یال وجود دارد‪.‬‬

‫• دور (‪ :)circuit‬مسیری که رأس ابتدا و انتهای آن بر هم منطبق‬


‫باشند‪.‬‬

‫• به مسیر یا دور ساده میگوییم اگر شامل هیچ یال تکراری نباشد‪.‬‬
‫• یک گراف بدون جهت همبند است اگر بین هر دو رأس مجزای آن‬
‫یک مسیر وجود داشته باشد‪ .‬گرافی که همبند نباشد ناهمبند نامیده‬
‫میشود‪.‬‬
‫• مولفه همبندی‪ :‬یک مولفه همبندی از گراف ‪ G‬یک زیرگراف‬
‫همبند از ‪ G‬است که زیرگراف محض هیچ زیرگراف همبند‬
‫دیگری نیست‪( .‬زیرگراف همبند ماکسیمال)‬
‫• راس برشی‪ :‬راسی که حذف آن و یالهای مجاور آن از گراف‪،‬‬
‫تعداد مولفه های همبندی را افزایش دهد‪.‬‬

‫• یال برشی‪ :‬یالی که حذف آن از گراف‪ ،‬تعداد مولفه های همبندی‬


‫را افزایش دهد‪.‬‬
‫همبندی در گراف های جهتدار‬
‫• یک گراف جهتدار قویا همبند است اگر برای هر دو رأس ‪ a‬و ‪b‬‬
‫مسیری از ‪ a‬به ‪ b‬و مسیری از ‪ b‬به ‪ a‬وجود داشته باشد‪.‬‬

‫• یک گراف جهتدار ضعیفا همبند است اگر بین هر دو رأس آن‬


‫مسیری بدون در نظر گرفتن جهت یال ها وجود داشته باشد‪.‬‬
‫• قضیه‪ :‬فرض کنید ‪ G‬یک گراف و ‪ A‬ماتریس مجاورت آن باشد‪.‬‬
‫تعداد مسیرهای متفاوت از طول ‪ r‬بین رئوس ‪ i‬و ‪ j‬برابر است با‬
‫درایه ‪ ij‬ام در ماتریس ‪Ar‬‬
‫مثال‪ :‬چند مسیر به طول ‪ ۴‬در گراف زیر وجود دارد‪ .‬جواب ‪۸‬‬
‫مسیر و دور اویلری‬
‫• دور اویلری‪ :‬دور ساده ای در گراف که شامل همه یال های‬
‫گراف باشد‪.‬‬

‫• مسیر اویلری‪ :‬مسیر ساده ای که شامل همه یال های گراف باشد‪.‬‬
‫• قضیه‪ :‬یک گراف چندگانه متصل دور اویلری دارد اگر و فقط اگر‬
‫درجه هر رأس آن زوج باشد‪.‬‬

‫• قضیه‪ :‬یک گراف چندگانه متصل مسیر اویلری دارد اگر و فقط‬
‫اگر شامل دقیقا دو رأس از درجه فرد باشد‪.‬‬
‫مسیر و دور همیلتونی‬
‫• مسیر همیلتونی‪ :‬یک مسیر ساده که از هر رأس دقیقا یک بار‬
‫عبور کند‪.‬‬

‫• دور همیلتونی‪ :‬یک دور ساده که از همه رئوس گراف میگذرد‪.‬‬


‫(از هر رأس دقیقا یکبار به جز رأس ابتدا)‬
‫• قضیه‪ :‬اگر ‪ G‬یک گراف ساده با ‪ n‬رأس باشد و ‪،𝑛 ≥ 3‬‬
‫بطوریکه درجه هر رأس در ‪ G‬حداقل ‪ n/2‬باشد‪ ،‬آنگاه ‪ G‬دور‬
‫همیلتونی دارد‪.‬‬

‫• قضیه‪ :‬اگر ‪ G‬یک گراف ساده با ‪ n‬رأس باشد و ‪،𝑛 ≥ 3‬‬


‫بطوریکه برای هر دو رأس غیر مجاور ‪ u‬و ‪deg 𝑢 ،v‬‬
‫𝑛 ≥ )𝑣(‪ ،+ deg‬آنگاه ‪ G‬دور همیلتونی دارد‪.‬‬
‫مسائل کوتاهترین مسیر‬
‫• مسئله ‪ :۱‬پیدا کردن مسیری با کوتاهترین طول بین دو رأس‬
‫• الگوریتم دیکسترا‬

‫• مسئله فروشنده دوره گرد‪ :‬پیدا کردن دوری با کوتاهترین طول‬


‫• یافتن دور همیلتونی با کمترین طول‬
‫الگوریتم دیکسترا‬
‫مثال‪:‬‬
‫فصل یازدهم‬
‫درخت‬
‫درخت‬
‫• درخت‪ :‬گراف همبند بدون دور (بدون جهت)‬

‫• قضیه‪ :‬یک گراف بدون جهت درخت است اگر و فقط اگر بین هر‬
‫دو رأس آن یک مسیر یکتا وجود داشته باشد‪.‬‬
‫درخت ریشه دار‬
‫• درخت ریشه دار‪ :‬درختی که رأسی به عنوان ریشه دارد و یال ها‬
‫به صورت جهتدار از ریشه دور میشوند‪.‬‬
‫• در یک درخت ریشه دار‪:‬‬
‫• اگر ‪ v‬نودی غیر از ریشه باشد‪ ،‬والد ‪ v‬نود ‪ u‬است اگر از ‪ u‬به ‪ v‬یالی‬
‫جهتدار وجود داشته باشد‪ .‬در اینصورت به نود ‪ v‬فرزند نود ‪ u‬گفته‬
‫میشود‪.‬‬

‫• رئوسی با والد یکسان‪ ،‬همزاد گفته میشوند‪.‬‬

‫• نودی که هیچ فرزندی نداشته باشد‪ ،‬برگ نامیده میشود‪ .‬نودهایی که‬
‫فرزند دارند نود داخلی نامیده میشوند‪.‬‬
‫• درخت ‪ m‬تایی (‪ :)m-ary tree‬درختی که هر نود داخلی آن‬
‫بیشتر از ‪ m‬فرزند نداشته باشد‪.‬‬

‫• درخت ‪ m‬تایی پر (‪ :)full m-ary tree‬درختی که هر نود‬


‫داخلی آن دقیقا ‪ m‬فرزند داشته باشد‪.‬‬
‫• درخت مرتب (‪ :)ordered tree‬درختی که ترتیب فرزندان هر‬
‫نود از چپ به راست مهم است‪.‬‬

‫• در درخت دودویی هر نود میتواند یک فرزند چپ و یک فرزند‬


‫راست داشته باشد‪.‬‬
‫خصوصیات درخت‬
‫• قضیه‪ :‬هر درخت با ‪ n‬رأس شامل ‪ n-1‬یال است‪.‬‬

‫• قضیه‪ :‬هر درخت ‪ m‬تایی پر با ‪ i‬رأس داخلی شامل ‪n=mi+1‬‬


‫نود است‪.‬‬
‫درخت پوشا‬
‫• فرض کنید ‪ G‬یک گراف ساده باشد‪ .‬درخت پوشای ‪ G‬زیرگرافی‬
‫از ‪ G‬است که درخت است و شامل همه رئوس ‪ G‬است‪.‬‬
‫درخت پوشای مینیمم‬
‫• درخت پوشای مینیمم در یک گراف وزندار‪ ،‬درخت پوشایی است‬
‫که مجموع وزن یال هایش کمترین باشد‪.‬‬
‫• الگوریتم پرایم‬

‫• الگوریتم کروسکال‬
‫الگوریتم پرایم‬
‫• از یک نود منتخب شروع و در هر زمان یالی با کمترین وزن که‬
‫از یک رأس منتخب خارج میشود را انتخاب میکند به شرطی که‬
‫دور ایجاد نشود و رأس انتهایی آن یال به مجموعه رئوس منتخب‬
‫اضافه میشود‪..‬‬
‫الگوریتم پرایم‬
‫مثال‪:‬‬
‫الگوریتم کروسکال‬
‫• در هر زمان یالی با کمترین وزن که دور ایجاد نمیکند را انتخاب‬
‫میکند‪.‬‬
‫الگوریتم کروسکال‬
‫مثال‪:‬‬

You might also like