מבני נתונים ואלגוריתמים - מחברת קורס/נספחים/חשיבה רקורסיבית/דג הסלמון/הבעיה

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

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



דוגמה:

נשתמש כדוגמה בברכות הבאות לאורך הדף:

הבריכות והתעלות במסלולו של דג הסלמון המסכן.
הבריכות והתעלות במסלולו של דג הסלמון המסכן.


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

מהו זמן המינימום למסלול הדג, ובאלו ברכות ינוח?



דוגמה:

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

שני פתרונות אפשריים.
שני פתרונות אפשריים.


נניח שיש מערך גלובלי Resting-Times בגודל , ואנו צריכים להשתמש בו כדי לחשב את זמן שחיית המינימום ואת ברכות העצירה.