1 / 27

תרגול 3 - DFS

תרגול 3 - DFS. קודקודים מנתקים. הגדרה: קודקוד בגרף לא מכוון נקרא קודקוד מנתק אם הסרתו (יחד עם הקשתות הסמוכות אליו) מגדילה את מספר רכיבי הקשירות של הגרף. שאלה 1 – מציאת קודקודים מנתקים. תרגיל: נתון גרף לא מכוון תארו אלג ' יעיל למציאת כל הקודקודים המנתקים שלו.

Download Presentation

תרגול 3 - DFS

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. תרגול 3 - DFS

  2. קודקודים מנתקים • הגדרה: קודקוד בגרף לא מכוון נקרא קודקוד מנתק אם הסרתו (יחד עם הקשתות הסמוכות אליו) מגדילה את מספר רכיבי הקשירות של הגרף.

  3. שאלה 1 – מציאת קודקודים מנתקים • תרגיל: נתון גרף לא מכוון תארו אלג' יעיל למציאת כל הקודקודים המנתקים שלו.

  4. שאלה 1 – פתרון • נריץ DFS על הגרף (ונשמור את זמן הגילוי של כל קודקוד). a[1] b a d[4] b[2] c d c[3] e e[5] g f[6] f g[7]

  5. שאלה 1 – המשך פתרון • מה אנחנו יודעים בינתיים? • השורש הינו קודקוד מנתק אם"ם יש לו לפחות 2 ילדים. (לא יתכנו קשתות בין תתי העצים שלו.) • עלה לא יכול להיות קודקוד מנתק. a[1] d[4] b[2] c[3] e[5] f[6] g[7]

  6. שאלה 1 – המשך פתרון • תוך כדי הרצת ה-DFS נחשב לכל קודקוד (נבצע את החישוב בזמן הסיום של הקודקוד.)

  7. דוגמת הרצה a[1] [1] b a d[4] [4] b[2] [1] c d c[3] [1] e [4] e[5] g [4] f[6] f [7] g[7]

  8. אילו קודקודים מנתקים? • טענה: קודקוד שאינו שורש או עלה בעץ הינו קודקוד מנתק אמ"מ קיים בן של אשר עבורו מתקיים a[1] [1] b a d[4] [4] b[2] [1] c d c[3] [1] e [4] e[5] g [4] f[6] f [7] g[7]

  9. אילו קודקודים מנתקים? • טענה: קודקוד שאינו שורש או עלה בעץ הינו קודקוד מנתק אמ"מ קיים בן של אשר עבורו מתקיים • הוכחה: נניח ש קודקוד מנתק שאינו שורש או עלה אז כשנריץ DFS, לא תהיה קשת אחורית מצאצא של לאב קדמון של . ערכי ה- של כל צאצאיו יהיו גדולים מ- או שווים ל- ולכן מהגדרת נקבל את הטענה. • נניח שקיים בן של אשר עבורו מתקיים • אז אין קשת אחורית מאף צאצא של לקודקוד מעל בעץ ולכן קודקוד מנתק.

  10. אילו קודקודים מנתקים? • שאלה: עבור אילו קודקודים מתקיים ? a[1] [1] d[4] [4] b[2] [1] c[3] [1] [4] e[5] [4] f[6] [7] g[7]

  11. קבוצת מוצא • הגדרה: קבוצת קודקודים בגרף מכוון נקראת קבוצת מוצא אם יש ממנה מסלול לכל קודקוד בגרף. ז"א

  12. שאלה 2 – קודקודי מוצא • תרגיל: נתון גרף מכוון תארו אלג' למציאת קבוצת מוצא מינימאלית.

  13. שאלה 2 – פתרון • תאור האלגוריתם: • נחשב רק"חים. • נבחר קודקוד אחד מכל רק"ח שאין אף קשת שנכנסת אליו (להלן, רק"ח כזה יכונה מקור).

  14. פתרון יותר מפורט – גרף העל • הגדרה: גרף העל • בהנתן גרף מכוון , גרף העל של מכיל קודקוד עבור כל רק"ח של . עבור כל זוג רק"חים שיש ביניהם לפחות קשת אחת, תהיה קשת (יחידה) בין הקודקודים המייצגים את הרק"חים הנ"ל.

  15. פתרון יותר מפורט • נבנה את גרף העל • נחשב רק"חים (כמו שנלמד בשיעור – DFS, הפיכת קשתות ושוב DFS).

  16. פתרון יותר מפורט • נבנה את גרף העל • נחשב רק"חים (כמו שנלמד בשיעור – DFS, הפיכת קשתות ושוב DFS). c a d b

  17. פתרון יותר מפורט • קיבלנו את גרף העל • גרף העל הוא אציקלי. • לכן, ניתן למיין אותו טופולוגית. c a c a d b d b

  18. פתרון יותר מפורט • נמצא את קבוצת המקורות : • נעבור על קודקודי הגרף לפי הסדר הטופולוגי שלהם, ועבור כל קודקוד שנעבור בו, נסמן את הקודקודים שיש ממנו קשת אליהם. • כאשר נגיע לקודקוד שאינו מסומן, נכניס את אחד מקודקודי הרק"ח שהוא מייצג ל- . c d b a e f

  19. הוכחת נכונות • נוכיח שמתקיים • אם נמצא ברק"ח של מקור, מההגדרה קיים • אחרת, קיים רק"ח אחר אשר יוצאת ממנו קשת אל הרק"ח של . נחצה את הקשת הזו אל . • נמשיך לחצות רק"חים באותו אופן, עד אשר נגיע למקור. מהגדרת האלג', מקור זה מכיל קודקוד ומתקיים c d b a e f

  20. הוכחת נכונות • נוכיח שהקבוצה שבחרנו מינימאלית. • נסמן את מספר הרק"חים של מקורות בגרף ב-. ניקח קבוצה של קודקודים – אחד מכל מקור. • לא קיים קודקוד בגרף שממנו ניתן להגיע לשני קודקודים של לכן, • היות והקבוצה שמצאנו גם היא בגודל , היא מינימאלית. c d b a e f

  21. סיבוכיות • חישוב רק"חים – • מציאת מקורות – • סה"כ זמן ריצה של האלג' –

  22. שאלה 3 – תחנות במסלול • תרגיל: נתונים גרף מכוון וקבוצה תארו אלג' אשר בודק האם קיים בגרף מסלול העובר דרך כל קודקודי המסלול יכול לעבור בקודקודים נוספים ואף לחצות את אותה קשת מספר פעמים.

  23. שאלה 3 – פתרון • האלגוריתם: • נמצא את הרק"חים של הגרף. • נחפש בגרף העל מסלול אשר עובר דרך כל הרק"חים המכילים לפחות איבר אחד מ- (להלן נכנה אותם בתור הרק"חים הרלוונטיים).

  24. המשך פתרון • ניצור את גרף העל ונמיין טופולוגית: d e c a f d b g e c a f f b a e d c g g b

  25. המשך פתרון • נראה כיצד לחפש מסלול שעובר דרך כל הרק"חים הרלוונטיים: • נטייל על גרף העל לפי הסדר הטופולוגי. • בכל פעם שנגיע לאיבר המייצג רק"ח רלוונטי, נבדוק האם קיים מסלול ממנו אל הרק"ח הרלוונטי הבא (בסדר הטופולוגי). • חיפוש מסלול מקודקוד אל קודקוד יתבצע באמצעות • BFS מ- על תת הגרף בין לבין f a e d c g b

  26. נכונות האלגוריתם • הוכחה: • אם יש מסלול שעובר דרך כל קודקודי אז האלגוריתם ימצא מסלול כזה, כי מספיק למצוא מסלול שעובר דרך כל רק"ח. • אם האלגוריתם מוצא מסלול מתאים, נבחר מסלול מתאים בגרף המקורי, וכיוון שניתן להגיע מכל קודקוד לכל קודקוד אחר ברק"ח, ניתן להרחיב אותו למסלול מתאים שעובר דרך כל קודקודי . • שימו לב שב- השתמשנו בעובדה שניתן לחזור על קשתות.

  27. סיבוכיות • מציאת רק"חים + מיון טופולוגי – • מציאת רכיבי הקשירות הרלוונטיים: • ניתן לבצע תוך כדי מציאת הרק"חים – • מציאת מסלול בין הרק"חים הרלוונטיים: • כל קודקוד משתתף לכל היותר בשתי ריצות BFS. • כל קשת משתתפת לכל היותר בריצת BFS אחת. • סך זמן הריצה של כל פעולות ה-BFS –

More Related