שאלת מבחן במבני נתונים - אוניברסיטת בר-אילן 2017 - גרפים
קיומי זה רדודד שלוקו לעדודו בטיודה DFS וגם בטיודה BFS.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א2017סמסטר ב
★★★★★
גרפיםBFSDFS
חשבו על מבנה גרף בסיסי שבו אין "בחירה" במסלול ההתקדמות. למשל, גרף שבו קיים מסלול יחיד בין כל שני צמתים.
כן, קיים גרף שעבורו סריקות BFS ו-DFS, המתחילות מאותו צומת, יפיקו את אותו עץ פורש.
הדוגמה הכללית ביותר היא כל גרף שהוא עץ בעצמו. על פי הגדרה, עץ הוא גרף קשיר ללא מעגלים. לגרף כזה יש עץ פורש יחיד, והוא הגרף עצמו. לכן, כל אלגוריתם שמוצא עץ פורש (ובכלל זה סריקת BFS וסריקת DFS) חייב להחזיר את הגרף המקורי, ולכן שני האלגוריתמים יחזירו את אותו העץ.
דוגמה קונקרטית ופשוטה יותר היא גרף מסלול (path graph).
יהי גרף מסלול עם צמתים, כלומר וקשתות .
נניח שמתחילים את שתי הסריקות מהצומת .
* בסריקת BFS:
1. האלגוריתם מתחיל ב-. שכנו היחיד הוא . התור מכיל את , והקשת נוספת לעץ.
2. בשלב הבא, מוציאים את מהתור. שכנו היחיד שטרם בוקר הוא . התור מכיל את , והקשת נוספת לעץ.
3. התהליך ממשיך באופן סדרתי לאורך המסלול, כאשר בכל צומת יש רק שכן אחד, , שטרם בוקר.
העץ הפורש שמתקבל הוא המסלול המקורי: .
* בסריקת DFS:
1. האלגוריתם מתחיל ב-. הוא מבקר אצל שכנו הראשון (והיחיד) , ומוסיף את הקשת לעץ.
2. מ-, האלגוריתם ממשיך רקורסיבית לשכנו היחיד שטרם בוקר, , ומוסיף את הקשת .
3. הרקרוסיה ממשיכה "להעמיק" לאורך המסלול עד הגעה לצומת , מאחר שבכל שלב יש רק אפשרות התקדמות אחת.
גם כאן, העץ הפורש שמתקבל הוא המסלול המקורי: .
מאחר ושתי הסריקות הפיקו את אותו עץ פורש (שהוא הגרף עצמו), הוכחנו כי גרף כזה קיים.
הדוגמה הכללית ביותר היא כל גרף שהוא עץ בעצמו. על פי הגדרה, עץ הוא גרף קשיר ללא מעגלים. לגרף כזה יש עץ פורש יחיד, והוא הגרף עצמו. לכן, כל אלגוריתם שמוצא עץ פורש (ובכלל זה סריקת BFS וסריקת DFS) חייב להחזיר את הגרף המקורי, ולכן שני האלגוריתמים יחזירו את אותו העץ.
דוגמה קונקרטית ופשוטה יותר היא גרף מסלול (path graph).
יהי גרף מסלול עם צמתים, כלומר וקשתות .
נניח שמתחילים את שתי הסריקות מהצומת .
* בסריקת BFS:
1. האלגוריתם מתחיל ב-. שכנו היחיד הוא . התור מכיל את , והקשת נוספת לעץ.
2. בשלב הבא, מוציאים את מהתור. שכנו היחיד שטרם בוקר הוא . התור מכיל את , והקשת נוספת לעץ.
3. התהליך ממשיך באופן סדרתי לאורך המסלול, כאשר בכל צומת יש רק שכן אחד, , שטרם בוקר.
העץ הפורש שמתקבל הוא המסלול המקורי: .
* בסריקת DFS:
1. האלגוריתם מתחיל ב-. הוא מבקר אצל שכנו הראשון (והיחיד) , ומוסיף את הקשת לעץ.
2. מ-, האלגוריתם ממשיך רקורסיבית לשכנו היחיד שטרם בוקר, , ומוסיף את הקשת .
3. הרקרוסיה ממשיכה "להעמיק" לאורך המסלול עד הגעה לצומת , מאחר שבכל שלב יש רק אפשרות התקדמות אחת.
גם כאן, העץ הפורש שמתקבל הוא המסלול המקורי: .
מאחר ושתי הסריקות הפיקו את אותו עץ פורש (שהוא הגרף עצמו), הוכחנו כי גרף כזה קיים.