slide1
Download
Skip this Video
Download Presentation
אלגוריתמים נבחרים בתורת הגרפים

Loading in 2 Seconds...

play fullscreen
1 / 20

אלגוריתמים נבחרים בתורת הגרפים - PowerPoint PPT Presentation


  • 135 Views
  • Uploaded on

אלגוריתמים נבחרים בתורת הגרפים. חיפוש לעומק Depth First search. חיפוש לעומק Depth First Search. המטרה: פתרון מבוכים ובעיות נוספות סריקת גרפים סופיים לא-מכוונים נתון גרף סופי G(V, E) . נתחיל באחד מקודקודיו ונרצה ללכת על הצלעות, מקודקוד לקודקוד, לבקר בכל הקודקודים ולעצור.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' אלגוריתמים נבחרים בתורת הגרפים' - august


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

אלגוריתמים נבחרים בתורת הגרפים

חיפוש לעומק

Depth First search

depth first search
חיפוש לעומק Depth First Search
  • המטרה:
    • פתרון מבוכים ובעיות נוספות
    • סריקת גרפים סופיים לא-מכוונים
      • נתון גרף סופי G(V, E). נתחיל באחד מקודקודיו ונרצה ללכת על הצלעות, מקודקוד לקודקוד, לבקר בכל הקודקודים ולעצור.
      • לא נרשה תכנון מראש (על-ידי למידת הגרף). בכל צעד מקבלים החלטה לוקלית, מבנה הגרף נלמד תוך כדי סריקתו.
      • לשם כך נשאיר סימנים תוך כדי הליכה כדי לזהות מקום שבקרנו בו.
depth first search1
חיפוש לעומק Depth First Search
  • סריקת גרפים סופיים לא-מכוונים
    • מעברים:חיבור של קשת לקודקוד.
    • בייצוג ע"י רשימת פגיעות: מעבר הוא הופעה של קשת ברשימת הפגיעות.
    • נשתמש בשני סימונים:
      • F – המעבר הראשון ששמש כניסה לקודקוד,
      • E – עבור כל מעבר אחר שבו עזבנו את הקודקוד.
    • סימון מעברים אינו משתנה במהלך האלגוריתם.
depth first search2
חיפוש לעומק Depth First Search
  • האלגוריתם של Tremax
    • s צומת ההתחלה. נרצה להגיע חזרה ל- s אחרי שכל צמתי הגרף נסרקו.
    • באלגוריתם:
      • אף צלע לא נסרקת פעמיים באותו כיוון.
      • בסיום האלגוריתם: כל צלע נסרקת בדיוק פעם אחת בכל כיוון.
      • האלגוריתם עוצר תמיד בצומת ההתחלה.
    • סימון לקצוות הקשתות:
      • צד הכניסה לקודקוד מסומן ב-F-אם הצומת חדש, ז"א נכנסנו לצומת בפעם הראשונה דרך מעבר זה) או ב- E- אם הצומת כבר בוקרה קודם (מסמנים ב- E ומיד חוזרים עליה בחזרה).
      • ביציאה: קצה הקשת מסומן ב- E.
tre maux
האלגוריתם של Tre`maux

1. v <- s(v הוא הקודקוד בו נמצאים כרגע).

2. אם אין אף מעבר לא מסומן ב- v(כלומר, כל המעברים מסומנים), לך ל- 4.

3. בחר מעבר לא מסומן, סמן אותו ב- E ועבור על הקשת לקצה האחר שלה u.

אם ל- u יש מעבר מסומן כלשהו (כלומר, הוא אינו קודקוד חדש) סמן את המעבר אליו הגעת זה עתה ל- u ב- E, עבור בחזרה ל- v וחזור לצעד 2.

אם ל- u אין מעבר מסומן (כלומר, u הוא קודקוד חדש), סמן את המעבר שדרכו נכנסת ל- u ב- F, v<-u וחזור לצעד 2.

4. אם אין מעבר מסומן ב- F, עצור (אנו בחזרה ב- s וסריקת הגרף הסתיימה).

5. השתמש במעבר שסומן ב- F, עבור על הקשת לקצה השני שלה u הנמצא בקצה השני של צלע זו, v<-u וחזור לצעד 2.

tre maux1
האלגוריתם של Tre`maux

למה 1: באלגוריתם של Tre`maux אף צלע אינה נסרקת פעמים באותו כיוון.

מסקנה: האלגוריתם עוצר תמיד.

מסקנה: האלגוריתם עוצר תמיד בנקודת ההתחלה (כי לשאר הקודקודים יש מעבר שסומן ב- F).

למה 2: בסיום האלגוריתם של Tre`maux כל צלע נסרקת בדיוק פעם אחת בכל כיוון.

hopcroft and tarjan tre maux
Hopcroft and Tarjan :ויאריציה על האלגוריתם של Tre`maux

כמו האלגוריתם של Tre`maux עם שינוי בסימונים.

השינויים:

  • כל קודקוד מקבל סימון מ- 1 עד |V|, עפ"י סדר הביקורים (s מקבל 1 וכו\').
  • במקום לסמן מעברים מסמנים קשתות כ"משומשות", ובמקום הסימון F (עבור המעבר שדרכו נכנסנו לקודקוד בפעם הראשונה) זוכרים את הקודקוד שממנו הגענו אליו לראשונה.
