SlideShare a Scribd company logo
1 of 217
Download to read offline
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬11‫חלק‬1
‫קונווי‬ ‫של‬ ‫חיים‬ ‫משחק‬
2017
Igor Kleiner ©
‫השיעור‬ ‫של‬ ‫מטרה‬
‫קונווי‬ ‫של‬ ‫חיים‬ ‫משחק‬ ‫להכיר‬
‫חיים‬ ‫למשחק‬ ‫אלגוריתם‬ ‫לפתח‬
‫המשחק‬ ‫של‬ ‫קוד‬ ‫לפתח‬
Conway's game of life
Conway's game of life
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫שלנו‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫הלוח‬ ‫על‬ ‫אקראית‬ ‫מקונפיגורציה‬ ‫יתחיל‬ ‫המשחק‬,‫בהסתברות‬ ‫כאשר‬p‫כל‬
‫ובהסתברות‬ ‫חייה‬ ‫תהי‬ ‫משבצת‬1-p‫ב‬ ‫באופן‬ ‫מתה‬ ‫תהיה‬ ‫משבצת‬ ‫כל‬"‫ת‬
‫משבצות‬ ‫בשאר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫הלוח‬ ‫על‬ ‫אקראית‬ ‫מקונפיגורציה‬ ‫יתחיל‬ ‫המשחק‬,‫בהסתברות‬ ‫כאשר‬p‫כל‬
‫ובהסתברות‬ ‫חייה‬ ‫תהי‬ ‫משבצת‬1-p‫ב‬ ‫באופן‬ ‫מתה‬ ‫תהיה‬ ‫משבצת‬ ‫כל‬"‫ת‬
‫משבצות‬ ‫בשאר‬
•‫הבא‬ ‫דור‬ ‫לחישוב‬ ‫המשחק‬ ‫חוקי‬:
•‫למשבצת‬ ‫אם‬‫חייה‬‫מ‬ ‫יותר‬ ‫יש‬-3‫הבא‬ ‫בדור‬ ‫מצפיפות‬ ‫תמות‬ ‫היא‬ ‫שכנים‬
•‫למשבצת‬ ‫אם‬‫חייה‬‫מ‬ ‫פחות‬ ‫יש‬-2‫הבא‬ ‫בדור‬ ‫בידור‬ ‫מחוסר‬ ‫תמות‬ ‫היא‬ ‫שכנים‬
•‫יש‬ ‫מתה‬ ‫למשבצת‬ ‫אם‬3‫תהיה‬ ‫היא‬ ‫הבא‬ ‫בדור‬ ‫אזי‬ ‫שכנים‬‫חייה‬
•‫של‬ ‫המצב‬ ‫המקרים‬ ‫בשאר‬‫המשבצת‬‫משתנה‬ ‫לא‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫אותו‬ ‫ונצייר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫ונצייר‬‫הלוח‬ ‫את‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫הלוח‬ ‫את‬ ‫ונצייר‬
•‫עד‬‫נגמר‬ ‫לא‬ ‫שהמשחק‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫הלוח‬ ‫את‬ ‫ונצייר‬
•‫עד‬‫נגמר‬ ‫לא‬ ‫שהמשחק‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫שתי‬ ‫לפחות‬ ‫לממש‬ ‫שנצטרך‬ ‫רואים‬ ‫אנו‬ ‫מכאן‬
‫פונקציות‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬
•‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬:
•‫רשימה‬
•‫דו‬ ‫רשימה‬‫מימדית‬
•tuple
•‫מחרוזת‬
•‫מילון‬
•set
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬
•‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬:
•‫רשימה‬
•‫דו‬ ‫רשימה‬‫מימדית‬
•tuple
•‫מחרוזת‬
•‫מילון‬
•set
•‫בעזרת‬ ‫הלוח‬ ‫את‬ ‫נציג‬‫מימדית‬ ‫דו‬ ‫רשימה‬,‫מספר‬ ‫פנימית‬ ‫רשימה‬ ‫כאשר‬i‫תציג‬
‫לוח‬ ‫של‬ ‫שורה‬‫מספר‬i
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬
•‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬:
•‫רשימה‬
•‫דו‬ ‫רשימה‬‫מימדית‬
•tuple
•‫מחרוזת‬
•‫מילון‬
•set
•‫בעזרת‬ ‫הלוח‬ ‫את‬ ‫נציג‬‫מימדית‬ ‫דו‬ ‫רשימה‬,‫מספר‬ ‫פנימית‬ ‫רשימה‬ ‫כאשר‬i‫תציג‬
‫לוח‬ ‫של‬ ‫שורה‬‫מספר‬i
‫עם‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫הגדרת‬
FALSE‫משבצת‬ ‫בכל‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬?‫שכנים‬
‫שלה‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
•‫בעיה‬ ‫יש‬ ‫אבל‬:
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
•‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
•‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬
8
5
3
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
•‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬
•‫על‬‫בטריק‬ ‫נעזר‬ ‫בפתרון‬ ‫הכלליות‬ ‫את‬ ‫לשבור‬ ‫לא‬ ‫מנת‬‫הבא‬:‫לוח‬ ‫לייצר‬ ‫במקום‬
‫בגודל‬n*n‫בגודל‬ ‫לוח‬ ‫נייצר‬n+2‫על‬n+2‫החיצונית‬ ‫המעטפת‬ ‫כאשר‬‫תיהי‬‫כולה‬
False
8
8
8
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
GenerateNewBoard(n,p)
•‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬‫חיה‬p
•‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2)
•‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False
•‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
GenerateNewBoard(n,p)
•‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p
•‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2)
•‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False
•‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
GenerateNewBoard(n,p)
•‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p
•‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2)
•‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False
•‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
GenerateNewBoard(n,p)
•‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p
•‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2)
•‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False
•‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
GenerateNewBoard(n,p)
•‫שלנו‬ ‫קוד‬ ‫נבדוק‬:
GenerateNewBoard(n,p)
•‫שלנו‬ ‫קוד‬ ‫נבדוק‬:
GenerateNewBoard(n,p)
•‫שלנו‬ ‫קוד‬ ‫נבדוק‬:
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫סיימנו‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
•‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
•‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
•‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬
‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬
‫שהגדרנו‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
•‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
•‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬
‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬
‫שהגדרנו‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
•‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
•‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬
‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬
‫שהגדרנו‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
•‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
•‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬
‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬
‫שהגדרנו‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫לסיכום‬:
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫לסיכום‬:
‫שתבדוק‬ ‫עזר‬ ‫פונקציית‬ ‫לממש‬ ‫נותר‬
‫למשבצת‬ ‫יש‬ ‫חיים‬ ‫שכנים‬ ‫כמה‬
CalcLiveNeigbours(Board,I,j)
•‫מקבלת‬ ‫הפונקציה‬‫לוח‬‫המשחק‬‫של‬ ‫וקואורדינטות‬‫מסוימת‬ ‫משבצת‬,
‫הפונקציה‬‫מחזירה‬‫כמות‬‫החיים‬ ‫השכנים‬‫המשבצת‬ ‫של‬
CalcLiveNeigbours(Board,I,j)
•‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬
‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬
•‫אלגוריתם‬:
CalcLiveNeigbours(Board,I,j)
•‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬
‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬
•‫אלגוריתם‬:
•‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫חיים‬ ‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬
CalcLiveNeigbours(Board,I,j)
•‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬
‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬
•‫אלגוריתם‬:
•‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬‫חיים‬(‫על‬ ‫לעבור‬ ‫אפשר‬
‫של‬ ‫מנגנון‬ ‫בעזרת‬ ‫או‬ ‫מקוננת‬ ‫בלולאה‬ ‫או‬ ‫משבצת‬ ‫של‬ ‫השכנים‬(List Comprehension
CalcLiveNeigbours(Board,I,j)
•‫מקבלת‬ ‫הפונקציה‬‫הפונקציה‬ ‫משבצת‬ ‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬
‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬
•‫אלגוריתם‬:
•‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫חיים‬ ‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬
http://www.codeskulptor.org/#user43_uDT5C2tdqH_0.py
‫הקוד‬ ‫של‬ ‫סרט‬
• https://www.youtube.com/watch?v=_IPKxsSihFo
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬11‫חלק‬2
‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫טיול‬
Self Avoided Random Walks on Grid
2017
Igor Kleiner ©
‫השיעור‬ ‫של‬ ‫מטרה‬
‫בעיית‬ ‫להכיר‬Self-Avoiding random walk
‫אלגוריתם‬ ‫לפתח‬‫זו‬ ‫בעיה‬ ‫של‬ ‫לסימולציה‬
‫משבצות‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫המסמלץ‬ ‫קוד‬ ‫לפתח‬
Self-Avoiding Random Walk
•‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬
‫קיים‬)
Self-Avoiding Random Walk
•‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬)
•‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬)
•‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2
Self-Avoiding Random Walk
•‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬)
•‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬)
•‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2
•‫כל‬‫צעד‬‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬,
‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתאי‬ ‫לשם‬ ‫וזז‬
•‫אסור‬‫לכלב‬‫לבקר‬‫באותה‬‫משבצת‬‫יותר‬‫מפעם‬‫אחד‬(‫כלומר‬‫הכלב‬‫זוכר‬‫איפה‬
‫הוא‬‫היה‬)
Self-Avoiding Random Walk
•‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬)
•‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬)
•‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2
•‫כל‬‫צעד‬‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬,
‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתאי‬ ‫לשם‬ ‫וזז‬
•‫אסור‬‫לכלב‬‫לבקר‬‫באותה‬‫משבצת‬‫יותר‬‫מפעם‬‫אחד‬(‫כלומר‬‫הכלב‬‫זוכר‬‫איפה‬‫הוא‬
‫היה‬)
•‫אזי‬‫מ‬ ‫אחד‬ ‫ייתכן‬-2:
•‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬–‫ניצחון‬
•‫אין‬‫לכלב‬‫לאן‬‫להתקדם‬-‫הפס‬‫ד‬
Self-Avoiding Random Walk
•‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬)
•‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬)
•‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2
•‫כל‬‫צעד‬‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬,
‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתאי‬ ‫לשם‬ ‫וזז‬
•‫אסור‬‫לכלב‬‫לבקר‬‫באותה‬‫משבצת‬‫יותר‬‫מפעם‬‫אחד‬(‫כלומר‬‫הכלב‬‫זוכר‬‫איפה‬‫הוא‬
‫היה‬)
•‫אזי‬‫מ‬ ‫אחד‬ ‫ייתכן‬-2:
•‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬–‫ניצחון‬
•‫אין‬‫לכלב‬‫לאן‬‫להתקדם‬–‫הפסד‬
Self-Avoiding Random Walk
•‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬)
•‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬)
•‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2
•‫כל‬‫צעד‬‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬,
‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתאי‬ ‫לשם‬ ‫וזז‬
•‫אסור‬‫לכלב‬‫לבקר‬‫באותה‬‫משבצת‬‫יותר‬‫מפעם‬‫אחד‬(‫כלומר‬‫הכלב‬‫זוכר‬‫איפה‬‫הוא‬
‫היה‬)
•‫אזי‬‫מ‬ ‫אחד‬ ‫ייתכן‬-2:
•‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬–‫ניצחון‬
•‫אין‬‫לכלב‬‫לאן‬‫להתקדם‬–‫הפסד‬
Self-Avoiding Random Walk
•‫מהי‬‫ההסתברות‬‫שבעיר‬‫בגודל‬n*n‫הכלב‬‫בהצלחה‬ ‫שלו‬ ‫טיול‬ ‫מסיים‬(‫כלומר‬
‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬)?
Self-Avoiding Random Walk
•‫מהי‬‫ההסתברות‬‫שבעיר‬‫בגודל‬n*n‫הכלב‬‫בהצלחה‬ ‫שלו‬ ‫טיול‬ ‫מסיים‬(‫כלומר‬
‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬)?
•‫פתרון‬‫לשאלה‬‫זו‬‫עדיין‬‫לא‬‫ידוע‬,‫פעם‬ ‫אף‬ ‫ידוע‬ ‫יהי‬ ‫שלא‬ ‫וייתכן‬
•‫אנו‬‫סימולציה‬ ‫בעזרת‬ ‫זו‬ ‫השאלה‬ ‫על‬ ‫לענות‬ ‫ננסה‬
‫תרגיל‬1
•‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n
‫תרגיל‬1
•‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n
•‫רעיון‬‫של‬‫אלגוריתם‬:
‫תרגיל‬1
•‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n
•‫רעיון‬‫של‬‫אלגוריתם‬:
•‫לוח‬ ‫נבנה‬(‫מימדית‬ ‫דו‬ ‫רשימה‬)‫אותו‬ ‫ונצייר‬ ‫התחלתי‬ ‫מצב‬ ‫שמייצג‬
•‫עד‬‫נגמר‬ ‫לא‬ ‫שהטיול‬,‫אותו‬ ‫ונצייר‬ ‫הבא‬ ‫צעד‬ ‫של‬ ‫לוח‬ ‫נחשב‬
http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
‫תרגיל‬1
•‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n
•‫רעיון‬‫של‬‫אלגוריתם‬:
•‫לוח‬ ‫נבנה‬(‫מימדית‬ ‫דו‬ ‫רשימה‬)‫מצב‬ ‫שמייצג‬
‫אותו‬ ‫ונצייר‬ ‫התחלתי‬
•‫עד‬‫נגמר‬ ‫לא‬ ‫שהטיול‬,‫צעד‬ ‫של‬ ‫לוח‬ ‫נחשב‬
‫אותו‬ ‫ונצייר‬ ‫הבא‬
http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
‫תרגיל‬1
•‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n
•‫רעיון‬‫של‬‫אלגוריתם‬:
•‫לוח‬ ‫נבנה‬(‫מימדית‬ ‫דו‬ ‫רשימה‬)‫מצב‬ ‫שמייצג‬
‫אותו‬ ‫ונצייר‬ ‫התחלתי‬
•‫עד‬‫נגמר‬ ‫לא‬ ‫שהטיול‬,‫צעד‬ ‫של‬ ‫לוח‬ ‫נחשב‬
‫אותו‬ ‫ונצייר‬ ‫הבא‬
http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
Create2dGrid
http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
DrawWalk
http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
‫ציור‬ ‫כל‬ ‫לאחר‬ ‫זמן‬ ‫פסק‬ ‫נוסיף‬ ‫אנימציה‬ ‫לראות‬ ‫כדי‬
NextMove
http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
GetFreeNeigbours
http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
‫תרגיל‬2
•‫מ‬ ‫שונים‬ ‫בגדלים‬ ‫מעיר‬ ‫לצאת‬ ‫כלב‬ ‫של‬ ‫הסתברות‬ ‫שמעריך‬ ‫קוד‬ ‫כתב‬n=5‫עד‬
n=121‫לכל‬n‫לבצע‬ ‫יש‬40000‫הסופיות‬ ‫התוצאות‬ ‫את‬ ‫ולהציג‬ ‫סימולציות‬
‫גרפית‬ ‫בצורה‬
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬11‫חלק‬3
‫חריגות‬‫וטעויות‬:exceptions and errors
2017
Igor Kleiner
‫מטרה‬
‫עם‬ ‫להתמודד‬ ‫איך‬ ‫ללמוד‬‫תוכנה‬ ‫נפילת‬‫ריצה‬ ‫בזמן‬
‫בפייתון‬ ‫חריגות‬ ‫של‬ ‫מנגנון‬ ‫ללמוד‬
‫בפייתון‬ ‫טעויות‬ ‫של‬ ‫שונים‬ ‫סוגים‬ ‫להכיר‬
‫תוכנה‬ ‫של‬ ‫ריצה‬ ‫בזמן‬ ‫אם‬ ‫יקרה‬ ‫מה‬‫תתרחש‬‫טעות‬
‫תוכנה‬ ‫של‬ ‫ריצה‬ ‫בזמן‬ ‫אם‬ ‫יקרה‬ ‫מה‬‫תתרחש‬‫טעות‬
•‫מקרים‬ ‫ברוב‬ ‫טעות‬ ‫הודעת‬ ‫נקבל‬
‫טעיות‬ ‫של‬ ‫שונים‬ ‫סוגים‬
‫בפייתון‬ ‫בקוד‬ ‫טעיות‬ ‫של‬ ‫שונים‬ ‫סוגים‬
‫סוגים‬ ‫מספר‬ ‫קיים‬‫טעויות‬‫בפייתון‬:
• Syntax error
• Semantic error  Logic error
Syntax Error
•‫טעויות‬ ‫של‬ ‫הנפוצים‬ ‫מסוגים‬ ‫אחד‬
•‫חוקים‬ ‫לפי‬ ‫לא‬ ‫קוד‬ ‫כותבים‬ ‫אנו‬ ‫כאשר‬ ‫קוראת‬ ‫הטעות‬(‫דקדוק‬ ‫חוקי‬)‫פייתון‬ ‫של‬
Semantic Error
•‫המתכנת‬ ‫שהתכוון‬ ‫מה‬ ‫לא‬ ‫עושה‬ ‫קוד‬ ‫כאשר‬ ‫שמופיעה‬ ‫טעות‬
Exceptions (Run Time Errors)
•‫סינטקס‬ ‫טעויות‬ ‫אין‬ ‫בקוד‬ ‫אם‬ ‫אפילו‬,‫נוספות‬ ‫טעויות‬ ‫להתגלות‬ ‫יכולים‬ ‫ריצה‬ ‫בזמן‬
•‫המתרחשות‬ ‫הטעויות‬‫נקראות‬ ‫ריצה‬ ‫בזמן‬‫חריגות‬(exception)
‫בזמן‬ ‫לטעות‬ ‫דוגמא‬‫ריצה‬
‫בזמן‬ ‫לטעות‬ ‫דוגמא‬‫ריצה‬
‫בזמן‬ ‫לטעות‬ ‫דוגמא‬‫ריצה‬
‫בזמן‬ ‫לטעות‬ ‫דוגמא‬‫ריצה‬
‫בזמן‬ ‫לטעות‬ ‫דוגמא‬‫ריצה‬
‫מסקנות‬
•‫התוכנה‬ ‫ריצה‬ ‫בזמן‬ ‫טעות‬ ‫יש‬ ‫כאשר‬"‫נופלת‬"‫טעות‬ ‫הודעת‬ ‫מקבל‬ ‫ומשתמש‬ ‫ועוצרת‬
"‫מוזרה‬"
•‫נעים‬ ‫לא‬ ‫כזה‬ ‫ניסיון‬
•‫מוזרה‬ ‫בצורה‬ ‫נופלת‬ ‫תוכנה‬ ‫כאשר‬ ‫אוהבים‬ ‫לא‬ ‫רגילים‬ ‫משתמשים‬
‫מסקנות‬
•‫התוכנה‬ ‫ריצה‬ ‫בזמן‬ ‫טעות‬ ‫יש‬ ‫כאשר‬"‫נופלת‬"‫טעות‬ ‫הודעת‬ ‫מקבל‬ ‫ומשתמש‬ ‫ועוצרת‬
"‫מוזרה‬"
•‫נעים‬ ‫לא‬ ‫כזה‬ ‫ניסיון‬
•‫מוזרה‬ ‫בצורה‬ ‫נופלת‬ ‫תוכנה‬ ‫כאשר‬ ‫אוהבים‬ ‫לא‬ ‫רגילים‬ ‫משתמשים‬
•‫של‬ ‫מנגנון‬ ‫קיים‬ ‫בפייתון‬‫חריגות‬‫כאלו‬ ‫מקרים‬ ‫עם‬ ‫להתמודד‬ ‫המאפשר‬
‫בחריגות‬ ‫לשימוש‬ ‫ראשונה‬ ‫דוגמא‬
‫בחריגות‬ ‫לשימוש‬ ‫ראשונה‬ ‫דוגמא‬
‫בחריגות‬ ‫טיפול‬‫בפייתון‬
•‫חריגה‬ ‫שתקרה‬ ‫קטן‬ ‫לא‬ ‫סיכוי‬ ‫יש‬ ‫שבו‬ ‫קוד‬ ‫קטע‬ ‫שיש‬ ‫נניח‬(‫ממשתמש‬ ‫חוקי‬ ‫לא‬ ‫קלט‬,
‫קיים‬ ‫לא‬ ‫קובץ‬,‫ב‬ ‫חלוקה‬-0‫וכו‬')
•‫לנסות‬ ‫נוכל‬ ‫אזי‬"‫לתפוס‬"‫ולא‬ ‫שלנו‬ ‫קוד‬ ‫בעזרת‬ ‫בה‬ ‫ולטפל‬ ‫ריצה‬ ‫בזמן‬ ‫החריגה‬ ‫את‬
‫לתוכנה‬ ‫לתת‬"‫לפול‬"
•‫בפקודות‬ ‫נשתמש‬ ‫כך‬ ‫לשם‬try‫ו‬-except
‫בחריגות‬ ‫טיפול‬ ‫מנגנון‬
else is optional
finally is optional
variable is optional
‫מנגנון‬ ‫של‬ ‫עבודה‬ ‫עקרונות‬:try … except….
.1‫בין‬ ‫קוד‬try‫ו‬-except‫מתבצע‬
.2‫שלב‬ ‫ביצוע‬ ‫בזמן‬ ‫אם‬(1)‫של‬ ‫הבלוקים‬ ‫כל‬ ‫אזי‬ ‫טעות‬ ‫אין‬except‫מתבצעים‬ ‫לא‬
‫בלוק‬ ‫של‬ ‫קוד‬ ‫ומתבצע‬else
.3‫של‬ ‫ביצוע‬ ‫בזמן‬ ‫טעות‬ ‫יש‬ ‫אם‬(1)‫ראשונה‬ ‫טעות‬ ‫יש‬ ‫שבה‬ ‫קוד‬ ‫משורת‬ ‫החל‬ ‫אזי‬
‫בלוק‬(1)‫של‬ ‫וקוד‬ ‫להתבצע‬ ‫מפסיק‬except‫מתבצע‬ ‫מתאים‬
.4except‫שלה‬ ‫בטיפוס‬ ‫חשיבות‬ ‫ללא‬ ‫כלשהי‬ ‫חריגה‬ ‫עבור‬ ‫מתבצע‬ ‫חריגה‬ ‫של‬ ‫שם‬ ‫ללא‬
.5finally‫מתבצע‬‫תמיד‬,‫לא‬ ‫או‬ ‫חריגה‬ ‫הייתה‬ ‫האם‬ ‫תלות‬ ‫ללא‬
‫חריגות‬ ‫של‬ ‫שונים‬ ‫סוגים‬
.1NameError‫המתאים‬ ‫השמות‬ ‫במרחב‬ ‫נמצא‬ ‫לא‬ ‫משתנה‬ ‫של‬ ‫שם‬ ‫כאשר‬ ‫מתרחשת‬
‫של‬ ‫חוקים‬ ‫לפי‬scope
‫חריגות‬ ‫של‬ ‫שונים‬ ‫סוגים‬
.1ZeroDivisionError‫ב‬ ‫חלוקה‬ ‫בניסיון‬ ‫מתרחשת‬-0
‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬
‫קבצים‬
‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬
‫קבצים‬
‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬
‫קבצים‬
‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬
‫קבצים‬
‫טוב‬ ‫יותר‬ ‫מה‬:2‫או‬ ‫לנפילה‬ ‫אפשרות‬ ‫עם‬ ‫קוד‬ ‫שורות‬8‫בחריגות‬ ‫טיפול‬ ‫עם‬ ‫שורות‬?
‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫שונות‬ ‫דוגמאות‬
•‫קובץ‬ ‫פתיחת‬:
‫חריגות‬ ‫של‬ ‫במנגנון‬ ‫נכון‬ ‫לא‬ ‫שימוש‬
•‫קובץ‬ ‫פתיחת‬:
‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫שונות‬ ‫דוגמאות‬
•‫טיפוסים‬ ‫והמרת‬ ‫מתמטיות‬ ‫פעולות‬:
‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫שונות‬ ‫דוגמאות‬
•‫טיפוסים‬ ‫והמרת‬ ‫מתמטיות‬ ‫פעולות‬:
‫דוגמא‬
•‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬
‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬
•‫ראשון‬ ‫פתרון‬:
‫דוגמא‬
•‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬
‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬
•‫קיים‬ ‫לא‬ ‫הקובץ‬ ‫אם‬ ‫יקרה‬ ‫מה‬?
‫דוגמא‬
•‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬
‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬
•‫קיים‬ ‫לא‬ ‫הקובץ‬ ‫אם‬ ‫יקרה‬ ‫מה‬?‫תיפול‬ ‫התוכנה‬!
‫דוגמא‬
•‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬
‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬
•‫קיים‬ ‫לא‬ ‫הקובץ‬ ‫אם‬ ‫יקרה‬ ‫מה‬?‫תיפול‬ ‫התוכנה‬!
•‫פתרון‬2:
‫דוגמא‬
•‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬
‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬
•‫קיים‬ ‫לא‬ ‫הקובץ‬ ‫אם‬ ‫יקרה‬ ‫מה‬?‫תיפול‬ ‫התוכנה‬!
•‫פתרון‬2:
‫תזכורת‬ ‫שמורות‬ ‫מילים‬
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬11‫חלק‬4
‫האנוי‬ ‫מגדלי‬
2017
Igor Kleiner
‫מטרה‬
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫של‬ ‫רקורסיבי‬ ‫פתרון‬ ‫ללמוד‬
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫להכיר‬
Tower of Hanoi
Tower of Hanoi
Tower of Hanoi simulation
https://www.mathsisfun.com/games/towerofhanoi.html
A B C
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
•‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬:
•‫אחד‬ ‫דיסק‬ ‫רק‬ ‫יש‬
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
•‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬:
•‫אחד‬ ‫דיסק‬ ‫רק‬ ‫יש‬
•‫פתרון‬:‫ממגדל‬ ‫הדיסק‬ ‫את‬ ‫נעביר‬A‫ל‬-‫מגדל‬C
A B C
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
•‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬:
•‫דיסקים‬ ‫שתי‬ ‫יש‬
A B C
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
•‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬:
•‫דיסקים‬ ‫שתי‬ ‫יש‬:‫מ‬ ‫דיסק‬ ‫נעביר‬-A‫ל‬-B‫מ‬ ‫דיסק‬ ‫ואז‬-A‫ל‬-C‫מ‬ ‫דיסק‬ ‫ואז‬-B‫ל‬-C
A B C
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
•‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬:
•‫דיסקים‬ ‫שלושה‬:
A B C
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
•‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬:
•‫דיסקים‬ ‫שלושה‬:‫ל‬ ‫גדול‬ ‫דיסק‬ ‫להעביר‬ ‫חייבים‬-C‫עליונים‬ ‫דיסקים‬ ‫משתי‬ ‫מגדל‬ ‫להעביר‬ ‫יש‬ ‫כך‬ ‫לשם‬
‫ל‬-B(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬)‫מ‬ ‫הגדול‬ ‫הדיסק‬ ‫להעביר‬ ‫ואז‬-A‫ל‬-C(‫קל‬)‫שתי‬ ‫עם‬ ‫מגדל‬ ‫להעביר‬ ‫ואז‬
‫מ‬ ‫דיסקים‬-B‫ל‬-A(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬)
A B C
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
•‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬:
•‫דיסקים‬ ‫שלושה‬:‫ל‬ ‫גדול‬ ‫דיסק‬ ‫להעביר‬ ‫חייבים‬-C‫דיסקים‬ ‫משתי‬ ‫מגדל‬ ‫להעביר‬ ‫יש‬ ‫כך‬ ‫לשם‬
‫ל‬ ‫עליונים‬-B(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬)‫מ‬ ‫הגדול‬ ‫הדיסק‬ ‫להעביר‬ ‫ואז‬-A‫ל‬-C(‫קל‬)‫מגדל‬ ‫להעביר‬ ‫ואז‬
‫מ‬ ‫דיסקים‬ ‫שתי‬ ‫עם‬-B‫ל‬-A(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬)
• Solve(3,a,b,c):
• Solve(2,a,c,b)
• Solve(1,a,b,c)
• Solve(2,b,a,c)
‫מקור‬ ‫יעד‬
‫מיקום‬
‫זמני‬
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
•‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬:
•4‫דיסקים‬
• Solve(4,a,b,c):
• Solve(3,a,c,b)
• Solve(1,a,b,c)
• Solve(3,b,a,c)
‫המגדלים‬ ‫בעיית‬ ‫של‬ ‫פתרון‬
‫המגדלים‬ ‫בעיית‬ ‫של‬ ‫פתרון‬
‫המגדלים‬ ‫בעיית‬ ‫של‬ ‫פתרון‬
‫המגדלים‬ ‫בעיית‬ ‫של‬ ‫פתרון‬
‫המגדלים‬ ‫בעיית‬ ‫של‬ ‫פתרון‬
‫האוני‬ ‫מגדלי‬
‫שכתבנו‬ ‫קוד‬ ‫של‬ ‫יעילות‬ ‫בשאלת‬ ‫נדון‬ ‫כעת‬
‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬
•‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬?
‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬
‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬?
1 1
2 3
3 7
4 15
5 31
n ?
‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬
‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬?
1 1
2 3
3 7
4 15
5 31
n 2^n-1
‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬
‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬?
‫ב‬ ‫נסמן‬-T(N)‫כאשר‬ ‫הדיסקים‬ ‫כל‬ ‫את‬ ‫להעביר‬ ‫מנת‬ ‫על‬ ‫לעשות‬ ‫שיש‬ ‫העברות‬ ‫כמות‬ ‫את‬
‫סה‬ ‫יש‬"‫כ‬N‫דיסקים‬
‫אזי‬:
‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬
‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬?
‫ב‬ ‫נסמן‬-T(N)‫כאשר‬ ‫הדיסקים‬ ‫כל‬ ‫את‬ ‫להעביר‬ ‫מנת‬ ‫על‬ ‫לעשות‬ ‫שיש‬ ‫העברות‬ ‫כמות‬ ‫את‬
‫סה‬ ‫יש‬"‫כ‬N‫דיסקים‬
‫אזי‬:
T(N)=T(N-1)+T(N-1)+1=2T(N-1)+1=2*(2*T(N-2)+1)=2*(2*(2*T(N-3)+1)+1)+1=
=2^3*T(N-3)+7=……2^(N-1)+2^(N-1)-1=2^N-1
‫עם‬ ‫בעיה‬ ‫לפתור‬ ‫נרצה‬ ‫אם‬ ‫ולכן‬64‫דיסקים‬‫לעשות‬ ‫נצטרך‬2^64-1‫פעולות‬,‫כל‬ ‫כאשר‬
‫לחכות‬ ‫נצטרך‬ ‫אחד‬ ‫שניה‬ ‫לוקחת‬ ‫פעולה‬584942417355‫שנים‬–‫העולם‬ ‫סוף‬ ‫עד‬
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬11‫חלק‬5
‫דינמי‬ ‫תכנות‬:‫עודף‬ ‫החזרת‬ ‫בעיית‬
2017
Igor Kleiner
‫מטרה‬
‫עודף‬ ‫החזרת‬ ‫לבעיית‬ ‫אלגוריתם‬ ‫לפתח‬
‫דינמי‬ ‫תכנות‬ ‫של‬ ‫עקרונות‬ ‫ללמוד‬
‫תוכנה‬ ‫לכתוב‬‫לבעיית‬‫עודף‬ ‫החזרת‬
‫דינמי‬ ‫תכנות‬
•‫ספירה‬ ‫או‬ ‫אופטימיזציה‬ ‫מבעיות‬ ‫חלק‬ ‫לפתור‬ ‫המאפשרת‬ ‫שיטה‬ ‫היא‬ ‫דינמי‬ ‫תכנות‬
‫דינמי‬ ‫תכנות‬
•‫ספירה‬ ‫או‬ ‫אופטימיזציה‬ ‫מבעיות‬ ‫חלק‬ ‫לפתור‬ ‫המאפשרת‬ ‫שיטה‬ ‫היא‬ ‫דינמי‬ ‫תכנות‬
•‫חזקה‬ ‫די‬ ‫שני‬ ‫מצעד‬ ‫פשוטה‬ ‫יחסית‬ ‫אחד‬ ‫מצעד‬ ‫שיטה‬
‫דינמי‬ ‫תכנות‬
•‫ספירה‬ ‫או‬ ‫אופטימיזציה‬ ‫מבעיות‬ ‫חלק‬ ‫לפתור‬ ‫המאפשרת‬ ‫שיטה‬ ‫היא‬ ‫דינמי‬ ‫תכנות‬
•‫חזקה‬ ‫די‬ ‫שני‬ ‫מצעד‬ ‫פשוטה‬ ‫יחסית‬ ‫אחד‬ ‫מצעד‬ ‫שיטה‬
•‫אופטימיזציה‬ ‫בעיית‬‫את‬ ‫למזער‬ ‫או‬ ‫למקסם‬ ‫במטרה‬ ‫לפתור‬ ‫רוצים‬ ‫שאנו‬ ‫בעיה‬ ‫היא‬
‫מטרה‬ ‫פונקציית‬:
•‫רווח‬ ‫מקסימום‬
•‫הוצאות‬ ‫מינימום‬
•‫ספירה‬ ‫בעיית‬:‫בעלי‬ ‫אובייקטים‬ ‫כמות‬ ‫לספור‬ ‫רוצים‬ ‫אנו‬ ‫שבה‬ ‫קומבינטורית‬ ‫בעיה‬
‫נתונה‬ ‫תכונה‬
‫דינמי‬ ‫תכנות‬
•‫כל‬ ‫לא‬ ‫לפתור‬ ‫מאפשרת‬ ‫דינמי‬ ‫תכנות‬‫בעיה‬,‫מיוחדות‬ ‫בעיות‬ ‫אלה‬
•‫מסוימת‬ ‫תכונה‬ ‫עם‬ ‫בעיות‬:‫הבעיות‬ ‫לתתי‬ ‫אופטימליות‬
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬
‫חשוב‬ ‫כן‬ ‫בעודף‬
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬
‫חשוב‬ ‫כן‬ ‫בעודף‬
•‫פתרון‬:
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬
‫חשוב‬ ‫כן‬ ‫בעודף‬
•‫פתרון‬:
•‫פרטיים‬ ‫ממקרים‬ ‫נתחיל‬
•‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬0,1,2,3,4,5,6?
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬
‫חשוב‬ ‫כן‬ ‫בעודף‬
•‫פתרון‬:
•‫פרטיים‬ ‫ממקרים‬ ‫נתחיל‬
•‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬0,1,2,3,4,5,6?
0 1 2 3 4 5 6
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬
‫חשוב‬ ‫כן‬ ‫בעודף‬
•‫פתרון‬:
•‫פרטיים‬ ‫ממקרים‬ ‫נתחיל‬
•‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬0,1,2,3,4,5,6?
0 1 2 3 4 5 6
1 1 2 3 5 9 15
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬
‫חשוב‬ ‫כן‬ ‫בעודף‬
•‫פתרון‬:
•‫נסמם‬‫ב‬-F(N)‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫שבעזרתן‬ ‫האפשרויות‬ ‫כמות‬ ‫את‬N
•‫את‬ ‫לחשב‬ ‫איך‬ ‫לדעת‬ ‫שלנו‬ ‫מטרה‬F(N)
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬
‫חשוב‬ ‫כן‬ ‫בעודף‬
•‫ב‬ ‫נסמם‬-F(N)‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫שבעזרתן‬ ‫האפשרויות‬ ‫כמות‬ ‫את‬N
•‫את‬ ‫לחשב‬ ‫איך‬ ‫לדעת‬ ‫שלנו‬ ‫מטרה‬F(N)
•‫עבור‬ ‫נוסחה‬ ‫לכתוב‬ ‫נתחיל‬F(N),‫ש‬ ‫נניח‬-N‫מ‬ ‫גדול‬-5,‫להחזיר‬ ‫אפשר‬ ‫איך‬‫עודף‬N?‫יש‬
‫ראשון‬ ‫ממטבע‬ ‫להתחיל‬,‫או‬ ‫להיות‬ ‫יכול‬ ‫ראשון‬ ‫מטבע‬1‫או‬2‫או‬5,‫אותו‬ ‫שנחזיר‬ ‫לאחר‬
‫העודף‬ ‫שאר‬ ‫להחזיר‬ ‫נצטרך‬F(N-1)‫או‬F(N-2)‫או‬F(N-5)‫בהתאמה‬
•‫נסיק‬ ‫מכאן‬(‫הסכום‬ ‫עקרון‬:)F(N)=F(N-1)+F(N-2)+F(N-5)‫עבור‬N>5
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫נסיק‬ ‫מכאן‬:
• F(N)=F(N-1)+F(N-2)+F(N-5) N>=5
• F(N)=F(N-1)+F(N-2) 5>N>=2
• F(1)=F(0)=1
•‫מקוצר‬ ‫בכתיב‬ ‫או‬:
• F(N)=F(N-1)+F(N-2)*I(N>=2)+F(N-5)*I(N>=5)
• F(0)=F)1(=1
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫מקוצר‬ ‫בכתיב‬ ‫או‬:
• F(N)=F(N-1)+F(N-2)*I(N>=2)+F(N-5)*I(N>=5)
• F(0)=F1=1
•‫הדגמה‬:
F(2)=F(1)+F(0)=2
F(3)=F(2)+F(1)=3
F(4)=F(3)+F(2)=5
F(5)=F(4)+F(3)+F(0)=9
F(6)=F(5)+F(4)+F(1)=15
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫הבעיה‬ ‫לפתרון‬ ‫אלגוריתם‬:
•‫אתחול‬:‫ריקה‬ ‫רשימה‬ ‫ניקח‬‫שבה‬‫נשמר‬‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬F(n),‫נגדיר‬
F[1]=F[0]=1
•‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬
•‫נחזיר‬F(N)
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫אלגוריתם‬:
•‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬
F[1]=F[0]=1
•‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬
•‫נחזיר‬F(N)
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫אלגוריתם‬:
•‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬
F[1]=F[0]=1
•‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬
•‫נחזיר‬F(N)
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫אלגוריתם‬:
•‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬
F[1]=F[0]=1
•‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬
•‫נחזיר‬F(N)
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫אלגוריתם‬:
•‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬
F[1]=F[0]=1
•‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬
•‫נחזיר‬F(N)
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫אלגוריתם‬:
•‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬
F[1]=F[0]=1
•‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬
•‫נחזיר‬F(N)
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫אלגוריתם‬:
•‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬
F[1]=F[0]=1
•‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬
•‫נחזיר‬F(N)
http://www.codeskulptor.org/#user43_vpcANXVCOx_0.py
‫הכללה‬ ‫עודף‬ ‫החזרת‬ ‫בעיית‬
•‫הבעיה‬ ‫את‬ ‫נפתור‬ ‫כעת‬‫עודף‬ ‫החזרת‬ ‫של‬ ‫כללית‬
•‫אלגוריתם‬:
•‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬
F[1]=F[0]=1
•‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬
•‫נחזיר‬F(N)
http://www.codeskulptor.org/#user43_vpcANXVCOx_1.py
‫עודף‬ ‫החזרת‬ ‫בעיית‬2
•‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N
‫עודף‬ ‫החזרת‬ ‫בעיית‬2
•‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N
•‫פתרון‬:
•‫פרטים‬ ‫ממקרים‬ ‫נתחיל‬
•‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫מהי‬:0,1,2,3,4,5,6?
0 1 2 3 4 5 6
‫עודף‬ ‫החזרת‬ ‫בעיית‬2
•‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N
•‫פתרון‬:
•‫פרטים‬ ‫ממקרים‬ ‫נתחיל‬
•‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫מהי‬:0,1,2,3,4,5,6?
0 1 2 3 4 5 6
1 1 1 2 2 1 2
‫עודף‬ ‫החזרת‬ ‫בעיית‬2
•‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N
•‫כללית‬ ‫נוסחה‬ ‫לקבל‬ ‫ננסה‬:
‫עודף‬ ‫החזרת‬ ‫בעיית‬2
•‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N
•‫כללית‬ ‫נוסחה‬ ‫לקבל‬ ‫ננסה‬:
•‫עודף‬ ‫להחזיר‬ ‫עלינו‬ ‫כאשר‬N‫לבחור‬ ‫צריכים‬ ‫אנו‬‫מאיזה‬‫להתחיל‬ ‫מטבע‬:1,2,‫או‬5
•‫ממטבע‬ ‫נתחיל‬ ‫אם‬5,‫כמות‬ ‫אזי‬‫שצריך‬ ‫המינימלית‬ ‫המטבעות‬‫היא‬1+F(N-5),‫אם‬
‫ממטבע‬ ‫נתחיל‬2‫היא‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫המינימלית‬ ‫כמות‬ ‫אזי‬,1+F(N-2)‫נתחיל‬ ‫ואם‬
‫ממטבע‬1‫אזי‬:1+F(N-1)
‫עודף‬ ‫החזרת‬ ‫בעיית‬2
•‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N
•‫כללית‬ ‫נוסחה‬ ‫לקבל‬ ‫ננסה‬:
•‫עודף‬ ‫להחזיר‬ ‫עלינו‬ ‫כאשר‬N‫לבחור‬ ‫צריכים‬ ‫אנו‬‫מאיזה‬‫להתחיל‬ ‫מטבע‬:1,2,‫או‬5
•‫ממטבע‬ ‫נתחיל‬ ‫אם‬5,‫כמות‬ ‫אזי‬‫שצריך‬ ‫המינימלית‬ ‫המטבעות‬‫היא‬1+F(N-5),‫אם‬
‫ממטבע‬ ‫נתחיל‬2‫היא‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫המינימלית‬ ‫כמות‬ ‫אזי‬,1+F(N-2)‫נתחיל‬ ‫ואם‬
‫ממטבע‬1‫אזי‬:1+F(N-1)
•‫איזו‬‫מתוך‬ ‫אפשרות‬3‫נבחר‬?‫זאת‬‫שתיתן‬‫מטבעות‬ ‫של‬ ‫מינימום‬,‫כלומר‬
F(N)=min[ 1+F[N-1],1+F[N-2],1+F[N-5]]
‫עודף‬ ‫החזרת‬ ‫בעיית‬2
•‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N
•‫אלגוריתם‬:
•F(0)=0
•‫לכל‬i=1,2,…N‫נחשב‬F(N)‫שקיבלנו‬ ‫הנוסחאות‬ ‫בעזרת‬
•‫נחזיר‬F(N)
F(N)=min[ 1+F[N-1],1+F[N-2],1+F[N-5]]:N>=5
F(N)=min[ 1+F[N-1],1+F[N-2]]:5>N>=2
F(N)=1+F[N-1]:N>=1
‫עודף‬ ‫החזרת‬ ‫בעיית‬2
http://www.codeskulptor.org/#user42_ctgUPrkKVx_0.py
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬11‫חלק‬6
Debugging
2017
Igor Kleiner
‫מטרה‬
‫ב‬ ‫דיבאגינג‬ ‫לעשות‬ ‫איך‬ ‫ללמוד‬-Spyder
‫בקוד‬ ‫טעויות‬ ‫ולתקן‬ ‫לגלות‬ ‫המאפשר‬ ‫עזר‬ ‫כלי‬ ‫ללמוד‬-‫דיבאגינג‬
‫ב‬ ‫לשימוש‬ ‫דוגמאות‬ ‫לראות‬-Spyder
Debugging
•‫אחרונה‬ ‫בהרצאה‬ ‫למדנו‬ ‫ריצה‬ ‫זמן‬ ‫טעויות‬ ‫לגילוי‬ ‫מהדרכים‬ ‫אחד‬–‫של‬ ‫במנגנון‬ ‫שימוש‬
‫חריגות‬
•‫עזר‬ ‫בכלי‬ ‫שימוש‬ ‫היא‬ ‫נוספת‬ ‫דרך‬–debugger‫המאפשר‬"‫לצפות‬"‫בזמן‬ ‫מחשב‬ ‫בתוך‬
‫טעויות‬ ‫ולגלות‬ ‫קוד‬ ‫של‬ ‫ביצוע‬
•‫בעזרת‬debugger‫שלנו‬ ‫קוד‬ ‫לבצע‬ ‫נוכל‬‫שורה‬‫שורה‬‫בזיכרון‬ ‫קורא‬ ‫מה‬ ‫ולראות‬
‫המחשב‬,‫ורצות‬ ‫נקראות‬ ‫הפונקציות‬ ‫ואיך‬ ‫משתנים‬ ‫של‬ ‫ערכים‬ ‫הם‬ ‫מה‬
•‫דומה‬ ‫זו‬ ‫הגישה‬‫לדרך‬‫של‬VIZUALIZATION‫עבור‬ ‫שלמדנו‬CodeSculptor
Debugging
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
Debugging example 1
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
•‫בעזרת‬ ‫לסיכום‬step‫שורה‬ ‫קוד‬ ‫על‬ ‫לעבור‬ ‫נוכל‬‫שורה‬
•‫אבל‬step‫הפונקציה‬ ‫לתוך‬ ‫להיכנס‬ ‫מאפשר‬ ‫לא‬
•‫שלה‬ ‫עבודה‬ ‫בזמן‬ ‫הפונקציה‬ ‫לתוך‬ ‫להיכנס‬ ‫צורך‬ ‫יש‬ ‫אם‬ ‫נעשה‬ ‫מה‬?
•‫ב‬ ‫נעזר‬-step into
Debugging example 2
•‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
Debugging example 2
•‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
Debugging example 2
•‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
Debugging example 2
•‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
Debugging example 2
•‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
Debugging example 2
•‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
Debugging example 3
•‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬?
Debugging example 3
•‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬?
•‫ב‬ ‫נבדוק‬-debugger
Debugging example 3
•‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬?
•‫ב‬ ‫נבדוק‬-debugger
Debugging example 3
•‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬?
•‫ב‬ ‫נבדוק‬-debugger
•‫קיים‬ ‫שלא‬ ‫איבר‬ ‫למחוק‬ ‫ניסיון‬
Debugging example 3
•‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬?
•‫ב‬ ‫נבדוק‬-debugger
•‫קיים‬ ‫שלא‬ ‫איבר‬ ‫למחוק‬ ‫ניסיון‬
•‫מסקנה‬:‫רשימה‬ ‫לשנות‬ ‫כדאי‬ ‫לא‬‫איטרציה‬ ‫של‬ ‫כערך‬ ‫זמן‬ ‫באותו‬ ‫בו‬ ‫שמשתמשים‬ ‫מילון‬
•‫ומוזרות‬ ‫צפויות‬ ‫לא‬ ‫לתופעות‬ ‫להביא‬ ‫או‬ ‫התוכנה‬ ‫את‬ ‫לשבור‬ ‫יכול‬ ‫זה‬
Break Point
•‫שורה‬ ‫כל‬ ‫של‬ ‫ריצה‬ ‫בתוצאת‬ ‫לצפות‬ ‫רוצים‬ ‫לא‬ ‫פשוט‬ ‫אנו‬ ‫או‬ ‫ארוך‬ ‫שלנו‬ ‫קוד‬ ‫אם‬,‫אפשר‬
‫של‬ ‫במנגנון‬ ‫להשתמש‬"‫עצירה‬ ‫נקודת‬"
•‫נסמן‬‫ל‬-Spyder‫ש‬ ‫נרצה‬ ‫שאנו‬ ‫איפה‬ ‫בקוד‬ ‫החשוב‬ ‫המקום‬ ‫את‬-Spyder‫את‬ ‫יעצור‬
‫קוד‬ ‫לביצוע‬ ‫לעבור‬ ‫לנו‬ ‫ויאפשר‬ ‫קוד‬ ‫של‬ ‫הביצוע‬:‫שורה‬‫שורה‬
Break Point
•‫שורה‬ ‫כל‬ ‫של‬ ‫ריצה‬ ‫בתוצאת‬ ‫לצפות‬ ‫רוצים‬ ‫לא‬ ‫פשוט‬ ‫אנו‬ ‫או‬ ‫ארוך‬ ‫קוד‬ ‫אם‬,‫אפשר‬
‫של‬ ‫במנגנון‬ ‫להשתמש‬"‫עצירה‬ ‫נקודת‬",
•‫ל‬ ‫נסמן‬-Spyder‫ש‬ ‫נרצה‬ ‫שאנו‬ ‫איפה‬ ‫בקוד‬ ‫החשוב‬ ‫המקום‬ ‫את‬-Spyder‫את‬ ‫יעצור‬
‫קוד‬ ‫לביצוע‬ ‫לעבור‬ ‫לנו‬ ‫ויאפשר‬ ‫קוד‬ ‫של‬ ‫הביצוע‬:‫שורה‬‫שורה‬
Break Point
•‫שורה‬ ‫כל‬ ‫של‬ ‫ריצה‬ ‫בתוצאת‬ ‫לצפות‬ ‫רוצים‬ ‫לא‬ ‫פשוט‬ ‫אנו‬ ‫או‬ ‫ארוך‬ ‫קוד‬ ‫אם‬,‫אפשר‬
‫של‬ ‫במנגנון‬ ‫להשתמש‬"‫עצירה‬ ‫נקודת‬"
•‫נסמן‬‫ל‬-Spyder‫ש‬ ‫נרצה‬ ‫שאנו‬ ‫איפה‬ ‫בקוד‬ ‫החשוב‬ ‫המקום‬ ‫את‬-Spyder‫את‬ ‫יעצור‬
‫קוד‬ ‫לביצוע‬ ‫לעבור‬ ‫לנו‬ ‫ויאפשר‬ ‫קוד‬ ‫של‬ ‫הביצוע‬:‫שורה‬‫שורה‬
• Debug->continue->continue
‫סיכום‬
•‫ב‬ ‫להשתמש‬ ‫נוכל‬-Debugger‫של‬Spyder‫טעויות‬ ‫לגלות‬ ‫נצטרך‬ ‫כשאר‬
•‫בעזרת‬debugger‫משתנים‬ ‫של‬ ‫ערכים‬ ‫על‬ ‫משפיעה‬ ‫קוד‬ ‫שורת‬ ‫כל‬ ‫איך‬ ‫לראות‬ ‫נוכל‬
•‫לא‬ ‫או‬ ‫ונכון‬ ‫צפוי‬ ‫השינוי‬ ‫האם‬?
•‫אותה‬ ‫ולתקן‬ ‫בקוד‬ ‫טעות‬ ‫יש‬ ‫איפה‬ ‫להבין‬ ‫נוכל‬
•Debugger‫טעויות‬ ‫לחפש‬ ‫המאפשר‬ ‫היחידי‬ ‫כלי‬ ‫לא‬ ‫הוא‬
•‫קיימים‬‫גם‬‫בקורס‬ ‫אותם‬ ‫נלמד‬ ‫שלא‬ ‫אחרים‬ ‫כלים‬
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬11‫חלק‬7
‫דינמי‬ ‫תכנות‬:‫משחק‬
2017
Igor Kleiner
‫זהב‬ ‫משחק‬
•‫הבא‬ ‫במחשק‬ ‫נסתכל‬:
•‫שלו‬ ‫הדרך‬ ‫בהתחלת‬ ‫נמצא‬ ‫אדם‬ ‫בן‬
•‫בגודל‬ ‫צעד‬ ‫לעשות‬ ‫יכול‬ ‫הוא‬ ‫פעם‬ ‫כל‬1‫או‬3,‫שם‬ ‫שנמצא‬ ‫פרס‬ ‫ומקבל‬ ‫במשבצת‬ ‫נכנס‬ ‫הוא‬ ‫ואז‬
•‫המטרה‬‫היא‬ ‫אדם‬ ‫בן‬ ‫של‬‫להגיע‬‫עם‬ ‫אחרונה‬ ‫למשבצת‬‫מקסימום‬‫מקבל‬ ‫שהוא‬ ‫הפרסים‬ ‫סכום‬ ‫של‬
‫בדרך‬
1 -1 2 -1 -1 2 1 3 4 1
‫זהב‬ ‫משחק‬
•‫הבא‬ ‫במחשק‬ ‫נסתכל‬:
•‫שלו‬ ‫הדרך‬ ‫בהתחלת‬ ‫נמצא‬ ‫אדם‬ ‫בן‬
•‫בגודל‬ ‫צעד‬ ‫לעשות‬ ‫יכול‬ ‫הוא‬ ‫פעם‬ ‫כל‬1‫או‬3‫שם‬ ‫שנמצא‬ ‫פרס‬ ‫ומקבל‬ ‫במשבצת‬ ‫נכנס‬ ‫הוא‬ ‫ואז‬
•‫עם‬ ‫אחרונה‬ ‫למשבצת‬ ‫לעבור‬ ‫היא‬ ‫אדם‬ ‫בן‬ ‫של‬ ‫מטרה‬‫מקסימום‬‫מקבל‬ ‫שהוא‬ ‫הפרסים‬ ‫סכום‬ ‫של‬
‫בדרך‬
•‫הבאות‬ ‫משבצות‬ ‫הולך‬ ‫אדם‬ ‫בן‬ ‫אם‬ ‫למשל‬:3-6-7-10‫פרס‬ ‫יקבל‬ ‫הוא‬:2+2+1+1=6
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫הבא‬ ‫במחשק‬ ‫נסתכל‬:
•‫שלו‬ ‫הדרך‬ ‫בהתחלת‬ ‫נמצא‬ ‫אדם‬ ‫בן‬
•‫בגודל‬ ‫צעד‬ ‫לעשות‬ ‫יכול‬ ‫הוא‬ ‫פעם‬ ‫כל‬1‫או‬3‫שם‬ ‫שנמצא‬ ‫פרס‬ ‫ומקבל‬ ‫במשבצת‬ ‫נכנס‬ ‫הוא‬ ‫ואז‬
•‫עם‬ ‫אחרונה‬ ‫למשבצת‬ ‫לעבור‬ ‫היא‬ ‫אדם‬ ‫בן‬ ‫של‬ ‫מטרה‬‫מקסימום‬‫מקבל‬ ‫שהוא‬ ‫הפרסים‬ ‫סכום‬ ‫של‬
‫בדרך‬
•‫הבאות‬ ‫משבצות‬ ‫הולך‬ ‫אדם‬ ‫בן‬ ‫אם‬ ‫למשל‬:3-6-7-10‫פרס‬ ‫יקבל‬ ‫הוא‬:2+2+1+1=6
•‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫הוא‬ ‫מה‬‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫הוא‬ ‫מה‬‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬
•‫מהגדרות‬ ‫הפתרון‬ ‫את‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הערך‬ ‫את‬‫הטיול‬‫סכום‬ ‫עם‬‫המרבי‬,‫כאשר‬
‫מנקודה‬ ‫מתחיל‬ ‫הטיול‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[?]
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬
•‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬
‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬
‫במשבצת‬ ‫שיש‬j‫ב‬-a[j]
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬
•‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬
‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬
‫במשבצת‬ ‫שיש‬j‫ב‬-a[j].
•‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬:
•F[N]=?
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬
•‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬
‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬
‫במשבצת‬ ‫שיש‬j‫ב‬-a[j].
•‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬:
•F[N]=a[N]
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬
•‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬
‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬
‫במשבצת‬ ‫שיש‬j‫ב‬-a[j].
•‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬:
•F[N]=a[N]
•F[N-1]=?+?
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬
•‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬
‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬
‫במשבצת‬ ‫שיש‬j‫ב‬-a[j].
•‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬:
•F[N]=a[N]
•F[N-1]=a[N-1]+F[N]
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬
•‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬
‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬
‫במשבצת‬ ‫שיש‬j‫ב‬-a[j].
•‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬:
•F[N]=a[N]
•F[N-1]=a[N-1]+F[N]
•F[N-2]=?+?
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬
•‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬
‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬
‫במשבצת‬ ‫שיש‬j‫ב‬-a[j].
•‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬:
•F[N]=a[N]
•F[N-1]=a[N-1]+F[N]
•F[N-2]=a[N-2]+F[N-1]
1 -1 2 -1 -1 2 1 3 4 1
1 2 3 4 5 6 7 8 9 10
‫זהב‬ ‫משחק‬
•‫המטרה‬‫הוא‬ ‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬
‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬
•‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬
‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫שיש‬ ‫כסף‬ ‫נסמן‬ ‫בנוסף‬
‫במשבצת‬j‫ב‬-a[j].
•‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬:
•F[N]=a[N]
•F[N-1]=a[N-1]+F[N]
•F[N-2]=a[N-2]+F[N-1]
•F[N-3]=a[n-3]+max(F[N],F[N-2])
•‫נקבל‬ ‫כללי‬ ‫ובאופן‬:F[i]=a[i]+max(F[[i+3],F[i+1])
•‫התחלה‬ ‫תנאי‬:F[N]=A[N]
‫פתרון‬
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי

More Related Content

More from Igor Kleiner

פתרון תרגיל 3
פתרון תרגיל 3פתרון תרגיל 3
פתרון תרגיל 3Igor Kleiner
 
מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13Igor Kleiner
 
תכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיותתכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיותIgor Kleiner
 
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהתכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהIgor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017Igor Kleiner
 
תכנות מדעי: פייתון: הרצאה 8: 2017
תכנות מדעי: פייתון: הרצאה 8:  2017תכנות מדעי: פייתון: הרצאה 8:  2017
תכנות מדעי: פייתון: הרצאה 8: 2017Igor Kleiner
 
תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017Igor Kleiner
 
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימותתכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימותIgor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017Igor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017Igor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאותמבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאותIgor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017Igor Kleiner
 
פייתון: הרצאה 1
פייתון: הרצאה 1פייתון: הרצאה 1
פייתון: הרצאה 1Igor Kleiner
 
למידה ממוכנת פגישה 8
למידה ממוכנת פגישה 8 למידה ממוכנת פגישה 8
למידה ממוכנת פגישה 8 Igor Kleiner
 
מערכות לומדות פגישה 7-1 יער אקראי
מערכות לומדות פגישה 7-1 יער אקראימערכות לומדות פגישה 7-1 יער אקראי
מערכות לומדות פגישה 7-1 יער אקראיIgor Kleiner
 
מערכות לומדות תרגול 3 עצים
מערכות לומדות תרגול 3 עציםמערכות לומדות תרגול 3 עצים
מערכות לומדות תרגול 3 עציםIgor Kleiner
 
מערכות לומדות פגישה 6
מערכות לומדות פגישה 6מערכות לומדות פגישה 6
מערכות לומדות פגישה 6Igor Kleiner
 
מערכות לומדות: תרגילי כיתה 4 ו-5
מערכות לומדות: תרגילי כיתה 4 ו-5מערכות לומדות: תרגילי כיתה 4 ו-5
מערכות לומדות: תרגילי כיתה 4 ו-5Igor Kleiner
 
מערכות לומדות: תרגיל בית 2
מערכות לומדות: תרגיל בית 2מערכות לומדות: תרגיל בית 2
מערכות לומדות: תרגיל בית 2Igor Kleiner
 
מערכות לומדות פגישה 4 חלק 3
מערכות לומדות פגישה 4 חלק 3מערכות לומדות פגישה 4 חלק 3
מערכות לומדות פגישה 4 חלק 3Igor Kleiner
 

More from Igor Kleiner (20)

פתרון תרגיל 3
פתרון תרגיל 3פתרון תרגיל 3
פתרון תרגיל 3
 
מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13
 
תכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיותתכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיות
 
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהתכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
 
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
 
תכנות מדעי: פייתון: הרצאה 8: 2017
תכנות מדעי: פייתון: הרצאה 8:  2017תכנות מדעי: פייתון: הרצאה 8:  2017
תכנות מדעי: פייתון: הרצאה 8: 2017
 
תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017
 
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימותתכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
 
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
 
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
 
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאותמבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
 
מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017
 
פייתון: הרצאה 1
פייתון: הרצאה 1פייתון: הרצאה 1
פייתון: הרצאה 1
 
למידה ממוכנת פגישה 8
למידה ממוכנת פגישה 8 למידה ממוכנת פגישה 8
למידה ממוכנת פגישה 8
 
מערכות לומדות פגישה 7-1 יער אקראי
מערכות לומדות פגישה 7-1 יער אקראימערכות לומדות פגישה 7-1 יער אקראי
מערכות לומדות פגישה 7-1 יער אקראי
 
מערכות לומדות תרגול 3 עצים
מערכות לומדות תרגול 3 עציםמערכות לומדות תרגול 3 עצים
מערכות לומדות תרגול 3 עצים
 
מערכות לומדות פגישה 6
מערכות לומדות פגישה 6מערכות לומדות פגישה 6
מערכות לומדות פגישה 6
 
מערכות לומדות: תרגילי כיתה 4 ו-5
מערכות לומדות: תרגילי כיתה 4 ו-5מערכות לומדות: תרגילי כיתה 4 ו-5
מערכות לומדות: תרגילי כיתה 4 ו-5
 
מערכות לומדות: תרגיל בית 2
מערכות לומדות: תרגיל בית 2מערכות לומדות: תרגיל בית 2
מערכות לומדות: תרגיל בית 2
 
מערכות לומדות פגישה 4 חלק 3
מערכות לומדות פגישה 4 חלק 3מערכות לומדות פגישה 4 חלק 3
מערכות לומדות פגישה 4 חלק 3
 

מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי

  • 2. ‫השיעור‬ ‫של‬ ‫מטרה‬ ‫קונווי‬ ‫של‬ ‫חיים‬ ‫משחק‬ ‫להכיר‬ ‫חיים‬ ‫למשחק‬ ‫אלגוריתם‬ ‫לפתח‬ ‫המשחק‬ ‫של‬ ‫קוד‬ ‫לפתח‬
  • 5.
  • 6. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫שלנו‬
  • 7. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫הלוח‬ ‫על‬ ‫אקראית‬ ‫מקונפיגורציה‬ ‫יתחיל‬ ‫המשחק‬,‫בהסתברות‬ ‫כאשר‬p‫כל‬ ‫ובהסתברות‬ ‫חייה‬ ‫תהי‬ ‫משבצת‬1-p‫ב‬ ‫באופן‬ ‫מתה‬ ‫תהיה‬ ‫משבצת‬ ‫כל‬"‫ת‬ ‫משבצות‬ ‫בשאר‬
  • 8. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫הלוח‬ ‫על‬ ‫אקראית‬ ‫מקונפיגורציה‬ ‫יתחיל‬ ‫המשחק‬,‫בהסתברות‬ ‫כאשר‬p‫כל‬ ‫ובהסתברות‬ ‫חייה‬ ‫תהי‬ ‫משבצת‬1-p‫ב‬ ‫באופן‬ ‫מתה‬ ‫תהיה‬ ‫משבצת‬ ‫כל‬"‫ת‬ ‫משבצות‬ ‫בשאר‬ •‫הבא‬ ‫דור‬ ‫לחישוב‬ ‫המשחק‬ ‫חוקי‬: •‫למשבצת‬ ‫אם‬‫חייה‬‫מ‬ ‫יותר‬ ‫יש‬-3‫הבא‬ ‫בדור‬ ‫מצפיפות‬ ‫תמות‬ ‫היא‬ ‫שכנים‬ •‫למשבצת‬ ‫אם‬‫חייה‬‫מ‬ ‫פחות‬ ‫יש‬-2‫הבא‬ ‫בדור‬ ‫בידור‬ ‫מחוסר‬ ‫תמות‬ ‫היא‬ ‫שכנים‬ •‫יש‬ ‫מתה‬ ‫למשבצת‬ ‫אם‬3‫תהיה‬ ‫היא‬ ‫הבא‬ ‫בדור‬ ‫אזי‬ ‫שכנים‬‫חייה‬ •‫של‬ ‫המצב‬ ‫המקרים‬ ‫בשאר‬‫המשבצת‬‫משתנה‬ ‫לא‬
  • 9. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
  • 10. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫אותו‬ ‫ונצייר‬
  • 11. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫ונצייר‬‫הלוח‬ ‫את‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
  • 12. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫הלוח‬ ‫את‬ ‫ונצייר‬ •‫עד‬‫נגמר‬ ‫לא‬ ‫שהמשחק‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
  • 13. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫הלוח‬ ‫את‬ ‫ונצייר‬ •‫עד‬‫נגמר‬ ‫לא‬ ‫שהמשחק‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
  • 14. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬ ‫שתי‬ ‫לפחות‬ ‫לממש‬ ‫שנצטרך‬ ‫רואים‬ ‫אנו‬ ‫מכאן‬ ‫פונקציות‬
  • 15. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬ •‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬: •‫רשימה‬ •‫דו‬ ‫רשימה‬‫מימדית‬ •tuple •‫מחרוזת‬ •‫מילון‬ •set
  • 16. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬ •‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬: •‫רשימה‬ •‫דו‬ ‫רשימה‬‫מימדית‬ •tuple •‫מחרוזת‬ •‫מילון‬ •set •‫בעזרת‬ ‫הלוח‬ ‫את‬ ‫נציג‬‫מימדית‬ ‫דו‬ ‫רשימה‬,‫מספר‬ ‫פנימית‬ ‫רשימה‬ ‫כאשר‬i‫תציג‬ ‫לוח‬ ‫של‬ ‫שורה‬‫מספר‬i
  • 17. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬ •‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬: •‫רשימה‬ •‫דו‬ ‫רשימה‬‫מימדית‬ •tuple •‫מחרוזת‬ •‫מילון‬ •set •‫בעזרת‬ ‫הלוח‬ ‫את‬ ‫נציג‬‫מימדית‬ ‫דו‬ ‫רשימה‬,‫מספר‬ ‫פנימית‬ ‫רשימה‬ ‫כאשר‬i‫תציג‬ ‫לוח‬ ‫של‬ ‫שורה‬‫מספר‬i ‫עם‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫הגדרת‬ FALSE‫משבצת‬ ‫בכל‬
  • 18. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬?‫שכנים‬ ‫שלה‬
  • 19. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬
  • 20. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬ •‫בעיה‬ ‫יש‬ ‫אבל‬:
  • 21. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬ •‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬
  • 22. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬ •‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬ 8 5 3
  • 23. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬ •‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬ •‫על‬‫בטריק‬ ‫נעזר‬ ‫בפתרון‬ ‫הכלליות‬ ‫את‬ ‫לשבור‬ ‫לא‬ ‫מנת‬‫הבא‬:‫לוח‬ ‫לייצר‬ ‫במקום‬ ‫בגודל‬n*n‫בגודל‬ ‫לוח‬ ‫נייצר‬n+2‫על‬n+2‫החיצונית‬ ‫המעטפת‬ ‫כאשר‬‫תיהי‬‫כולה‬ False 8 8 8
  • 24. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
  • 25. GenerateNewBoard(n,p) •‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬‫חיה‬p •‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2) •‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False •‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
  • 26. GenerateNewBoard(n,p) •‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p •‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2) •‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False •‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
  • 27. GenerateNewBoard(n,p) •‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p •‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2) •‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False •‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
  • 28. GenerateNewBoard(n,p) •‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p •‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2) •‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False •‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
  • 32. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬ ‫סיימנו‬
  • 33. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
  • 34. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬:
  • 35. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬: •‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
  • 36. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬: •‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬ •‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬ ‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬ ‫שהגדרנו‬
  • 37. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬: •‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬ •‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬ ‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬ ‫שהגדרנו‬
  • 38. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬: •‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬ •‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬ ‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬ ‫שהגדרנו‬
  • 39. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬: •‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬ •‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬ ‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬ ‫שהגדרנו‬
  • 40. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫לסיכום‬:
  • 41. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫לסיכום‬: ‫שתבדוק‬ ‫עזר‬ ‫פונקציית‬ ‫לממש‬ ‫נותר‬ ‫למשבצת‬ ‫יש‬ ‫חיים‬ ‫שכנים‬ ‫כמה‬
  • 42. CalcLiveNeigbours(Board,I,j) •‫מקבלת‬ ‫הפונקציה‬‫לוח‬‫המשחק‬‫של‬ ‫וקואורדינטות‬‫מסוימת‬ ‫משבצת‬, ‫הפונקציה‬‫מחזירה‬‫כמות‬‫החיים‬ ‫השכנים‬‫המשבצת‬ ‫של‬
  • 43. CalcLiveNeigbours(Board,I,j) •‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬ ‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬ •‫אלגוריתם‬:
  • 44. CalcLiveNeigbours(Board,I,j) •‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬ ‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬ •‫אלגוריתם‬: •‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫חיים‬ ‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬
  • 45. CalcLiveNeigbours(Board,I,j) •‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬ ‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬ •‫אלגוריתם‬: •‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬‫חיים‬(‫על‬ ‫לעבור‬ ‫אפשר‬ ‫של‬ ‫מנגנון‬ ‫בעזרת‬ ‫או‬ ‫מקוננת‬ ‫בלולאה‬ ‫או‬ ‫משבצת‬ ‫של‬ ‫השכנים‬(List Comprehension
  • 46. CalcLiveNeigbours(Board,I,j) •‫מקבלת‬ ‫הפונקציה‬‫הפונקציה‬ ‫משבצת‬ ‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬ ‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬ •‫אלגוריתם‬: •‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫חיים‬ ‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬
  • 48. ‫הקוד‬ ‫של‬ ‫סרט‬ • https://www.youtube.com/watch?v=_IPKxsSihFo
  • 49. ‫מדעי‬ ‫לתכנות‬ ‫מבוא‬ ‫הרצאה‬11‫חלק‬2 ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫טיול‬ Self Avoided Random Walks on Grid 2017 Igor Kleiner ©
  • 50. ‫השיעור‬ ‫של‬ ‫מטרה‬ ‫בעיית‬ ‫להכיר‬Self-Avoiding random walk ‫אלגוריתם‬ ‫לפתח‬‫זו‬ ‫בעיה‬ ‫של‬ ‫לסימולציה‬ ‫משבצות‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫המסמלץ‬ ‫קוד‬ ‫לפתח‬
  • 51. Self-Avoiding Random Walk •‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬ ‫קיים‬)
  • 52. Self-Avoiding Random Walk •‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬) •‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬) •‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2
  • 53. Self-Avoiding Random Walk •‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬) •‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬) •‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2 •‫כל‬‫צעד‬‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬, ‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתאי‬ ‫לשם‬ ‫וזז‬ •‫אסור‬‫לכלב‬‫לבקר‬‫באותה‬‫משבצת‬‫יותר‬‫מפעם‬‫אחד‬(‫כלומר‬‫הכלב‬‫זוכר‬‫איפה‬ ‫הוא‬‫היה‬)
  • 54. Self-Avoiding Random Walk •‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬) •‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬) •‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2 •‫כל‬‫צעד‬‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬, ‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתאי‬ ‫לשם‬ ‫וזז‬ •‫אסור‬‫לכלב‬‫לבקר‬‫באותה‬‫משבצת‬‫יותר‬‫מפעם‬‫אחד‬(‫כלומר‬‫הכלב‬‫זוכר‬‫איפה‬‫הוא‬ ‫היה‬) •‫אזי‬‫מ‬ ‫אחד‬ ‫ייתכן‬-2: •‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬–‫ניצחון‬ •‫אין‬‫לכלב‬‫לאן‬‫להתקדם‬-‫הפס‬‫ד‬
  • 55. Self-Avoiding Random Walk •‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬) •‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬) •‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2 •‫כל‬‫צעד‬‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬, ‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתאי‬ ‫לשם‬ ‫וזז‬ •‫אסור‬‫לכלב‬‫לבקר‬‫באותה‬‫משבצת‬‫יותר‬‫מפעם‬‫אחד‬(‫כלומר‬‫הכלב‬‫זוכר‬‫איפה‬‫הוא‬ ‫היה‬) •‫אזי‬‫מ‬ ‫אחד‬ ‫ייתכן‬-2: •‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬–‫ניצחון‬ •‫אין‬‫לכלב‬‫לאן‬‫להתקדם‬–‫הפסד‬
  • 56. Self-Avoiding Random Walk •‫היום‬‫אנו‬‫נכיר‬‫בעיה‬‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬) •‫נתון‬‫לוח‬‫משבצות‬‫בגדול‬n*n(‫עיר‬‫משבצות‬) •‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחל‬ ‫הכלב‬n/2*n/2 •‫כל‬‫צעד‬‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬, ‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתאי‬ ‫לשם‬ ‫וזז‬ •‫אסור‬‫לכלב‬‫לבקר‬‫באותה‬‫משבצת‬‫יותר‬‫מפעם‬‫אחד‬(‫כלומר‬‫הכלב‬‫זוכר‬‫איפה‬‫הוא‬ ‫היה‬) •‫אזי‬‫מ‬ ‫אחד‬ ‫ייתכן‬-2: •‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬–‫ניצחון‬ •‫אין‬‫לכלב‬‫לאן‬‫להתקדם‬–‫הפסד‬
  • 57. Self-Avoiding Random Walk •‫מהי‬‫ההסתברות‬‫שבעיר‬‫בגודל‬n*n‫הכלב‬‫בהצלחה‬ ‫שלו‬ ‫טיול‬ ‫מסיים‬(‫כלומר‬ ‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬)?
  • 58. Self-Avoiding Random Walk •‫מהי‬‫ההסתברות‬‫שבעיר‬‫בגודל‬n*n‫הכלב‬‫בהצלחה‬ ‫שלו‬ ‫טיול‬ ‫מסיים‬(‫כלומר‬ ‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬)? •‫פתרון‬‫לשאלה‬‫זו‬‫עדיין‬‫לא‬‫ידוע‬,‫פעם‬ ‫אף‬ ‫ידוע‬ ‫יהי‬ ‫שלא‬ ‫וייתכן‬ •‫אנו‬‫סימולציה‬ ‫בעזרת‬ ‫זו‬ ‫השאלה‬ ‫על‬ ‫לענות‬ ‫ננסה‬
  • 59. ‫תרגיל‬1 •‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n
  • 60. ‫תרגיל‬1 •‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n •‫רעיון‬‫של‬‫אלגוריתם‬:
  • 61. ‫תרגיל‬1 •‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n •‫רעיון‬‫של‬‫אלגוריתם‬: •‫לוח‬ ‫נבנה‬(‫מימדית‬ ‫דו‬ ‫רשימה‬)‫אותו‬ ‫ונצייר‬ ‫התחלתי‬ ‫מצב‬ ‫שמייצג‬ •‫עד‬‫נגמר‬ ‫לא‬ ‫שהטיול‬,‫אותו‬ ‫ונצייר‬ ‫הבא‬ ‫צעד‬ ‫של‬ ‫לוח‬ ‫נחשב‬ http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
  • 62. ‫תרגיל‬1 •‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n •‫רעיון‬‫של‬‫אלגוריתם‬: •‫לוח‬ ‫נבנה‬(‫מימדית‬ ‫דו‬ ‫רשימה‬)‫מצב‬ ‫שמייצג‬ ‫אותו‬ ‫ונצייר‬ ‫התחלתי‬ •‫עד‬‫נגמר‬ ‫לא‬ ‫שהטיול‬,‫צעד‬ ‫של‬ ‫לוח‬ ‫נחשב‬ ‫אותו‬ ‫ונצייר‬ ‫הבא‬ http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
  • 63. ‫תרגיל‬1 •‫בגודל‬ ‫בעיר‬ ‫כלב‬ ‫של‬ ‫אקראי‬ ‫הילוך‬ ‫שמסמלץ‬ ‫קוד‬ ‫ורושם‬ ‫אלגוריתם‬ ‫פתח‬n*n •‫רעיון‬‫של‬‫אלגוריתם‬: •‫לוח‬ ‫נבנה‬(‫מימדית‬ ‫דו‬ ‫רשימה‬)‫מצב‬ ‫שמייצג‬ ‫אותו‬ ‫ונצייר‬ ‫התחלתי‬ •‫עד‬‫נגמר‬ ‫לא‬ ‫שהטיול‬,‫צעד‬ ‫של‬ ‫לוח‬ ‫נחשב‬ ‫אותו‬ ‫ונצייר‬ ‫הבא‬ http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py
  • 65. DrawWalk http://www.codeskulptor.org/#user43_rqCwbWFg85_1.py ‫ציור‬ ‫כל‬ ‫לאחר‬ ‫זמן‬ ‫פסק‬ ‫נוסיף‬ ‫אנימציה‬ ‫לראות‬ ‫כדי‬
  • 68.
  • 69. ‫תרגיל‬2 •‫מ‬ ‫שונים‬ ‫בגדלים‬ ‫מעיר‬ ‫לצאת‬ ‫כלב‬ ‫של‬ ‫הסתברות‬ ‫שמעריך‬ ‫קוד‬ ‫כתב‬n=5‫עד‬ n=121‫לכל‬n‫לבצע‬ ‫יש‬40000‫הסופיות‬ ‫התוצאות‬ ‫את‬ ‫ולהציג‬ ‫סימולציות‬ ‫גרפית‬ ‫בצורה‬
  • 70.
  • 72. ‫מטרה‬ ‫עם‬ ‫להתמודד‬ ‫איך‬ ‫ללמוד‬‫תוכנה‬ ‫נפילת‬‫ריצה‬ ‫בזמן‬ ‫בפייתון‬ ‫חריגות‬ ‫של‬ ‫מנגנון‬ ‫ללמוד‬ ‫בפייתון‬ ‫טעויות‬ ‫של‬ ‫שונים‬ ‫סוגים‬ ‫להכיר‬
  • 73. ‫תוכנה‬ ‫של‬ ‫ריצה‬ ‫בזמן‬ ‫אם‬ ‫יקרה‬ ‫מה‬‫תתרחש‬‫טעות‬
  • 74. ‫תוכנה‬ ‫של‬ ‫ריצה‬ ‫בזמן‬ ‫אם‬ ‫יקרה‬ ‫מה‬‫תתרחש‬‫טעות‬ •‫מקרים‬ ‫ברוב‬ ‫טעות‬ ‫הודעת‬ ‫נקבל‬
  • 76. ‫בפייתון‬ ‫בקוד‬ ‫טעיות‬ ‫של‬ ‫שונים‬ ‫סוגים‬ ‫סוגים‬ ‫מספר‬ ‫קיים‬‫טעויות‬‫בפייתון‬: • Syntax error • Semantic error Logic error
  • 77. Syntax Error •‫טעויות‬ ‫של‬ ‫הנפוצים‬ ‫מסוגים‬ ‫אחד‬ •‫חוקים‬ ‫לפי‬ ‫לא‬ ‫קוד‬ ‫כותבים‬ ‫אנו‬ ‫כאשר‬ ‫קוראת‬ ‫הטעות‬(‫דקדוק‬ ‫חוקי‬)‫פייתון‬ ‫של‬
  • 78. Semantic Error •‫המתכנת‬ ‫שהתכוון‬ ‫מה‬ ‫לא‬ ‫עושה‬ ‫קוד‬ ‫כאשר‬ ‫שמופיעה‬ ‫טעות‬
  • 79. Exceptions (Run Time Errors) •‫סינטקס‬ ‫טעויות‬ ‫אין‬ ‫בקוד‬ ‫אם‬ ‫אפילו‬,‫נוספות‬ ‫טעויות‬ ‫להתגלות‬ ‫יכולים‬ ‫ריצה‬ ‫בזמן‬ •‫המתרחשות‬ ‫הטעויות‬‫נקראות‬ ‫ריצה‬ ‫בזמן‬‫חריגות‬(exception)
  • 85. ‫מסקנות‬ •‫התוכנה‬ ‫ריצה‬ ‫בזמן‬ ‫טעות‬ ‫יש‬ ‫כאשר‬"‫נופלת‬"‫טעות‬ ‫הודעת‬ ‫מקבל‬ ‫ומשתמש‬ ‫ועוצרת‬ "‫מוזרה‬" •‫נעים‬ ‫לא‬ ‫כזה‬ ‫ניסיון‬ •‫מוזרה‬ ‫בצורה‬ ‫נופלת‬ ‫תוכנה‬ ‫כאשר‬ ‫אוהבים‬ ‫לא‬ ‫רגילים‬ ‫משתמשים‬
  • 86. ‫מסקנות‬ •‫התוכנה‬ ‫ריצה‬ ‫בזמן‬ ‫טעות‬ ‫יש‬ ‫כאשר‬"‫נופלת‬"‫טעות‬ ‫הודעת‬ ‫מקבל‬ ‫ומשתמש‬ ‫ועוצרת‬ "‫מוזרה‬" •‫נעים‬ ‫לא‬ ‫כזה‬ ‫ניסיון‬ •‫מוזרה‬ ‫בצורה‬ ‫נופלת‬ ‫תוכנה‬ ‫כאשר‬ ‫אוהבים‬ ‫לא‬ ‫רגילים‬ ‫משתמשים‬ •‫של‬ ‫מנגנון‬ ‫קיים‬ ‫בפייתון‬‫חריגות‬‫כאלו‬ ‫מקרים‬ ‫עם‬ ‫להתמודד‬ ‫המאפשר‬
  • 89. ‫בחריגות‬ ‫טיפול‬‫בפייתון‬ •‫חריגה‬ ‫שתקרה‬ ‫קטן‬ ‫לא‬ ‫סיכוי‬ ‫יש‬ ‫שבו‬ ‫קוד‬ ‫קטע‬ ‫שיש‬ ‫נניח‬(‫ממשתמש‬ ‫חוקי‬ ‫לא‬ ‫קלט‬, ‫קיים‬ ‫לא‬ ‫קובץ‬,‫ב‬ ‫חלוקה‬-0‫וכו‬') •‫לנסות‬ ‫נוכל‬ ‫אזי‬"‫לתפוס‬"‫ולא‬ ‫שלנו‬ ‫קוד‬ ‫בעזרת‬ ‫בה‬ ‫ולטפל‬ ‫ריצה‬ ‫בזמן‬ ‫החריגה‬ ‫את‬ ‫לתוכנה‬ ‫לתת‬"‫לפול‬" •‫בפקודות‬ ‫נשתמש‬ ‫כך‬ ‫לשם‬try‫ו‬-except
  • 90. ‫בחריגות‬ ‫טיפול‬ ‫מנגנון‬ else is optional finally is optional variable is optional
  • 91. ‫מנגנון‬ ‫של‬ ‫עבודה‬ ‫עקרונות‬:try … except…. .1‫בין‬ ‫קוד‬try‫ו‬-except‫מתבצע‬ .2‫שלב‬ ‫ביצוע‬ ‫בזמן‬ ‫אם‬(1)‫של‬ ‫הבלוקים‬ ‫כל‬ ‫אזי‬ ‫טעות‬ ‫אין‬except‫מתבצעים‬ ‫לא‬ ‫בלוק‬ ‫של‬ ‫קוד‬ ‫ומתבצע‬else .3‫של‬ ‫ביצוע‬ ‫בזמן‬ ‫טעות‬ ‫יש‬ ‫אם‬(1)‫ראשונה‬ ‫טעות‬ ‫יש‬ ‫שבה‬ ‫קוד‬ ‫משורת‬ ‫החל‬ ‫אזי‬ ‫בלוק‬(1)‫של‬ ‫וקוד‬ ‫להתבצע‬ ‫מפסיק‬except‫מתבצע‬ ‫מתאים‬ .4except‫שלה‬ ‫בטיפוס‬ ‫חשיבות‬ ‫ללא‬ ‫כלשהי‬ ‫חריגה‬ ‫עבור‬ ‫מתבצע‬ ‫חריגה‬ ‫של‬ ‫שם‬ ‫ללא‬ .5finally‫מתבצע‬‫תמיד‬,‫לא‬ ‫או‬ ‫חריגה‬ ‫הייתה‬ ‫האם‬ ‫תלות‬ ‫ללא‬
  • 92. ‫חריגות‬ ‫של‬ ‫שונים‬ ‫סוגים‬ .1NameError‫המתאים‬ ‫השמות‬ ‫במרחב‬ ‫נמצא‬ ‫לא‬ ‫משתנה‬ ‫של‬ ‫שם‬ ‫כאשר‬ ‫מתרחשת‬ ‫של‬ ‫חוקים‬ ‫לפי‬scope
  • 93. ‫חריגות‬ ‫של‬ ‫שונים‬ ‫סוגים‬ .1ZeroDivisionError‫ב‬ ‫חלוקה‬ ‫בניסיון‬ ‫מתרחשת‬-0
  • 94. ‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬ ‫קבצים‬
  • 95. ‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬ ‫קבצים‬
  • 96. ‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬ ‫קבצים‬
  • 97. ‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬ ‫קבצים‬ ‫טוב‬ ‫יותר‬ ‫מה‬:2‫או‬ ‫לנפילה‬ ‫אפשרות‬ ‫עם‬ ‫קוד‬ ‫שורות‬8‫בחריגות‬ ‫טיפול‬ ‫עם‬ ‫שורות‬?
  • 98. ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫שונות‬ ‫דוגמאות‬ •‫קובץ‬ ‫פתיחת‬:
  • 99. ‫חריגות‬ ‫של‬ ‫במנגנון‬ ‫נכון‬ ‫לא‬ ‫שימוש‬ •‫קובץ‬ ‫פתיחת‬:
  • 100. ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫שונות‬ ‫דוגמאות‬ •‫טיפוסים‬ ‫והמרת‬ ‫מתמטיות‬ ‫פעולות‬:
  • 101. ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫שונות‬ ‫דוגמאות‬ •‫טיפוסים‬ ‫והמרת‬ ‫מתמטיות‬ ‫פעולות‬:
  • 102. ‫דוגמא‬ •‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬ ‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬ •‫ראשון‬ ‫פתרון‬:
  • 103. ‫דוגמא‬ •‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬ ‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬ •‫קיים‬ ‫לא‬ ‫הקובץ‬ ‫אם‬ ‫יקרה‬ ‫מה‬?
  • 104. ‫דוגמא‬ •‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬ ‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬ •‫קיים‬ ‫לא‬ ‫הקובץ‬ ‫אם‬ ‫יקרה‬ ‫מה‬?‫תיפול‬ ‫התוכנה‬!
  • 105. ‫דוגמא‬ •‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬ ‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬ •‫קיים‬ ‫לא‬ ‫הקובץ‬ ‫אם‬ ‫יקרה‬ ‫מה‬?‫תיפול‬ ‫התוכנה‬! •‫פתרון‬2:
  • 106. ‫דוגמא‬ •‫כתבו‬‫בשם‬ ‫פונקציה‬CountWords‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫מדפיסה‬‫כמות‬ ‫את‬ ‫מסך‬ ‫על‬ ‫בקובץ‬ ‫המילים‬ •‫קיים‬ ‫לא‬ ‫הקובץ‬ ‫אם‬ ‫יקרה‬ ‫מה‬?‫תיפול‬ ‫התוכנה‬! •‫פתרון‬2:
  • 107.
  • 109.
  • 111. ‫מטרה‬ ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫של‬ ‫רקורסיבי‬ ‫פתרון‬ ‫ללמוד‬ ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫להכיר‬
  • 114. Tower of Hanoi simulation https://www.mathsisfun.com/games/towerofhanoi.html A B C
  • 115. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
  • 116. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬?
  • 117. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬? •‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬: •‫אחד‬ ‫דיסק‬ ‫רק‬ ‫יש‬
  • 118. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬? •‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬: •‫אחד‬ ‫דיסק‬ ‫רק‬ ‫יש‬ •‫פתרון‬:‫ממגדל‬ ‫הדיסק‬ ‫את‬ ‫נעביר‬A‫ל‬-‫מגדל‬C A B C
  • 119. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬? •‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬: •‫דיסקים‬ ‫שתי‬ ‫יש‬ A B C
  • 120. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬? •‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬: •‫דיסקים‬ ‫שתי‬ ‫יש‬:‫מ‬ ‫דיסק‬ ‫נעביר‬-A‫ל‬-B‫מ‬ ‫דיסק‬ ‫ואז‬-A‫ל‬-C‫מ‬ ‫דיסק‬ ‫ואז‬-B‫ל‬-C A B C
  • 121. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬? •‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬: •‫דיסקים‬ ‫שלושה‬: A B C
  • 122. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬? •‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬: •‫דיסקים‬ ‫שלושה‬:‫ל‬ ‫גדול‬ ‫דיסק‬ ‫להעביר‬ ‫חייבים‬-C‫עליונים‬ ‫דיסקים‬ ‫משתי‬ ‫מגדל‬ ‫להעביר‬ ‫יש‬ ‫כך‬ ‫לשם‬ ‫ל‬-B(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬)‫מ‬ ‫הגדול‬ ‫הדיסק‬ ‫להעביר‬ ‫ואז‬-A‫ל‬-C(‫קל‬)‫שתי‬ ‫עם‬ ‫מגדל‬ ‫להעביר‬ ‫ואז‬ ‫מ‬ ‫דיסקים‬-B‫ל‬-A(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬) A B C
  • 123. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬? •‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬: •‫דיסקים‬ ‫שלושה‬:‫ל‬ ‫גדול‬ ‫דיסק‬ ‫להעביר‬ ‫חייבים‬-C‫דיסקים‬ ‫משתי‬ ‫מגדל‬ ‫להעביר‬ ‫יש‬ ‫כך‬ ‫לשם‬ ‫ל‬ ‫עליונים‬-B(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬)‫מ‬ ‫הגדול‬ ‫הדיסק‬ ‫להעביר‬ ‫ואז‬-A‫ל‬-C(‫קל‬)‫מגדל‬ ‫להעביר‬ ‫ואז‬ ‫מ‬ ‫דיסקים‬ ‫שתי‬ ‫עם‬-B‫ל‬-A(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬) • Solve(3,a,b,c): • Solve(2,a,c,b) • Solve(1,a,b,c) • Solve(2,b,a,c) ‫מקור‬ ‫יעד‬ ‫מיקום‬ ‫זמני‬
  • 124. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬? •‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬: •4‫דיסקים‬ • Solve(4,a,b,c): • Solve(3,a,c,b) • Solve(1,a,b,c) • Solve(3,b,a,c)
  • 130. ‫האוני‬ ‫מגדלי‬ ‫שכתבנו‬ ‫קוד‬ ‫של‬ ‫יעילות‬ ‫בשאלת‬ ‫נדון‬ ‫כעת‬
  • 131. ‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬ •‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬?
  • 132. ‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬ ‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬? 1 1 2 3 3 7 4 15 5 31 n ?
  • 133. ‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬ ‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬? 1 1 2 3 3 7 4 15 5 31 n 2^n-1
  • 134. ‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬ ‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬? ‫ב‬ ‫נסמן‬-T(N)‫כאשר‬ ‫הדיסקים‬ ‫כל‬ ‫את‬ ‫להעביר‬ ‫מנת‬ ‫על‬ ‫לעשות‬ ‫שיש‬ ‫העברות‬ ‫כמות‬ ‫את‬ ‫סה‬ ‫יש‬"‫כ‬N‫דיסקים‬ ‫אזי‬:
  • 135. ‫האוני‬ ‫מגדלי‬:‫סיבוכיות‬ ‫עם‬ ‫בעיה‬ ‫עבור‬ ‫דיסקים‬ ‫נעביר‬ ‫אנו‬ ‫פעמים‬ ‫כמה‬N‫דיסקים‬? ‫ב‬ ‫נסמן‬-T(N)‫כאשר‬ ‫הדיסקים‬ ‫כל‬ ‫את‬ ‫להעביר‬ ‫מנת‬ ‫על‬ ‫לעשות‬ ‫שיש‬ ‫העברות‬ ‫כמות‬ ‫את‬ ‫סה‬ ‫יש‬"‫כ‬N‫דיסקים‬ ‫אזי‬: T(N)=T(N-1)+T(N-1)+1=2T(N-1)+1=2*(2*T(N-2)+1)=2*(2*(2*T(N-3)+1)+1)+1= =2^3*T(N-3)+7=……2^(N-1)+2^(N-1)-1=2^N-1 ‫עם‬ ‫בעיה‬ ‫לפתור‬ ‫נרצה‬ ‫אם‬ ‫ולכן‬64‫דיסקים‬‫לעשות‬ ‫נצטרך‬2^64-1‫פעולות‬,‫כל‬ ‫כאשר‬ ‫לחכות‬ ‫נצטרך‬ ‫אחד‬ ‫שניה‬ ‫לוקחת‬ ‫פעולה‬584942417355‫שנים‬–‫העולם‬ ‫סוף‬ ‫עד‬
  • 136.
  • 137. ‫מדעי‬ ‫לתכנות‬ ‫מבוא‬ ‫הרצאה‬11‫חלק‬5 ‫דינמי‬ ‫תכנות‬:‫עודף‬ ‫החזרת‬ ‫בעיית‬ 2017 Igor Kleiner
  • 138. ‫מטרה‬ ‫עודף‬ ‫החזרת‬ ‫לבעיית‬ ‫אלגוריתם‬ ‫לפתח‬ ‫דינמי‬ ‫תכנות‬ ‫של‬ ‫עקרונות‬ ‫ללמוד‬ ‫תוכנה‬ ‫לכתוב‬‫לבעיית‬‫עודף‬ ‫החזרת‬
  • 139. ‫דינמי‬ ‫תכנות‬ •‫ספירה‬ ‫או‬ ‫אופטימיזציה‬ ‫מבעיות‬ ‫חלק‬ ‫לפתור‬ ‫המאפשרת‬ ‫שיטה‬ ‫היא‬ ‫דינמי‬ ‫תכנות‬
  • 140. ‫דינמי‬ ‫תכנות‬ •‫ספירה‬ ‫או‬ ‫אופטימיזציה‬ ‫מבעיות‬ ‫חלק‬ ‫לפתור‬ ‫המאפשרת‬ ‫שיטה‬ ‫היא‬ ‫דינמי‬ ‫תכנות‬ •‫חזקה‬ ‫די‬ ‫שני‬ ‫מצעד‬ ‫פשוטה‬ ‫יחסית‬ ‫אחד‬ ‫מצעד‬ ‫שיטה‬
  • 141. ‫דינמי‬ ‫תכנות‬ •‫ספירה‬ ‫או‬ ‫אופטימיזציה‬ ‫מבעיות‬ ‫חלק‬ ‫לפתור‬ ‫המאפשרת‬ ‫שיטה‬ ‫היא‬ ‫דינמי‬ ‫תכנות‬ •‫חזקה‬ ‫די‬ ‫שני‬ ‫מצעד‬ ‫פשוטה‬ ‫יחסית‬ ‫אחד‬ ‫מצעד‬ ‫שיטה‬ •‫אופטימיזציה‬ ‫בעיית‬‫את‬ ‫למזער‬ ‫או‬ ‫למקסם‬ ‫במטרה‬ ‫לפתור‬ ‫רוצים‬ ‫שאנו‬ ‫בעיה‬ ‫היא‬ ‫מטרה‬ ‫פונקציית‬: •‫רווח‬ ‫מקסימום‬ •‫הוצאות‬ ‫מינימום‬ •‫ספירה‬ ‫בעיית‬:‫בעלי‬ ‫אובייקטים‬ ‫כמות‬ ‫לספור‬ ‫רוצים‬ ‫אנו‬ ‫שבה‬ ‫קומבינטורית‬ ‫בעיה‬ ‫נתונה‬ ‫תכונה‬
  • 142. ‫דינמי‬ ‫תכנות‬ •‫כל‬ ‫לא‬ ‫לפתור‬ ‫מאפשרת‬ ‫דינמי‬ ‫תכנות‬‫בעיה‬,‫מיוחדות‬ ‫בעיות‬ ‫אלה‬ •‫מסוימת‬ ‫תכונה‬ ‫עם‬ ‫בעיות‬:‫הבעיות‬ ‫לתתי‬ ‫אופטימליות‬
  • 143. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬ ‫חשוב‬ ‫כן‬ ‫בעודף‬
  • 144. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬ ‫חשוב‬ ‫כן‬ ‫בעודף‬ •‫פתרון‬:
  • 145. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬ ‫חשוב‬ ‫כן‬ ‫בעודף‬ •‫פתרון‬: •‫פרטיים‬ ‫ממקרים‬ ‫נתחיל‬ •‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬0,1,2,3,4,5,6?
  • 146. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬ ‫חשוב‬ ‫כן‬ ‫בעודף‬ •‫פתרון‬: •‫פרטיים‬ ‫ממקרים‬ ‫נתחיל‬ •‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬0,1,2,3,4,5,6? 0 1 2 3 4 5 6
  • 147. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬ ‫חשוב‬ ‫כן‬ ‫בעודף‬ •‫פתרון‬: •‫פרטיים‬ ‫ממקרים‬ ‫נתחיל‬ •‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬0,1,2,3,4,5,6? 0 1 2 3 4 5 6 1 1 2 3 5 9 15
  • 148. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬ ‫חשוב‬ ‫כן‬ ‫בעודף‬ •‫פתרון‬: •‫נסמם‬‫ב‬-F(N)‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫שבעזרתן‬ ‫האפשרויות‬ ‫כמות‬ ‫את‬N •‫את‬ ‫לחשב‬ ‫איך‬ ‫לדעת‬ ‫שלנו‬ ‫מטרה‬F(N)
  • 149. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬ ‫חשוב‬ ‫כן‬ ‫בעודף‬ •‫ב‬ ‫נסמם‬-F(N)‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫שבעזרתן‬ ‫האפשרויות‬ ‫כמות‬ ‫את‬N •‫את‬ ‫לחשב‬ ‫איך‬ ‫לדעת‬ ‫שלנו‬ ‫מטרה‬F(N) •‫עבור‬ ‫נוסחה‬ ‫לכתוב‬ ‫נתחיל‬F(N),‫ש‬ ‫נניח‬-N‫מ‬ ‫גדול‬-5,‫להחזיר‬ ‫אפשר‬ ‫איך‬‫עודף‬N?‫יש‬ ‫ראשון‬ ‫ממטבע‬ ‫להתחיל‬,‫או‬ ‫להיות‬ ‫יכול‬ ‫ראשון‬ ‫מטבע‬1‫או‬2‫או‬5,‫אותו‬ ‫שנחזיר‬ ‫לאחר‬ ‫העודף‬ ‫שאר‬ ‫להחזיר‬ ‫נצטרך‬F(N-1)‫או‬F(N-2)‫או‬F(N-5)‫בהתאמה‬ •‫נסיק‬ ‫מכאן‬(‫הסכום‬ ‫עקרון‬:)F(N)=F(N-1)+F(N-2)+F(N-5)‫עבור‬N>5
  • 150. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫נסיק‬ ‫מכאן‬: • F(N)=F(N-1)+F(N-2)+F(N-5) N>=5 • F(N)=F(N-1)+F(N-2) 5>N>=2 • F(1)=F(0)=1 •‫מקוצר‬ ‫בכתיב‬ ‫או‬: • F(N)=F(N-1)+F(N-2)*I(N>=2)+F(N-5)*I(N>=5) • F(0)=F)1(=1
  • 151. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫מקוצר‬ ‫בכתיב‬ ‫או‬: • F(N)=F(N-1)+F(N-2)*I(N>=2)+F(N-5)*I(N>=5) • F(0)=F1=1 •‫הדגמה‬: F(2)=F(1)+F(0)=2 F(3)=F(2)+F(1)=3 F(4)=F(3)+F(2)=5 F(5)=F(4)+F(3)+F(0)=9 F(6)=F(5)+F(4)+F(1)=15
  • 152. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫הבעיה‬ ‫לפתרון‬ ‫אלגוריתם‬: •‫אתחול‬:‫ריקה‬ ‫רשימה‬ ‫ניקח‬‫שבה‬‫נשמר‬‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬F(n),‫נגדיר‬ F[1]=F[0]=1 •‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬ •‫נחזיר‬F(N)
  • 153. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫אלגוריתם‬: •‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬ F[1]=F[0]=1 •‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬ •‫נחזיר‬F(N)
  • 154. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫אלגוריתם‬: •‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬ F[1]=F[0]=1 •‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬ •‫נחזיר‬F(N)
  • 155. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫אלגוריתם‬: •‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬ F[1]=F[0]=1 •‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬ •‫נחזיר‬F(N)
  • 156. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫אלגוריתם‬: •‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬ F[1]=F[0]=1 •‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬ •‫נחזיר‬F(N)
  • 157. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫אלגוריתם‬: •‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬ F[1]=F[0]=1 •‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬ •‫נחזיר‬F(N)
  • 158. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫אלגוריתם‬: •‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬ F[1]=F[0]=1 •‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬ •‫נחזיר‬F(N) http://www.codeskulptor.org/#user43_vpcANXVCOx_0.py
  • 159. ‫הכללה‬ ‫עודף‬ ‫החזרת‬ ‫בעיית‬ •‫הבעיה‬ ‫את‬ ‫נפתור‬ ‫כעת‬‫עודף‬ ‫החזרת‬ ‫של‬ ‫כללית‬ •‫אלגוריתם‬: •‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬ F[1]=F[0]=1 •‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬ •‫נחזיר‬F(N)
  • 161. ‫עודף‬ ‫החזרת‬ ‫בעיית‬2 •‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N
  • 162. ‫עודף‬ ‫החזרת‬ ‫בעיית‬2 •‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N •‫פתרון‬: •‫פרטים‬ ‫ממקרים‬ ‫נתחיל‬ •‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫מהי‬:0,1,2,3,4,5,6? 0 1 2 3 4 5 6
  • 163. ‫עודף‬ ‫החזרת‬ ‫בעיית‬2 •‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N •‫פתרון‬: •‫פרטים‬ ‫ממקרים‬ ‫נתחיל‬ •‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫מהי‬:0,1,2,3,4,5,6? 0 1 2 3 4 5 6 1 1 1 2 2 1 2
  • 164. ‫עודף‬ ‫החזרת‬ ‫בעיית‬2 •‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N •‫כללית‬ ‫נוסחה‬ ‫לקבל‬ ‫ננסה‬:
  • 165. ‫עודף‬ ‫החזרת‬ ‫בעיית‬2 •‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N •‫כללית‬ ‫נוסחה‬ ‫לקבל‬ ‫ננסה‬: •‫עודף‬ ‫להחזיר‬ ‫עלינו‬ ‫כאשר‬N‫לבחור‬ ‫צריכים‬ ‫אנו‬‫מאיזה‬‫להתחיל‬ ‫מטבע‬:1,2,‫או‬5 •‫ממטבע‬ ‫נתחיל‬ ‫אם‬5,‫כמות‬ ‫אזי‬‫שצריך‬ ‫המינימלית‬ ‫המטבעות‬‫היא‬1+F(N-5),‫אם‬ ‫ממטבע‬ ‫נתחיל‬2‫היא‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫המינימלית‬ ‫כמות‬ ‫אזי‬,1+F(N-2)‫נתחיל‬ ‫ואם‬ ‫ממטבע‬1‫אזי‬:1+F(N-1)
  • 166. ‫עודף‬ ‫החזרת‬ ‫בעיית‬2 •‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬‫בעלי‬‫ערך‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N •‫כללית‬ ‫נוסחה‬ ‫לקבל‬ ‫ננסה‬: •‫עודף‬ ‫להחזיר‬ ‫עלינו‬ ‫כאשר‬N‫לבחור‬ ‫צריכים‬ ‫אנו‬‫מאיזה‬‫להתחיל‬ ‫מטבע‬:1,2,‫או‬5 •‫ממטבע‬ ‫נתחיל‬ ‫אם‬5,‫כמות‬ ‫אזי‬‫שצריך‬ ‫המינימלית‬ ‫המטבעות‬‫היא‬1+F(N-5),‫אם‬ ‫ממטבע‬ ‫נתחיל‬2‫היא‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫המינימלית‬ ‫כמות‬ ‫אזי‬,1+F(N-2)‫נתחיל‬ ‫ואם‬ ‫ממטבע‬1‫אזי‬:1+F(N-1) •‫איזו‬‫מתוך‬ ‫אפשרות‬3‫נבחר‬?‫זאת‬‫שתיתן‬‫מטבעות‬ ‫של‬ ‫מינימום‬,‫כלומר‬ F(N)=min[ 1+F[N-1],1+F[N-2],1+F[N-5]]
  • 167. ‫עודף‬ ‫החזרת‬ ‫בעיית‬2 •‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫כדי‬ ‫שצריך‬ ‫מטבעות‬ ‫של‬ ‫מינימלית‬ ‫כמות‬ ‫היא‬ ‫מה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N •‫אלגוריתם‬: •F(0)=0 •‫לכל‬i=1,2,…N‫נחשב‬F(N)‫שקיבלנו‬ ‫הנוסחאות‬ ‫בעזרת‬ •‫נחזיר‬F(N) F(N)=min[ 1+F[N-1],1+F[N-2],1+F[N-5]]:N>=5 F(N)=min[ 1+F[N-1],1+F[N-2]]:5>N>=2 F(N)=1+F[N-1]:N>=1
  • 169.
  • 171. ‫מטרה‬ ‫ב‬ ‫דיבאגינג‬ ‫לעשות‬ ‫איך‬ ‫ללמוד‬-Spyder ‫בקוד‬ ‫טעויות‬ ‫ולתקן‬ ‫לגלות‬ ‫המאפשר‬ ‫עזר‬ ‫כלי‬ ‫ללמוד‬-‫דיבאגינג‬ ‫ב‬ ‫לשימוש‬ ‫דוגמאות‬ ‫לראות‬-Spyder
  • 172. Debugging •‫אחרונה‬ ‫בהרצאה‬ ‫למדנו‬ ‫ריצה‬ ‫זמן‬ ‫טעויות‬ ‫לגילוי‬ ‫מהדרכים‬ ‫אחד‬–‫של‬ ‫במנגנון‬ ‫שימוש‬ ‫חריגות‬ •‫עזר‬ ‫בכלי‬ ‫שימוש‬ ‫היא‬ ‫נוספת‬ ‫דרך‬–debugger‫המאפשר‬"‫לצפות‬"‫בזמן‬ ‫מחשב‬ ‫בתוך‬ ‫טעויות‬ ‫ולגלות‬ ‫קוד‬ ‫של‬ ‫ביצוע‬ •‫בעזרת‬debugger‫שלנו‬ ‫קוד‬ ‫לבצע‬ ‫נוכל‬‫שורה‬‫שורה‬‫בזיכרון‬ ‫קורא‬ ‫מה‬ ‫ולראות‬ ‫המחשב‬,‫ורצות‬ ‫נקראות‬ ‫הפונקציות‬ ‫ואיך‬ ‫משתנים‬ ‫של‬ ‫ערכים‬ ‫הם‬ ‫מה‬ •‫דומה‬ ‫זו‬ ‫הגישה‬‫לדרך‬‫של‬VIZUALIZATION‫עבור‬ ‫שלמדנו‬CodeSculptor
  • 174. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 175. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 176. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 177. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 178. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 179. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 180. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 181. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 182. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 183. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 184. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 185. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬
  • 186. Debugging example 1 •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:‫עצרת‬ ‫חישוב‬ •‫בעזרת‬ ‫לסיכום‬step‫שורה‬ ‫קוד‬ ‫על‬ ‫לעבור‬ ‫נוכל‬‫שורה‬ •‫אבל‬step‫הפונקציה‬ ‫לתוך‬ ‫להיכנס‬ ‫מאפשר‬ ‫לא‬ •‫שלה‬ ‫עבודה‬ ‫בזמן‬ ‫הפונקציה‬ ‫לתוך‬ ‫להיכנס‬ ‫צורך‬ ‫יש‬ ‫אם‬ ‫נעשה‬ ‫מה‬? •‫ב‬ ‫נעזר‬-step into
  • 187. Debugging example 2 •‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
  • 188. Debugging example 2 •‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
  • 189. Debugging example 2 •‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
  • 190. Debugging example 2 •‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
  • 191. Debugging example 2 •‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
  • 192. Debugging example 2 •‫הפונקציה‬ ‫בתוך‬ ‫קורה‬ ‫מה‬ ‫לראות‬ ‫גם‬ ‫נרצה‬ ‫כעת‬
  • 193. Debugging example 3 •‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬?
  • 194. Debugging example 3 •‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬? •‫ב‬ ‫נבדוק‬-debugger
  • 195. Debugging example 3 •‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬? •‫ב‬ ‫נבדוק‬-debugger
  • 196. Debugging example 3 •‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬? •‫ב‬ ‫נבדוק‬-debugger •‫קיים‬ ‫שלא‬ ‫איבר‬ ‫למחוק‬ ‫ניסיון‬
  • 197. Debugging example 3 •‫הבא‬ ‫בקוד‬ ‫בעיה‬ ‫מה‬? •‫ב‬ ‫נבדוק‬-debugger •‫קיים‬ ‫שלא‬ ‫איבר‬ ‫למחוק‬ ‫ניסיון‬ •‫מסקנה‬:‫רשימה‬ ‫לשנות‬ ‫כדאי‬ ‫לא‬‫איטרציה‬ ‫של‬ ‫כערך‬ ‫זמן‬ ‫באותו‬ ‫בו‬ ‫שמשתמשים‬ ‫מילון‬ •‫ומוזרות‬ ‫צפויות‬ ‫לא‬ ‫לתופעות‬ ‫להביא‬ ‫או‬ ‫התוכנה‬ ‫את‬ ‫לשבור‬ ‫יכול‬ ‫זה‬
  • 198. Break Point •‫שורה‬ ‫כל‬ ‫של‬ ‫ריצה‬ ‫בתוצאת‬ ‫לצפות‬ ‫רוצים‬ ‫לא‬ ‫פשוט‬ ‫אנו‬ ‫או‬ ‫ארוך‬ ‫שלנו‬ ‫קוד‬ ‫אם‬,‫אפשר‬ ‫של‬ ‫במנגנון‬ ‫להשתמש‬"‫עצירה‬ ‫נקודת‬" •‫נסמן‬‫ל‬-Spyder‫ש‬ ‫נרצה‬ ‫שאנו‬ ‫איפה‬ ‫בקוד‬ ‫החשוב‬ ‫המקום‬ ‫את‬-Spyder‫את‬ ‫יעצור‬ ‫קוד‬ ‫לביצוע‬ ‫לעבור‬ ‫לנו‬ ‫ויאפשר‬ ‫קוד‬ ‫של‬ ‫הביצוע‬:‫שורה‬‫שורה‬
  • 199. Break Point •‫שורה‬ ‫כל‬ ‫של‬ ‫ריצה‬ ‫בתוצאת‬ ‫לצפות‬ ‫רוצים‬ ‫לא‬ ‫פשוט‬ ‫אנו‬ ‫או‬ ‫ארוך‬ ‫קוד‬ ‫אם‬,‫אפשר‬ ‫של‬ ‫במנגנון‬ ‫להשתמש‬"‫עצירה‬ ‫נקודת‬", •‫ל‬ ‫נסמן‬-Spyder‫ש‬ ‫נרצה‬ ‫שאנו‬ ‫איפה‬ ‫בקוד‬ ‫החשוב‬ ‫המקום‬ ‫את‬-Spyder‫את‬ ‫יעצור‬ ‫קוד‬ ‫לביצוע‬ ‫לעבור‬ ‫לנו‬ ‫ויאפשר‬ ‫קוד‬ ‫של‬ ‫הביצוע‬:‫שורה‬‫שורה‬
  • 200. Break Point •‫שורה‬ ‫כל‬ ‫של‬ ‫ריצה‬ ‫בתוצאת‬ ‫לצפות‬ ‫רוצים‬ ‫לא‬ ‫פשוט‬ ‫אנו‬ ‫או‬ ‫ארוך‬ ‫קוד‬ ‫אם‬,‫אפשר‬ ‫של‬ ‫במנגנון‬ ‫להשתמש‬"‫עצירה‬ ‫נקודת‬" •‫נסמן‬‫ל‬-Spyder‫ש‬ ‫נרצה‬ ‫שאנו‬ ‫איפה‬ ‫בקוד‬ ‫החשוב‬ ‫המקום‬ ‫את‬-Spyder‫את‬ ‫יעצור‬ ‫קוד‬ ‫לביצוע‬ ‫לעבור‬ ‫לנו‬ ‫ויאפשר‬ ‫קוד‬ ‫של‬ ‫הביצוע‬:‫שורה‬‫שורה‬ • Debug->continue->continue
  • 201. ‫סיכום‬ •‫ב‬ ‫להשתמש‬ ‫נוכל‬-Debugger‫של‬Spyder‫טעויות‬ ‫לגלות‬ ‫נצטרך‬ ‫כשאר‬ •‫בעזרת‬debugger‫משתנים‬ ‫של‬ ‫ערכים‬ ‫על‬ ‫משפיעה‬ ‫קוד‬ ‫שורת‬ ‫כל‬ ‫איך‬ ‫לראות‬ ‫נוכל‬ •‫לא‬ ‫או‬ ‫ונכון‬ ‫צפוי‬ ‫השינוי‬ ‫האם‬? •‫אותה‬ ‫ולתקן‬ ‫בקוד‬ ‫טעות‬ ‫יש‬ ‫איפה‬ ‫להבין‬ ‫נוכל‬ •Debugger‫טעויות‬ ‫לחפש‬ ‫המאפשר‬ ‫היחידי‬ ‫כלי‬ ‫לא‬ ‫הוא‬ •‫קיימים‬‫גם‬‫בקורס‬ ‫אותם‬ ‫נלמד‬ ‫שלא‬ ‫אחרים‬ ‫כלים‬
  • 202.
  • 204. ‫זהב‬ ‫משחק‬ •‫הבא‬ ‫במחשק‬ ‫נסתכל‬: •‫שלו‬ ‫הדרך‬ ‫בהתחלת‬ ‫נמצא‬ ‫אדם‬ ‫בן‬ •‫בגודל‬ ‫צעד‬ ‫לעשות‬ ‫יכול‬ ‫הוא‬ ‫פעם‬ ‫כל‬1‫או‬3,‫שם‬ ‫שנמצא‬ ‫פרס‬ ‫ומקבל‬ ‫במשבצת‬ ‫נכנס‬ ‫הוא‬ ‫ואז‬ •‫המטרה‬‫היא‬ ‫אדם‬ ‫בן‬ ‫של‬‫להגיע‬‫עם‬ ‫אחרונה‬ ‫למשבצת‬‫מקסימום‬‫מקבל‬ ‫שהוא‬ ‫הפרסים‬ ‫סכום‬ ‫של‬ ‫בדרך‬ 1 -1 2 -1 -1 2 1 3 4 1
  • 205. ‫זהב‬ ‫משחק‬ •‫הבא‬ ‫במחשק‬ ‫נסתכל‬: •‫שלו‬ ‫הדרך‬ ‫בהתחלת‬ ‫נמצא‬ ‫אדם‬ ‫בן‬ •‫בגודל‬ ‫צעד‬ ‫לעשות‬ ‫יכול‬ ‫הוא‬ ‫פעם‬ ‫כל‬1‫או‬3‫שם‬ ‫שנמצא‬ ‫פרס‬ ‫ומקבל‬ ‫במשבצת‬ ‫נכנס‬ ‫הוא‬ ‫ואז‬ •‫עם‬ ‫אחרונה‬ ‫למשבצת‬ ‫לעבור‬ ‫היא‬ ‫אדם‬ ‫בן‬ ‫של‬ ‫מטרה‬‫מקסימום‬‫מקבל‬ ‫שהוא‬ ‫הפרסים‬ ‫סכום‬ ‫של‬ ‫בדרך‬ •‫הבאות‬ ‫משבצות‬ ‫הולך‬ ‫אדם‬ ‫בן‬ ‫אם‬ ‫למשל‬:3-6-7-10‫פרס‬ ‫יקבל‬ ‫הוא‬:2+2+1+1=6 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 206. ‫זהב‬ ‫משחק‬ •‫הבא‬ ‫במחשק‬ ‫נסתכל‬: •‫שלו‬ ‫הדרך‬ ‫בהתחלת‬ ‫נמצא‬ ‫אדם‬ ‫בן‬ •‫בגודל‬ ‫צעד‬ ‫לעשות‬ ‫יכול‬ ‫הוא‬ ‫פעם‬ ‫כל‬1‫או‬3‫שם‬ ‫שנמצא‬ ‫פרס‬ ‫ומקבל‬ ‫במשבצת‬ ‫נכנס‬ ‫הוא‬ ‫ואז‬ •‫עם‬ ‫אחרונה‬ ‫למשבצת‬ ‫לעבור‬ ‫היא‬ ‫אדם‬ ‫בן‬ ‫של‬ ‫מטרה‬‫מקסימום‬‫מקבל‬ ‫שהוא‬ ‫הפרסים‬ ‫סכום‬ ‫של‬ ‫בדרך‬ •‫הבאות‬ ‫משבצות‬ ‫הולך‬ ‫אדם‬ ‫בן‬ ‫אם‬ ‫למשל‬:3-6-7-10‫פרס‬ ‫יקבל‬ ‫הוא‬:2+2+1+1=6 •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫הוא‬ ‫מה‬‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 207. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫הוא‬ ‫מה‬‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ •‫מהגדרות‬ ‫הפתרון‬ ‫את‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הערך‬ ‫את‬‫הטיול‬‫סכום‬ ‫עם‬‫המרבי‬,‫כאשר‬ ‫מנקודה‬ ‫מתחיל‬ ‫הטיול‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[?] 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 208. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬ ‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬ ‫במשבצת‬ ‫שיש‬j‫ב‬-a[j] 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 209. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬ ‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬ ‫במשבצת‬ ‫שיש‬j‫ב‬-a[j]. •‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬: •F[N]=? 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 210. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬ ‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬ ‫במשבצת‬ ‫שיש‬j‫ב‬-a[j]. •‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬: •F[N]=a[N] 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 211. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬ ‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬ ‫במשבצת‬ ‫שיש‬j‫ב‬-a[j]. •‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬: •F[N]=a[N] •F[N-1]=?+? 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 212. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬ ‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬ ‫במשבצת‬ ‫שיש‬j‫ב‬-a[j]. •‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬: •F[N]=a[N] •F[N-1]=a[N-1]+F[N] 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 213. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬ ‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬ ‫במשבצת‬ ‫שיש‬j‫ב‬-a[j]. •‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬: •F[N]=a[N] •F[N-1]=a[N-1]+F[N] •F[N-2]=?+? 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 214. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬ ‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫כסף‬ ‫נסמן‬ ‫בנוסף‬ ‫במשבצת‬ ‫שיש‬j‫ב‬-a[j]. •‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬: •F[N]=a[N] •F[N-1]=a[N-1]+F[N] •F[N-2]=a[N-2]+F[N-1] 1 -1 2 -1 -1 2 1 3 4 1 1 2 3 4 5 6 7 8 9 10
  • 215. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫הוא‬ ‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-F[i]‫הטיול‬ ‫כאשר‬ ‫המרבי‬ ‫סכום‬ ‫עם‬ ‫המסלול‬ ‫הערך‬ ‫את‬ ‫מנקודה‬ ‫מתחיל‬i‫בנקודה‬ ‫ומסתיים‬N.‫לחשב‬ ‫שלנו‬ ‫המטרה‬ ‫אזי‬F[0],‫שיש‬ ‫כסף‬ ‫נסמן‬ ‫בנוסף‬ ‫במשבצת‬j‫ב‬-a[j]. •‫מהסוף‬ ‫השאלה‬ ‫את‬ ‫לפתור‬ ‫נתחיל‬: •F[N]=a[N] •F[N-1]=a[N-1]+F[N] •F[N-2]=a[N-2]+F[N-1] •F[N-3]=a[n-3]+max(F[N],F[N-2]) •‫נקבל‬ ‫כללי‬ ‫ובאופן‬:F[i]=a[i]+max(F[[i+3],F[i+1]) •‫התחלה‬ ‫תנאי‬:F[N]=A[N]