ppt - دانشگاه شهید بهشتی
Download
Report
Transcript ppt - دانشگاه شهید بهشتی
درخت ها و الگوریتم های DFSو BFS
درس :نظریه الگوریتمی گراف
گروه علوم کامپیوتر دانشگاه شهید بهشتی
تعریفها و نتایج اولیه
درخت یک گراف همبند بدون دور است.
جنگل یک گراف بدون دور است .پس هر مولفه همبندی جنگل ،درخت است.
هر راس درجه 1در درخت را یک برگ مینامیم.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
2
تعریفها و نتایج اولیه
یک درخت فراگیر از گراف Gیک زیردرخت فراگیر از آن است که درخت باشد.
درخت با یک راس را درخت بدیهی مینامیم.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
3
تعریفها و نتایج اولیه
قضیه :درخت Tدارای nراس و n-1یال است.
قضیه :بین هر دو راس از درخت دقیقا یک مسیر وجود دارد.
نتیجه :هر یال درخت یک پل است.
قضیه :هر درخت غیر بدیهی دارای حداقل 2برگ است.
قضیه :اگر بزرگترین درجه راس ی درخت Tبرابر با باشد ،آنگاه Tدارای حداقل
برگ است.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
4
درخت ریشهدار
درخت جهتدار Tگراف جهتداری است که گراف زمینه آن درخت باشد.
ی است که راس ی مانند rبه نام ریشه داشته باشد
درخت ریشهدار Tدرخت جهتدار
ی وجود داشته باشد.
مسیر جهتدار
دیگر
هر راس
به طوری که از ریشه به
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
5
درخت ریشهدار
در
دار باشد ،معمو ل است Tطوری رسم شود که ریشه
اگر Tیک درخت ریشه
در سطح یک و به همین صورت
باالترین سطح (سطح صفر) ،راسهای مجاو ر آن
در این صورت جهت
در سطح i+1قر ار گیرند .
هر سطح i
راسهای مجاور راسهای
در نمایش حذف میشود.
کمان ها
در درخت را ارتفاع درخت مینامیم.
بزرگترین سطح
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
6
درخت ریشهدار
اگر و تنها اگر Tشامل راس ی مانند rباشد
دار است
قضیه :درخت جهتدار Tریشه
هر راس دیگر uداشته باشیم id(u) = 1
به طوری که id(r) = 0و برای
ایده اثبات :اگر Tدرخت ریشه دار باشد ،حکم به وضوح برقرار است.
جهتدار با شرط داده شده باشد .یک راس دلخواه uانتخاب کنید.
فرض کنید Tدرخت
در
،id(u) = 1پس کمان ورودی ) (v,uوجود دارد .اگر v = rمساله حل شده است .
جهتدار از rبه u
غیر این صورت vهم یک کمان ورودی دارد .با ادامه این روند مسیری
تعیین میشود.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
7
درخت ریشهدار
در درخت ریشه دار ،T
اگر کمان ) (w,vوجود داشته باشد v ،فرزند wو wپدر vاست.
اگر مسیر جهتداری از uبه vوجود داشته باشد u ،جد vو
Vنوه uاست.
زیردرخت ریشهداری که از راس uو همه نوادگان
آن تشکیل میشود ،زیردرخت ماکسیمال Tبا ریشه
uنام دارد و با نماد ) T( uنشان داده میشود.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
8
درخت ریشهدار
هر راس آن حداکثر mفرزند داشته
درخت ریشه دار Tرا -mتایی مینامیم هرگاه
باشد.
صفر فرزند داشته باشد.
هر راس mیا
درخت -mتایی را تام مینامیم هرگاه
در سطح hیا h-1قر ار
درخت -mتایی را متعادل مینامیم هرگاه همه برگهای آن
داشته باشند.
اگر m=2باشد درخت را دودویی مینامیم.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
9
درخت ریشهدار
درخت دودویی متعادل
درخت دودویی
درخت دودویی تام
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
10
درخت ریشهدار
قضیه :هر درخت -mتایی تام با iراس داخلی دارای mi+1راس است.
نتیجه :هر درخت دودویی با iراس داخلی دارای i+1برگ است.
قضیه :اگر Tیک درخت دودویی با ارتفاع hو pراس باشد ،آنگاه
h 1 p 2h 1 1
ایده اثبات :کران پایین برای مسیر جهتدار به طول p-1برقرار است.
در هر درخت دودویی تعداد راسها در هر سطح حداکثر دو برابر تعداد راسها در سطح قبل
است.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
11
الگوریتم DFS
ورودی :گراف G
خروجی :جنگل فراگیر ( Tبرای حفظ اطالعات پدر و فرزندی در جنگل از متغیر pred
استفاده میکنیم).
به هر راس uاندیس ) dfi(uنسبت داده میشود
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
12
الگوریتم DFS
-1به ازای هر راس uقرار دهید dfi(u)= 0و . pred(u) = 0
)}O(max{n,m
-2قرار دهید . k = 1
-3یک راس rبا dfi(r) = 0انتخاب کنید .قرار دهید dfi(u) = k ،u = rو k = k+1
-4تا زمانی که u ≠ rمراحل زیر را تکرار کنید.
اگر همه راسهای مجاور uمشاهده شدهاند ،قرار دهید ).u= pred(u
در غیر این صورت ،فرض کنید vراس مجاور uو مشاهده نشده باشد ،قرار دهید
dfi(v) = k ،pred(v) = uو u = vو k = k+1
-5اگر برای هر راس uداریم dfi(u) ≠ 0الگوریتم تمام شده .در غیر این صورت به مرحله
3بروید.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
13
الگوریتم - DFSمثال
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
14
الگوریتم - DFSمثال
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
15
اجرای الگوریتم DFS
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
16
الگوریتم DFS
در درخت (جنگل) DFSقر ار دارند را از راس با اندیس بزرگتر (پدر) به
یالهایی که
دار به
جهتدار میکنیم .یک درخت (جنگل) ریشه
راس با اندیس کوچکتر (فرزند)
دست میآید که آن را درخت (جنگل) DFSگراف مینامیم.
جهتدار میکنیم و
در جنگل DFSقر ار ندارند را از نوه به طرف جد
یالهایی که
یالهای بازگشتی مینامیم.
نقطه پایین راس vکه با نماد ) (vنشان داده میشود ،کمترین مقدار ) dfi(uاست
حداکثر یک یال بازگشتی است ،به u
مسیر جهتداری که شامل
به طوری که vبا
متصل باشد.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
17
الگوریتم DFS
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
18
یادآوری
یک بلوک در گراف زیرگراف ماکسیمال بدون راس برش ی است.
اشتراک هر دو بلوک تنها یک راس برش ی است.
بلوکی که فقط یک راس برش ی داشته باشد ،بلوک پایانی نام دارد.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
19
الگوریتم DFSبرای تعیین راسهای برش ی
قضیه :فرض کنید Tدرخت DFSگراف Gو rریشه Tباشد .آنگاه rراس برش ی
است اگر و تنها اگر rدر Tدارای حداقل دو فرزند باشد.
ایده اثبات :فرض کنید rدارای دو فرزند uو vباشد T(u) .و ) T(vهرکدام یک بلوک از
گراف هستند.
برعکس ،اگر rراس برش ی باشد ،وقتی DFSوارد یک بلوک متصل به rمیشود ،تا زمانی
در آن بلوک باقی میماند و برای مشاهده راس
که همه راسهای بلوک را مشاهده نکرده
باز میگردد .پس rدارای د و فرزند میشود.
دیگر به r
های بلوک
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
20
الگوریتم DFSبرای تعیین راسهای برش ی
قضیه :فرض کنید Tیک درخت DFSاز گراف همبند Gو uیک راس به جز ریشه T
باشد .در این صورت u ،راس برش ی است اگر و تنها اگر uدر Tفرزندی مانند vداشته
) (v ) dfi (u
باشد به طوری که
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
21
الگوریتم DFSبرای تعیین راسهای برش ی
قضیه :فرض کنید Tیک درخت DFSاز گراف همبند Gو uیک راس به جز ریشه T
باشد .در این صورت u ،راس برش ی است اگر و تنها اگر uدر Tفرزندی مانند vداشته
) (v ) dfi (u
باشد به طوری که
ایده اثبات :فرض کنید uبرش ی باشد و برای هر فرزند vاز ،u
پس یک یال
) (v ) dfi (u
بازگشتی از راس ی از ) T(vبه یک جد uمتصل است .پس uو vدر یک بلوک قرار دارند.
بنابراین uراس برش ی نیست.
برعکس ،اگر برای یک فرزند مانند (v ) dfi (u ) ،vباشد .در این صورت فرض کنید S1
مجموعه راسهای مسیر از rبه uو S2مجموعه راسهای ) T(vباشد .هر مسیری که راس ی از
S1را به راس ی از S2متصل میکند ،از uمیگذرد .پس uراس برش ی است.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
22
الگوریتم تعیین بلوکهای گراف
ایده:
ابتدا یک درخت DFSبا شروع از راس دلخواه rبسازید و همزمان راسهای برش ی
گراف را تعیین کنید.
ی مالقات نشد ،راسهای
بار مالقات یک راس برش ی ،هیچ راس برش ی دیگر
اگر بین د و
بین د و مالقات این راس برش ی ،یک بلوک پایانی هستند .آنها را اعالم و از گراف حذف
در
کنید و این روند را ادامه دهید تا گراف باقیمانده هیچ راس برش ی نداشته باشد .
آخر را تشکیل میدهند.
این صورت همه راسهای باقیمانده ،بلوک
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
23
الگوریتم BFS
ورودی :گراف G
خروجی :یک جنگل فراگیر از گراف G
برای هر راس یکی از وضعیتهای مشاهده نشده ( ،)status=1درحال پردازش
( )status=1و پردازش شده ( )status=3وجود دارد.
معموال در پیاده سازی این الگوریتم از ساختمان داده صف استفاده میشود.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
24
الگوریتم BFS
-1برای هر راس uدر Gقرار دهید status(u) = 1و .k = 1
-2یک راس دلخواه uبا status(u)= 1انتخاب کنید ،قرار دهید u ، status(u)=2
را در صف وارد کنید و قرار دهید .pred(u) = 0
-3تا زمانی که صف خالی نشده،
-1-3یک راس vاز ابتدای صف بردارید .همه همسایگان vکه وضعیت 1دارند ،به وضعیت
2ببرید و در صف وارد کنید.
-2-3قرار دهید pred(v) =u ، bfi(v) = k ،status(v) = 3و .u=vو .k = k+1
-4اگر راس ی در گراف با وضعیت 1باقی مانده است ،به مرحله 2بروید .در غیر این
صورت الگوریتم تمام شده است.
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
25
الگوریتم - BFSمثال
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
26
اجرای الگوریتم BFS
نظریه الگوریتمی گراف -گروه علوم کامپیوتر دانشگاه شهید بهشتی
27