שאלת מבחן באלגוריתמים - האוניברסיטה הפתוחה 2021 - תכנות דינמי

ברצוננו לערוך מסע לאורך מסלול ישר מנקודת-התחלה (במיקום ) לנקודת-סיום. נתונה רשימה של מיקומי-מלונות, כך שמלון ממוקם בדיוק קילומטרים מתחילת-המסלול, והמלון האחרון הוא היעד. בכל לילה לנים במלון (אחר). ידוע שכמות-המאמץ שנדרשת ביום-הליכה הינה — הריבוע של המרחק שהולכים באותו יום. ברצוננו לבחור את נקודות-הלינה כך שנמזער את סכום המאמצים בכל המסע, תוך השלמתו בלכל היותר ימים ( נתון). הציגו אלגוריתם תכנון-דינמי יעיל ככל האפשר, שזמן ריצתו פולינומי ב- וב-.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד 77 · 2021 · סמסטר א
תכנות דינמינוסחת נסיגה
הגדירו = מאמץ מזערי להגיע למלון ב- ימים. חלקו לפי מלון הלינה הקודם : , ואתחלו .
נגדיר = כמות-המאמץ המזערית הנדרשת כדי להגיע למלון תוך בדיוק ימים (לינות).

נוסחת נסיגה: עבור מלון ו-, בוחרים באיזה מלון לנו בלילה הקודם:



אתחול: (ביום הראשון הולכים מנקודת-ההתחלה, במיקום , אל מלון ).

סדר מילוי: , ולכל עבור .

פלט: — המאמץ המזערי להגיע למלון האחרון בתוך ימים. (חלוקה לעוד ימים אף פעם לא מגדילה את סכום ריבועי-המרחקים, ולכן המינימום מתקבל למעשה ב-.)

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