Menu
Coddy logo textTech

חזרה על מושגי מפתח

שיעור 14 מתוך 15 בקורס תכנות דינמי 101 של Coddy.

בשיעור הזה נעבור על מושגי המפתח שנלמדו בקורס תכנות דינמי 101.

  1. תכנות דינמי: תכנות דינמי הוא טכניקה לפתרון בעיות אופטימיזציה באמצעות פירוק שלהן לתת־בעיות פשוטות יותר ופתרון של כל תת־בעיה פעם אחת בלבד.
  2. ממואיזציה: ממואיזציה היא טכניקה למניעת חישובים מיותרים באמצעות שמירת התוצאות של קריאות יקרות לפונקציות והחזרת התוצאה השמורה במטמון כאשר אותן קלטים מופיעים שוב.
  3. מילוי טבלה: מילוי טבלה הוא טכניקה לפתרון בעיות של תכנות דינמי באמצעות מילוי איטרטיבי של טבלה או מערך של פתרונות, עד לקבלת הפתרון הסופי.
  4. תת־מבנה אופטימלי: בעיה מציגה תת־מבנה אופטימלי אם הפתרון האופטימלי לבעיה מכיל בתוכו פתרונות אופטימליים לתת־הבעיות שלה.
  5. תת־בעיות חופפות: בעיה מציגה תת־בעיות חופפות אם ניתן לפרק אותה לתת־בעיות שחולקות תת־תת־בעיות.
  6. אופטימיזציית זיכרון: אופטימיזציית זיכרון היא טכניקה להפחתת דרישות הזיכרון של אלגוריתם תכנות דינמי באמצעות מעקב רק אחר המצב הנחוץ.
  7. מסכת סיביות: מסכת סיביות היא טכניקה לייצוג קבוצת איברים כמספר בינארי באמצעות פעולות על סיביות.
  8. גיזום: גיזום הוא טכניקה להפחתת מספר החישובים הנדרשים באלגוריתם תכנות דינמי באמצעות הימנעות מחישובים מיותרים.
challenge icon

אתגר

בינוני

אתגר סיכום: מסלול בעלות מינימלית

נתונה לך רשת בגודל n x n המייצגת מפה של העיר. כל תא ברשת מייצג צומת רחובות, והערכים בתאים מייצגים את עלות המעבר בצומת. ברצונך לנסוע מהפינה השמאלית העליונה של הרשת לפינה הימנית התחתונה, ובכל צומת אפשר לנוע רק למטה או ימינה.

כתבי פונקציה min_cost_path(grid) שמקבלת את הרשת כקלט ומחזירה את העלות המינימלית של מעבר ברשת מהפינה השמאלית העליונה לפינה הימנית התחתונה.

לדוגמה:

grid = [
	[1, 3, 1],
	[1, 5, 1],
	[4, 2, 1]
]

min_cost_path(grid) => 7

הסבר: המסלול בעל העלות המינימלית הוא 1 -> 3 -> 1 -> 1 -> 1, והעלות הכוללת שלו היא 7.

נסו בעצמכם

def min_cost_path(grid):
    # כתבו כאן את הקוד

כל השיעורים ביחידה תכנות דינמי 101

תרגלו בעצמכם: קומפיילר Python אונליין