טוען...
טוען...
לפניכם גרף לא מכוון דו־צדדי G = (A, B, E).
צמתים בצד A | A = {A1, A2, A3} |
צמתים בצד B | B = {B1, B2, B3} |
קשתות בין A ל־B | E = {(A1 - B1), (A1 - B2), (A2 - B1), (A2 - B2), (A2 - B3), (A3 - B1), (A3 - B2)} |
הצומת M מוגדר "שכן" של הצומת U, אם יש קשת ביניהם.
לפניכם טבלת שכנויות המציגה את השכנים של כל צומת בגרף G. הצמתים השכנים של A1 ושל B1 נתונים בטבלה. השלימו את הטבלה.
U | A1 | A2 | A3 | B1 | B2 | B3 |
|---|---|---|---|---|---|---|
M | B1 , B2 | A1 , A2 , A3 |
נתונה רשימה של חלק מן הקשתות בגרף G: L = {(A1 - B1), (A2 - B2)}.
"צומת תפוס" הוא צומת שמופיע ברשימה L (הצמתים A1, A2, B1, B2 מופיעים ולכן הם ).
"צומת חופשי" הוא צומת שאינו מופיע ברשימה L (הצמתים A3, B3 אינם מופיעים ולכן הם ).
נתון האלגוריתם Path (G, L).
שלב אתחול נתונים באלגוריתם:
q, שאליו נכניס את הצומת A3.שימו לב
במהלך ריצת האלגוריתם ייכנסו לתור צמתים נוספים השייכים לצד
Aאו לצדB.
visited בגודל 6, ובו נסמן את כל הצמתים שבהם ביקרנו במהלך ריצת האלגוריתם (בהתחלה בתא של A3 מופיע הערך כן, ובשאר התאים במערך מופיע הערך לא).parent בגודל 6, ובו נשמור בעבור כל צומת את ה"הורה" שלו, כלומר את הצומת שממנו הגענו אליו במהלך ריצת האלגוריתם (בהתחלה כל התאים במערך ריקים).שלב הרצת האלגוריתם:
q אינו ריק:
U.U נמצא בצד B והוא גם :
אם כן – האלגוריתם מחזיר רשימת צמתים שהם: U, ההורה של U וההורה של ההורה של U וכן הלאה, עד הצומת שאין לו הורה (כלומר לצומת שהתא שלו ריק במערך parent), והאלגוריתם מסתיים.
אם לא (כלומר אם U נמצא בצד A או אם U הוא ) – בעבור כל צומת שכן – M של הצומת U: אם עדיין לא ביקרנו בצומת M (visited[M] = לא), וגם אחד מן התנאים שלהלן מתקיים:
U בצד A והקשת (U-M) אינה נמצאת ברשימה LU בצד B והקשת (U-M) נמצאת ברשימה Lאז:
M לתור.כן בתא M במערך visited.U הוא ההורה של M במערך parent.null, והאלגוריתם מסתיים.עקבו בטבלת מעקב אחרי ריצת האלגוריתם Path על הגרף הנתון G, עם הרשימה L.
המעקב צריך לכלול בכל איטרציה את הפריטים שלהלן:
U שהוצאנו מן התורvisitedparentכתבו את רשימת הצמתים שהאלגוריתם מחזיר.
לפניכם גרף לא מכוון דו־צדדי G = (A, B, E).
צמתים בצד A | A = {A1, A2, A3} |
צמתים בצד B | B = {B1, B2, B3} |
קשתות בין A ל־B | E = {(A1 - B1), (A1 - B2), (A2 - B1), (A2 - B2), (A2 - B3), (A3 - B1), (A3 - B2)} |
הצומת M מוגדר "שכן" של הצומת U, אם יש קשת ביניהם.
לפניכם טבלת שכנויות המציגה את השכנים של כל צומת בגרף G. הצמתים השכנים של A1 ושל B1 נתונים בטבלה. השלימו את הטבלה.
U | A1 | A2 | A3 | B1 | B2 | B3 |
|---|---|---|---|---|---|---|
M | B1 , B2 | A1 , A2 , A3 |
נתונה רשימה של חלק מן הקשתות בגרף G: L = {(A1 - B1), (A2 - B2)}.
"צומת תפוס" הוא צומת שמופיע ברשימה L (הצמתים A1, A2, B1, B2 מופיעים ולכן הם ).
"צומת חופשי" הוא צומת שאינו מופיע ברשימה L (הצמתים A3, B3 אינם מופיעים ולכן הם ).
נתון האלגוריתם Path (G, L).
שלב אתחול נתונים באלגוריתם:
q, שאליו נכניס את הצומת A3.שימו לב
במהלך ריצת האלגוריתם ייכנסו לתור צמתים נוספים השייכים לצד
Aאו לצדB.
visited בגודל 6, ובו נסמן את כל הצמתים שבהם ביקרנו במהלך ריצת האלגוריתם (בהתחלה בתא של A3 מופיע הערך כן, ובשאר התאים במערך מופיע הערך לא).parent בגודל 6, ובו נשמור בעבור כל צומת את ה"הורה" שלו, כלומר את הצומת שממנו הגענו אליו במהלך ריצת האלגוריתם (בהתחלה כל התאים במערך ריקים).שלב הרצת האלגוריתם:
q אינו ריק:
U.U נמצא בצד B והוא גם :
אם כן – האלגוריתם מחזיר רשימת צמתים שהם: U, ההורה של U וההורה של ההורה של U וכן הלאה, עד הצומת שאין לו הורה (כלומר לצומת שהתא שלו ריק במערך parent), והאלגוריתם מסתיים.
אם לא (כלומר אם U נמצא בצד A או אם U הוא ) – בעבור כל צומת שכן – M של הצומת U: אם עדיין לא ביקרנו בצומת M (visited[M] = לא), וגם אחד מן התנאים שלהלן מתקיים:
U בצד A והקשת (U-M) אינה נמצאת ברשימה LU בצד B והקשת (U-M) נמצאת ברשימה Lאז:
M לתור.כן בתא M במערך visited.U הוא ההורה של M במערך parent.null, והאלגוריתם מסתיים.עקבו בטבלת מעקב אחרי ריצת האלגוריתם Path על הגרף הנתון G, עם הרשימה L.
המעקב צריך לכלול בכל איטרציה את הפריטים שלהלן:
U שהוצאנו מן התורvisitedparentכתבו את רשימת הצמתים שהאלגוריתם מחזיר.