שאלה באלגוריתמים

student47

New member
שאלה באלגוריתמים

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

(מסלול יכלל בקבוצת המסלולים הקצרים ביותר הנמנית, אם הוא שונה בלפחות קדקד אחד מיתר המסלולים בקבוצה).

השאלה הזו היא מתוך תרגיל שרלוונטי לאלגוריתם BFS, לכן הפתרון צריך להתבסס עליו
יתכן שאפשר לפתור את זה גם בדרכים אחרות או ע"י אלגוריתמים שאני לא מכיר..אבל זו לא הכוונה.

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

השאלה איך אני כמה מסלולים יש מ-v ל-u, וכמה מתוכם הם באורך מינימלי.

מניח שצריך לעשות פה איזשהו שינוי באלגוריתם, אבל אני לא מצליח לעלות על השינוי הזה.

מישהו יכול בקשה לעזור?

תודה.
 

עריסטו

Active member
הבה נחשובה

נניח שדרגת הכניסה של u היא 3, והשכנים של u הם a,b,c. מ-v ל-a אורך המסלול הקצר ביותר הוא 5, ויש 20 מסלולים כאלה. מ-v ל-b אורך המסלול הקצר ביותר הוא 6, ויש 30 מסלולים כאלה. מ-v ל-c אורך המסלול הקצר ביותר הוא 5, ויש 40 מסלולים כאלה. מה זה אומר על אורך המסלול הקצר ביותר מ-v ל-u? כמה מסלולים כאלה יש?
 

student47

New member
תשובה

זה אומר שיש 60 מסלולים קצרים ביותר מ-v ל-u, ואורכם הוא 6 (אורך 5 עבור מסלו קצר ביותר מ-v ל-a או מ-v ל-c), ועוד 1 עבור הקשת מ-u ל-a או מ-u ל-c.

אם עניתי נכון, אני מתקשה לראות איך זה מקדם אותי.

מה אני יכול להסיק מהשאלה ששאלת אותי? שהמסלול הקצר ביוצר מקדקד v לקדקד u, הוא 1 ועוד המסלול הקצר ביותר מ-v לשכני u?

זו מסקנה שראית לי די ברורה.

לגבי מספר המסלולים הקצרים ביותר מ-v ל-u, מה אני יכול להסיק?
 

עריסטו

Active member
לא הבנתי מה אתה שואל

האם לא ענית על זה בשורה הראשונה?
 

student47

New member
אני יכול להסיק שמס' המסלולים הקצרים ביותר מ-v לu

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

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

עריסטו

Active member
הרי בשביל זה יש לך BFS

אם תתחיל BFS מ-v, תגיע ל-a,b,c לפני שתגיע ל-u.
 
למעלה