hopcroft and tarjan tre maux1
Hopcroft and Tarjan :ויאריציה על האלגוריתם של Tre`maux

1. סמן את כל הקשתות כ"חדשות". לכל קודקוד v  V: k(v) ← 0.

i ← 0, v ← s

2. i ← i+1, ik(v) ←

3. אם ל-v אין אף צלע חדשה הפוגעת בו, לך לצעד 5.

4. בחר בצלע חדשה כלשהי הנוגעת ב- v: e=(v, u).

סמן אותה כ"משומשת". אם k(u)≠0(ז"א בקרנו כבר ב- u) לך לצעד 3.

אחרת k(v)=0), v קודקוד שעדיין לא בקרנו בו)f(u)=v(סימון ה"אבא" של u), v ← u וחזור לצעד 2.

5. אם k(v)=1, עצור.

6. ← f(v)v ולך לצעד 3.

depth first search3
סיבוכיות חיפוש לעומק Depth First Search

1. סמן את כל הקשתות כ"חדשות". לכל קודקוד v  V , k(v) ← 0. O(|E|)

i ← 0, v ← s

2. i ← i+1, k(v) ← IO(1)

צעדים 3 ו- 4: O(|E|)בכל האיטרציות

3. אם ל- v אין אף צלע חדשה הפוגעת בו, לך לצעד 5.

4. בחר בצלע חדשה כלשהי הנוגעת ב- v: e=(v, u). סמן אותה כ"משומשת". אם k(u)≠0 (ז"א בקרנו בו כבר) לך לצעד 3.

אחרת k(v)=0) קודקוד שעדיין לא בקרנו בו), f(u)=v (סימון "אבא" של u), v ← u וחזור לצעד 2.

5. אם k(v)=1, עצור. O(1)

6. v ← f(v) ולך לצעד 3. O(1) המעבר ל- 3 מתבצע O(|V|)

בגרף קשיר:O(|E|) + O(|V|) = O(|E|)

slide10
בניית עץ ה- DFS

תיאור סריקת קודקודי הגרף במהלך DFS.

depth first search4
פתרון בעיות עם חיפוש לעומק Depth First Search
  • סדרת פיבונצ\'י (סדר חישוב הערכים)
  • שמונה המלכות:
    • פתרו את הבעייה המופיעה ב- Eight Queens Java Applet
    • חקרו את הדגמת ה- Back Tracking המופיעה באתר:

Recursion And Back Tracking An Example: The Eight Queens Problem

    • בנספח להרצאה מופיע חומר נוסף על בעיית שמונה המלכות
  • שימוש ב- DFS לפתרון מבוכים
depth first search5
פתרון בעיות עם חיפוש לעומק Depth First Search

Resource: Base, S. and Van Gelder, A. (2000). Computer Algorithms, Addison-Wesley.

slide13

בעיית שמונה המלכות

את חוקיותם של כמה סידורים יש לבדוק?

slide14
את חוקיותם של כמה סידורים יש לבדוק?

קיימים 64 מקומות על לוח שח-מט.

מתוכם עלינו לבחור 8 מקומות ולכן מספר הסידורים האפשריים שאת חוקיותם עלינו לבדוק הוא:

slide15
את חוקיותם של כמה סידורים יש לבדוק?

ברור כי לא ניתן להציב שתי מלכות באותה עמודה.

תחת הנחה זו מספר האפשריות שיש לבדוק הוא:

slide16
את חוקיותם של כמה סידורים יש לבדוק?

בחישוב הקודם הנחנו כי לא ניתן להניח שתי מלכות באותה עמודה. להנחה זו נוסיף את העובדה שלאחר שהצבנו מלכה בשורה מסוימת, לא ניתן יהיה להציב מלכה נוספת באותה שורה.

תחת הנחה זו מספר האפשרויות שיש לבדוק הוא:

slide17
את חוקיותם של כמה סידורים יש לבדוק?

לאחר בדיקת כל האפשרויות מסתבר שקיימים 92 סידורים המהווים פתרון לבעיה.

slide18
אלגוריתם

  נעבור על עמודות לוח השח-מט אחת אחרי השניה ובכל אחת מהן ננסה לשים מלכה כך שלא תאיים על המלכות הקודמות שהוצבו כבר.

כלומר, יש לפתח אלגוריתם המציב מלכה בעמודה ה- n-ית, ולחזור על אלגוריתם זה עבור כל אחת מהעמודות.

כיצד נייצג את לוח השחמט?

slide19
כיצד נבדוק האם ניתן להציב מלכה במקום (i, j)?

נייצג את שורות לוח השח-מט ע"י מערך בגודל 8 של ערכים בוליאנים, שיאותחל בערכי true.

נייצג את האלכסונים ה"עולים" ע"י מערך בגודל 15 של ערכים בוליאנים, שיאותחל בערכי true.

נייצג את האלכסונים ה"יורדים" ע"י מערך בגודל 15 של ערכים בוליאנים, שיאותחל בערכי true.

slide20
כיצד נבדוק האם ניתן להציב מלכה במקום (i, j)?

בכל פעם שנציב מלכה במקום (i, j) נעדכן את:

מערך השורות במקום ה- iב- false;

מערך האלכסונים ה"עולים" במקום ה- i+jב- false;

מערך האלכסונים ה"יורדים" במקום ה- i-jב- false.

ad