1 / 62

گراف

جلسه نهم. به نام خداوند هستی بخش یگانه. گراف. Graphs. A.M. Safaei. جلسه نهم. گراف. تعریف گراف عبارتست از مجموعه ناتهی از رئوس V ( Vertex ) و مجموعه ای از یال های E ( Edge ) که می توان هر عنصر آن را با زوج مرتب یا نامرتب ( Vi, Vj ) نمایش داد.

titus
Download Presentation

گراف

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. جلسه نهم به نام خداوند هستی بخش یگانه گراف Graphs A.M. Safaei

  2. جلسه نهم گراف • تعریف گراف • عبارتست از مجموعه ناتهی از رئوس V (Vertex) و مجموعه ای از یال های E (Edge) که می توان هر عنصر آن را با زوج مرتب یا نامرتب (Vi, Vj) نمایش داد. • بعبارتی هر گراف G شامل دو مجموعه V و E است : • V : مجموعه محدود و غیر تهی از رئوس است. • E : مجموعه ای محدود و احتمالا تهی از لبه ها می باشد. • E (G) , V(G) مجموعه رئوس و لبه های گراف G را نمایش می دهد و برای نمایش گراف G=(V, E) • اگر گراف جهت دار باشد یال را با زوج مرتب < vi,vj> نشان می دهد که Vi مبدا یال و Vj مقصد یال است و برای نمایش آن از فلش هایی که ابتدا را به انتها وصل می کند، در صورتی که گرافت جهت دار نباشد یال را با زوج نامرتب (vi, vj) نشان می دهد و vi, vj دو راس یال می باشند و جهت نمایش ان از خطول و منحنی استفاده می شود.

  3. جلسه نهم گراف • گراف 0 0 0 1 2 1 2 1 3 3 6 5 4 2 G2 G1 G3 • V (G1) ={ 0,1,2,3}, E (G1) = {(0,1), (0,2),(0,3), (1,2),(1,3),(3,2)} • V(G3) = {0,1,2}, E(G3)={<0,1>,<1,2>,<1,0>}

  4. جلسه نهم گراف • اصطلاحات گراف • گراف پوچ : گرافی است که مجموعه یال های آن تهی باشد. • گره های مجاور : گره X مجاور گره Y است اگر بین آنها یک یال وجود داشته باشد. • رأس منفرد (منزوی): رأسی که هیج راس مجاوری نداشته باشد. • طوقه ( لبه بازخوردی – خود حلقه ای – Loop ) : یالی که ابتدا و انتهای آن یکی باشد. • یال های موازی : یال هایی است که رئوس یکسان را بهم وصل می کند. • گراف چند گانه (Multi Graph) : گرافی است که در آن داشتن یال های چند گانه (موازی )و طوقه مجاز است.

  5. جلسه نهم گراف • اصطلاحات گراف • گراف ساده (Simple Graph) : گرافی است که در آن یال های چند گانه و طوقه مجاز نباشد. • گراف برچسب دار: گرافی است که اطلاعاتی به یال های آن نسبت داده شده است. • گراف وزن دار: گرافی است که به هر یال آن یک مقدار عددی غیر منفی، که وزن یال نامیده می شود نسبت داده شده است. • درجه گره : برابر است با مجموع تعداد یال های متصل به یک گره. • درجه گراف: برابر است با بزرگترین درجه گره های گراف. • درجه ورودی – خروجی یک گره: در یک گراف جهت دار، تعداد یال های خارج شده از یک راس را درجه خروجی و تعداد یال های وارد شده به یک راس را درجه ورودی آن راس گوییم. A 10 9 B 8 C

  6. جلسه نهم گراف • اصطلاحات گراف • گراف کامل: گرافی است که بین هر دو راس آن یک یال وجود دارد. بعبارت دیگر گرافی است که حداکثر تعداد یالها را دارد. • نکته : حداکثر تعداد یال های یک گراف بدون جهت برابر است با : n (n-1)/2 • نکته : درجه یک گراف کامل با n راس برابر است با : n-1 • نکته : حداکثر تعداد یال ها در یک گراف جهت دار با n راس برابر است با n(n-1) 4(3)/2 =5 یال (edges) 0 0 1 2 1 2 3 3 ناقص کامل

  7. جلسه نهم گراف • اصطلاحات گراف • مکمل گراف : مکمل گراف G = (V,E) برابر با گراف G’ = (V, U-E) می باشد که U مجموعه یال های گراف کامل است در واقع مکمل گراف، گرافی است با همان رئوس ولی با یال های متفاوت. • نکته : اجتماع یک گراف با مکمل آن یک گراف کامل بوجود می آورد و اشتراک آنها تهی است. 0 0 مکمل گراف 1 2 1 2 3 3

  8. جلسه نهم گراف • اصطلاحات گراف • زیرگراف : زیر گراف G گرافی است مانند G’ به نحوی که V (G’)  V (G) و  E(G) E(G’) باشد. • نکته : در گراف G با n راس اگر di درجه راسi ام باشد آنگاه تعداد یال ها برابر است با 0 1 1 2 0 0 3 1 2 1 2 3

  9. جلسه نهم گراف • اصطلاحات گراف • گره چاه ( راس مقصد) : گره ای که درجه خروجی صفر و درجه ورودی مثبت داشته باشد. • گره منبع ( راس منبع) : گره ای که درجه ورودی صفر و درجه خروجی مثبت داشته باشد. منبع 0 1 2 3 چاه

  10. جلسه نهم گراف • اصطلاحات گراف • مسیر : مجموعه ای از یال های پشت سر هم که دو راس را به هم وصل می کند. راس انتهای یک یال راس ابتدای یال بعدی توالی محسوب می شود. • طول مسیر : تعداد یال های موجود در مسیر است. یک مسیر بطول n دارای n+1 راس می باشد. a a b b c c e d e d a b e d c b e d c

  11. جلسه نهم گراف • اصطلاحات گراف • مسیر ساده : مسیری است که همه رئوس آن مجزا باشد به جز (احتمالا) اولی و آخری. • حلقه (Cycle): مسیر ساده ای که گره اول و آخر آن یکی باشد. a b b e c c e d a c d a

  12. جلسه نهم گراف • مثال : در گراف زیر در راس v1 چند حلقه وجود دارد؟ v1 v2 v3 v4 v1, v1 v2 v3 v1, v1 v2 v4 v1, v1 v2 v1 v1 v2 v4 v3

  13. جلسه نهم گراف • گراف همبند ( متصل) • یک گراف بدون جهت را همبند گوییم اگر برای هر زوج از رئوس vi و vj آن یک مسیر وجود داشته باشد ( هر دو گره دلخواه گراف از هم دسترس پذیر باشند) بعبارتی هر دو راس توسط تعدادی مسیر بهم متصل باشند. گراف متصل گراف بالا متصل نیست ولی دارای مولفه همبند بودن را دارا می باشند

  14. جلسه نهم گراف • گراف جهت دار همبند قوی • گراف جهت داری است که برای هر زوج از رئوس U و V هم یک مسیر از U به V و هم یک مسیر از V به U داشته باشد. • گراف جهت دار همبند ضعیف ( همبند یک طرفه ) : گراف جهت داری است که برای هر زوج از رئوس U و V یک مسیر از U به Vیا از V به U داشته باشد. v1 v2 v2 v3 v1 همبند ضعیف v4 v3 همبند قوی

  15. جلسه نهم گراف • پیاده سازی گراف:: ماتریس مجاورتی ( همجواری) • هرگاه G یک گراف با M رأس و N یال باشد ماتریس را ماتریس مجاورت گوییم اگر: If (vi, vj)  E(g) اگر Vi و Vj توسط یک یال متصل باشند If (vi, vj) E(g) اگر بین Vi و Vj یالی نباشد V2 V1 V3 V4 V5 عناصر قطر اصلی همواره صفر هستند

  16. جلسه نهم گراف • خواص ماتریس مجاورتی • ماتریس مجاورتی یک گراف بدون جهت حتما متقارن است، لذا می توان برای آن از ماتریس بالا یا پائین مثلثی استفاده نمود.ماتریس مجاورتی گراف جهت دار لزوما متقارن نمی باشد. • تعداد ”1“ ها در ماتریس مجاورتی گراف بدون جهت دو برابر تعداد یال ها و در گراف جهت دار برابر تعداد یال ها است. • از مزایای ماتریس مجاورتی، سرعت دسترسی به مجاور بودن یا نبودن دو گره است که برابراست با O(1)

  17. جلسه نهم گراف • خواص ماتریس مجاورتی • درجه ورودی وخروجی راس در گراف مجاورتی جهت دار و بدون جهت : • درجه راس i در گراف بدون جهت = • درجه خروجی راس i در گراف جهت دار = • درجه ورودی راس j در گراف جهت دار = یکی از معایب روش ماتریس مجاورتی، مشکل حذف و اضافه گره هاست زیرا در این صورت اندازه ماتریس باید تغییر کند و دیگری این که اگر تعداد یال ها کم باشد آنگاه ماتریس خلوت بوجود می آید و فضای زیادی هدر می رود. درجه خروجی هر نود برابر جمع ردیفها درجه ورودی هر نود برابر جمع ستونها

  18. جلسه نهم گراف • قضیه • جمله (i,j)ام ماتریس ،آنگاه برابر مجموع مسیرهای به طول p بین رئوس Vi و Vj میباشد. A = X Y W یعنی از x به z دو مسیر به طول 2 وجود دارد (xwz, xyz) Z

  19. جلسه نهم گراف • پیاده سازی گراف:: با استفاده از لیست همجواری (لیست مجاورت) • به ازای هر نود یک لیست پیوندی داریم که نشان دهنده نودهایی است که با این نود همسایه هستند. 0 0 1 2 1 3 0 1 2 2 0 3 3 1 2 3 ترتیب نودها در لیست پیوندی مهم نیست

  20. جلسه نهم گراف • خواص لیست همجواری (لیست مجاورت) • در یک گراف بدون جهت با n راس و e یال نیاز به آرایه ای به طول n و 2e گره لیست پیوندی است. • در یک گراف جهت دار با n راس و e یال نیاز به آرایه ای به طول n و e گره لیست پیوندی است. • اگر تعداد رئوس گراف n باشد تعداد کل یال ها در زمان O(n+e) تعیین می شود. • درجه هر راس دریک گراف بدون جهت را می توان با شمارش تعداد گره های آن در لیست مجاورتی تعیین نمود.

  21. جلسه نهم گراف • فقط نودهای در لیست پیوندی هر نود قرار دارند که می توان از این نود به آنها رسید و با نود همسایه هستند. • محاسبه تعداد یالها و درجه ی خروجی هر نود راحت است. • محاسبه درجه ی ورودی نودها راحت نیست. • لیست مجاورت برای گراف های جهت دار 0 0 2 1 2 1 3 0 2 3 3 2 ترتیب لیست پیوندی اهمیتی ندارد

  22. جلسه نهم گراف • برای محاسبه درجه ی ورودی هر نود مجبوریم لیست مجاورت را به طور معکوس بسازیم. • لیست مجاورت برای گراف های جهت دار 0 0 1 1 2 1 2 0 3 3 3 1

  23. جلسه نهم گراف • عملیات بر روی گرافها • پیمایش گراف • به منظور ملاقات کلیه گره های یک گراف همبند ( فقط یکبار) به دو روش سطحی و عمقی انجام می شود. • روش سطحی با استفاده از یک صف و روش عمقی با استفاده از پشته انجام می شود.

  24. جلسه نهم گراف • عملیات بر روی گرافها • جستجوی سطحی ( ردیفی – عرضی – BFS (Breadth first search) جستجوی اول پهنا ) • در این روش با شروع از یک گره ابتدا خود آن گره و سپس کلیه گره های مجاور که تابه حال ملاقات نشده اند از کوچک به بزرگ ( از چپ به راست) ملاقات شده و در یک صف قرار میگیرند. گره ای از صف حذف شده و پیمایش با گره مجاور آن ادامه می یابد. • جستجوی عمقی ( ردیفی – عرضی – DFS (Depth First Search)) • در این روش با شروع از یک گره ابتدا آن گره ملاقات شده و در استک قرار میگیرد سپس کوچکترین ( سمت چپ ترین) گره مجاور آن نیز ملاقات شده در استک قرار میگیرد این عمل به همین ترتیب ادامه می یابد. چنانچه در مرحله ای هیچ گره ملاقات نشده ای برای یک گره موجود نبود به یک مرحله قبل بازگشته و عملیات را تکرار می کنیم تا استک خالی شود. • مرتبه اجرائی BFS و DFS برای یک گراف با n راس و e یال با استفاده از لیست مجاورتی : O(e) و ماتریس مجاورتی O(n2) است.

  25. جلسه نهم گراف • عملیات بر روی گرافها • پیمایش سطحی BFS و عمقی DFS گراف روبه رو را بدست آورید. a b c d e f g h

  26. جلسه نهم گراف • پیمایش BFS • ابتدا a را ملاقات (چاپ) نموده و گره های مجاورش B وC را در صف قرار می دهیم حالb را از صف حذف نموده و چاپ نموده و گره های مجاورش dو e را به صف اضافه می کنیم حال گره بعدی یعنی c را حذف نموده و گره های مجاورش f و g را در صفحه قار ر می دهیم و سپس گره بعدی را از صف حذف نموده ( گره d را چاپ می کنیم ) و گره مجاورش یعنی h را به صف اضافه می کنیم. a a 1 2 3 b c b c 4 6 7 5 d e f g d e f g 8 h h BFS = abcdefgh

  27. جلسه نهم گراف • پیمایش DFS • گره a را ملاقات کرده و سپس کوچکترین گره مجاورش یعنی b را در استک قرار می دهیم. حال B را از استک pop نموده و ملاقات نموده و سپس گره مجاورش یعنی d را به استک push می کنیم و به همین صورت ادامه می دهیم تا زمانی که استک خالی شده و همه گره ها ملاقات شوند. اگر در مرحله هیچ گره ملاقات نشده ای برای یک گره پیدا نشده به یک مرحله قبل ( عنصر بعدی استک) بر میگردیم. a a 1 2 7 b c b c 6 3 5 d e f g 8 d e f g h h DFS = abdhefcg 4

  28. جلسه نهم گراف • درخت پوشا • درخت پوشا گراف G، زیر گراف همبندی است که حاوی تمامی راس های گراف G بوده و فاقد چرخه یا دور باشد. درخت پوشای گرافی با n راس دارای n-1 یال می باشد. 1 2 1 2 1 2 3 4 3 4 3 4 5 5 5 Gگراف G زیر درخت های پوشای گراف

  29. جلسه نهم گراف • تمرین • از یک گراف کامل با 10 راس چند یال باید حذف شود تا درخت پوشا حاصل شود؟ • n(n-1)/2 = 10 x 9/2=45 = تعداد یال های گراف کامل با 10 راس • 10-1=9 = تعداد یال های درخت با 10 راس • 45-9= 36 تعداد یال هایی که باید حذف شود تا درخت پوشا حاصل شود.

  30. جلسه نهم گراف • درخت پوشای کمینه ( با حداقل هزینه) • درخت پوشایی که کمترین مجموع وزن یال را داشته باشد درخت پوشای کمینه ( مینیمم ) گویند. • الگوریتم ایجاد درخت پوشای کمینه • الگوریتم راشال (کراسکال) • الگوریتم پریم

  31. جلسه نهم گراف • الگوریتم راشال (کراسکال) • یال ها را به ترتیب صعودی از کمترین وزن به بیشترین وزن مرتب کنید. • یال های مرتب شده را به ترتیب به درخت اضافه کنید. اگر با افزودن این یال چرخه ایجاد شود از آن صرفه نظر کنید و یال بعدی را بررسی کنید. • مرحله 2 را انقدر تکرار کنید تا به انتهای لیست یال های مرتب شده برسید. مثال

  32. جلسه نهم گراف • الگوریتم پریم • از یک گره دلخواه شروع می کنیم سپس از میان گره های مجاور آن نزیکترین گره را به آن گره انتخاب می کنیم. • یال مربوط به آن دو را رسم می کنیم و نزدیکترین گره را به یکی از دو گره فوق پیدا نموده و رسم می کنیم. • به همین ترتیب ادامه داده تا یک درخت پوشا حاصل شود. مثال

More Related