SlideShare ist ein Scribd-Unternehmen logo
1 von 162
Downloaden Sie, um offline zu lesen
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬12‫חלק‬1
‫רקורסיה‬:‫נוספות‬ ‫דוגמאות‬
2018
Igor Kleiner
‫חישוב‬‫שורש‬:‫שיטת‬‫רפסון‬ ‫ניוטון‬
•‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬
•‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחת‬
•‫רקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬
‫חישוב‬‫שורש‬:‫שיטת‬‫רפסון‬ ‫ניוטון‬
•‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬
•‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחת‬
•‫רקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬
•‫ממספר‬ ‫שורש‬ ‫לחישוב‬ ‫אלגוריתם‬a
•‫התחלתי‬ ‫מניחוש‬ ‫נתחיל‬x.
•‫עוד‬ ‫כל‬abs(x^2-a)‫מ‬ ‫גדול‬-epsilon‫ל‬ ‫חדש‬ ‫ערך‬ ‫נחשב‬-x‫הבאה‬ ‫נוסחה‬ ‫בעזרת‬:x=1/2(x+a/x)
‫רפסון‬ ‫ניוטון‬ ‫ששיטת‬ ‫שורש‬ ‫חישוב‬
•‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬
•‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחד‬
•‫הרקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬
•‫ממספר‬ ‫שורש‬ ‫לחישוב‬ ‫אלגוריתם‬a
•‫התחלתי‬ ‫מניחוש‬ ‫נתחיל‬x.
•‫עוד‬ ‫כל‬abs(x^2-a)‫מ‬ ‫גדול‬-epsilon‫ל‬ ‫חדש‬ ‫ערך‬ ‫נחשב‬-x‫הבאה‬ ‫נוסחה‬ ‫בעזרת‬:x=1/2(x+a/x)
http://www.codeskulptor.org/#user44_gVh7uI6o7fOJqq4.py
‫רפסון‬ ‫ניוטון‬ ‫ששיטת‬ ‫שורש‬ ‫חישוב‬
•‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬
•‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחד‬
•‫הרקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬
•‫ממספר‬ ‫שורש‬ ‫לחישוב‬ ‫אלגוריתם‬A
•‫התחלתי‬ ‫מניחוש‬ ‫נתחיל‬x.
•‫עוד‬ ‫כל‬abs(x^2-a)‫מ‬ ‫גדול‬-epsilon‫ל‬ ‫חדש‬ ‫ערך‬ ‫נחשב‬-x‫הבאה‬ ‫נוסחה‬ ‫בעזרת‬:x=1/2(x+a/x)
http://www.codeskulptor.org/#user44_gVh7uI6o7fOJqq4.py
‫החזרת‬‫עודף‬-‫רקורסיבי‬ ‫פתרון‬
‫עודף‬ ‫החזרת‬
•‫כל‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתבו‬‫האפשרויות‬‫עודף‬ ‫להחזיר‬N
‫מטבעות‬ ‫בעזרת‬1,2,5
‫עודף‬ ‫החזרת‬
•‫עודף‬ ‫להחזיר‬ ‫אפשרויות‬ ‫כל‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתבו‬
N‫מטבעות‬ ‫בעזרת‬1,2,5
http://www.codeskulptor.org/#user44_4d4p0BUt7OJH0YZ_0.py
‫עודף‬ ‫החזרת‬
•‫עודף‬ ‫להחזיר‬ ‫אפשרויות‬ ‫כל‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתבו‬
N‫מטבעות‬ ‫בעזרת‬1,2,5
http://www.codeskulptor.org/#user44_4d4p0BUt7OJH0YZ_0.py
‫מחרוזת‬ ‫של‬ ‫אורך‬
•‫כתבו‬‫פונקציות‬‫אורך‬ ‫ומחזירה‬ ‫מחרוזת‬ ‫שמקבלת‬ ‫ורקורסיבית‬ ‫איטרטיבית‬
‫של‬‫המחרוזת‬
‫מחרוזת‬ ‫של‬ ‫אורך‬
•‫אורך‬ ‫ומחזירה‬ ‫מחרוזת‬ ‫שמקבלת‬ ‫ורקורסיבית‬ ‫איטרטיבית‬ ‫פונקציות‬ ‫כתבו‬
‫המחרוזת‬ ‫של‬
http://www.codeskulptor.org/#user44_4d4p0BUt7OJH0YZ_1.py
‫הבאה‬ ‫פונקציה‬ ‫בעזרת‬ ‫עצרת‬ ‫בחישוב‬ ‫בעיה‬ ‫מצא‬
‫הבאה‬ ‫פונקציה‬ ‫בעזרת‬ ‫עצרת‬ ‫בחישוב‬ ‫בעיה‬ ‫מצא‬
‫הבאה‬ ‫פונקציה‬ ‫בעזרת‬ ‫עצרת‬ ‫בחישוב‬ ‫בעיה‬ ‫מצא‬
12!
11!
10!
-100!
….
….
‫המחלק‬ ‫חישוב‬‫ביותר‬ ‫הגדול‬ ‫המשותף‬
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A
‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬:
•10,20-?
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A
‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬:
•10,20-?10
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A
‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬:
•10,20-?10
•11,13-?
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A
‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬:
•10,20-?10
•11,13-?1
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A
‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬:
•10,20-?10
•11,13-?1
•27,15-?
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A
‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬:
•10,20-?10
•11,13-?1
•27,15-?5
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A
‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אפשר‬ ‫איך‬?
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫בגדול‬ ‫המחלק‬‫ביותר‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A‫ו‬-B‫הוא‬
‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אפשר‬ ‫איך‬?
•‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid:
•‫האלגוריתם‬:
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫הוא‬
‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬?
•‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid:
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫דוגמא‬:
gcd(20,5)=gcd(?,?)
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫הוא‬
‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬?
•‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid:
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫דוגמא‬:
gcd(20,5)=gcd(5,0)=?
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫הוא‬
‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬?
•‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid:
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫דוגמא‬:
gcd(20,5)=gcd(5,0)=5
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬
‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬?
•‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid:
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫דוגמא‬:
gcd(20,5)=gcd(5,0)=5
gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬
‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬?
•‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid:
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫דוגמא‬:
gcd(20,5)=gcd(5,0)=5
gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬
‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬?
•‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid:
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫דוגמא‬:
gcd(20,5)=gcd(5,0)=5
gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬
‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬?
•‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid:
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫דוגמא‬:
gcd(20,5)=gcd(5,0)=5
gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
•‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬
‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬
•‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬?
•‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid:
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫דוגמא‬:
gcd(20,5)=gcd(5,0)=5
gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫תמורות‬-permutation
‫תמורות‬-permutation
•‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬
‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
‫תמורות‬-permutation
•‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬
‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
‫תמורות‬-permutation
•‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬
‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
‫תמורות‬-permutation
•‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬
‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
‫תמורות‬-permutation
•‫חיובי‬ ‫שלם‬ ‫מספר‬ ‫שמקבלת‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתב‬n
•‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬ ‫כל‬ ‫רשימת‬ ‫ומחזירה‬-1‫עד‬n
‫נוסף‬ ‫מימוש‬
‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬
‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬
•‫כבר‬ ‫ראינו‬2‫לפונקציה‬ ‫מימושים‬‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬‫פיבונאצ‬ ‫סדרת‬'‫י‬
•‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬
•‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬
‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬
•‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬
•‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬
•‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬
‫מימוש‬‫לא‬‫יעיל‬
‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬
•‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬
•‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬
•‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬
•‫הזה‬ ‫בחישוב‬ ‫בעיה‬ ‫מה‬?
‫מימוש‬‫לא‬‫יעיל‬
‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬
•‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬
•‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬
•‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬
•‫הזה‬ ‫בחישוב‬ ‫בעיה‬ ‫מה‬?
•‫עבור‬ ‫רקורסיביות‬ ‫קריאות‬ ‫שכמות‬ ‫להראות‬ ‫אפשר‬N‫ל‬ ‫שבווה‬ ‫בערך‬1.6^N
‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬
•‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬
•‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬
•‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬
•‫הזה‬ ‫בחישוב‬ ‫בעיה‬ ‫מה‬?
•‫עבור‬ ‫רקורסיביות‬ ‫קריאות‬ ‫שכמות‬ ‫להראות‬ ‫אפשר‬N‫ל‬ ‫שבווה‬ ‫בערך‬1.6^N
•‫הבעיה‬:‫חוזרים‬ ‫חישובים‬ ‫היא‬–‫חוזרים‬ ‫חישובים‬ ‫את‬ ‫נשמור‬ ‫הבעיה‬ ‫את‬ ‫לפתור‬ ‫כדי‬
‫עזר‬ ‫ברשימת‬
‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬
•‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫שמשחב‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬
•‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬
•‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬
•‫הזה‬ ‫בחישוב‬ ‫בעיה‬ ‫מה‬?
•‫עבור‬ ‫רקורסיביות‬ ‫קריאות‬ ‫שכמות‬ ‫להראות‬ ‫אפשר‬N‫ל‬ ‫שבווה‬ ‫בערך‬1.6^N
•‫הבעיה‬:‫חוזרים‬ ‫חישובים‬ ‫היא‬–‫חוזרים‬ ‫חישובים‬ ‫את‬ ‫נשמור‬ ‫הבעיה‬ ‫את‬ ‫לפתור‬ ‫כדי‬
‫עזר‬ ‫ברשימת‬Fiblist=[]
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬12‫חלק‬2
‫דינמי‬ ‫תכנות‬:‫זהב‬ ‫משחק‬
2018
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]
‫פתרון‬
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬12‫חלק‬3
‫קבוצה‬:SET
2018
Igor Kleiner ©
‫השיעור‬ ‫של‬ ‫מטרה‬
‫חדש‬ ‫נתונים‬ ‫מבנה‬ ‫ללמוד‬-‫קבוצה‬
‫ושימושיהם‬ ‫קבוצות‬ ‫של‬ ‫מתודות‬ ‫ללמוד‬
‫קפואות‬ ‫קבוצות‬ ‫ללמוד‬
‫השיעור‬ ‫של‬ ‫מטרה‬
•‫אוסף‬ ‫היא‬ ‫קבוצה‬(‫סדר‬ ‫אין‬)‫איברים‬ ‫של‬,‫יותר‬ ‫לא‬ ‫בקבוצה‬ ‫מופיע‬ ‫איבר‬ ‫כל‬ ‫כאשר‬
‫אחד‬ ‫מפעם‬
•‫לשינוי‬ ‫ניתן‬ ‫שלא‬ ‫מטיפוס‬ ‫להיות‬ ‫חייבים‬ ‫בקבוצה‬ ‫האיברים‬
‫השיעור‬ ‫של‬ ‫מטרה‬
•‫אוסף‬ ‫היא‬ ‫קבוצה‬(‫סדר‬ ‫אין‬)‫איברים‬ ‫של‬,‫אחד‬ ‫מפעם‬ ‫יותר‬ ‫לא‬ ‫מופיע‬ ‫איבר‬ ‫כל‬ ‫כאשר‬
•‫במתמטיקה‬ ‫שמגדירים‬ ‫בקבוצות‬ ‫למישוש‬ ‫ונוחה‬ ‫טבעית‬ ‫מאוד‬ ‫זו‬ ‫ההגדרה‬
‫קבוצות‬ ‫הגדרת‬
‫קבוצות‬ ‫הגדרת‬
‫קבוצות‬ ‫הגדרת‬
‫ריקה‬ ‫קבוצה‬ ‫הגדרת‬
‫קבוצות‬ ‫של‬ ‫מתודות‬
‫קבוצות‬ ‫על‬ ‫לפעולות‬ ‫דומות‬ ‫המתודות‬
‫הסתברות‬ ‫בקורס‬ ‫אותם‬ ‫שלמדנו‬
‫קבוצות‬ ‫של‬ ‫מתודות‬-‫דוגמאות‬
‫קבוצות‬ ‫של‬ ‫מתודות‬-‫דוגמאות‬
‫קבוצות‬ ‫של‬ ‫מתודות‬-‫דוגמאות‬
‫קבוצות‬ ‫של‬ ‫מתודות‬-‫דוגמאות‬
‫קבוצות‬ ‫של‬ ‫מתודות‬-‫דוגמאות‬
‫קבוצות‬ ‫של‬ ‫מתודות‬-‫דוגמאות‬
‫קבוצות‬ ‫של‬ ‫מתודות‬-‫דוגמאות‬
‫קבוצות‬ ‫של‬ ‫מתודות‬-‫דוגמאות‬
‫מנגנון‬ ‫בעזרת‬ ‫קבוצה‬ ‫הגדרת‬‫של‬Set
Comprehension
•‫של‬ ‫למנגנון‬ ‫בדומה‬ListComprehension‫קבוצות‬ ‫גם‬ ‫להגדיר‬ ‫ניתן‬(‫וגם‬
‫מילונים‬)
‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬
•‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫שונות‬ ‫מילים‬ ‫כמות‬
‫ברשימה‬
‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬
•‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫שונות‬ ‫מילים‬ ‫כמות‬
‫ברשימה‬
•‫אלגוריתם‬:
•‫לקבוצה‬ ‫אותה‬ ‫ונוסיף‬ ‫ברשימה‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬
•‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬
‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬
•‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫שונות‬ ‫מילים‬ ‫כמות‬
‫ברשימה‬
•‫אלגוריתם‬:
•‫לקבוצה‬ ‫אותה‬ ‫ונוסיף‬ ‫ברשימה‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬
•‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬
‫תרגיל‬:‫קבוצה‬‫ברשימה‬ ‫שונות‬ ‫מילים‬
•‫פונקציה‬ ‫כתב‬‫רקורסיבית‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫המילים‬ ‫כל‬ ‫קבוצת‬
‫ברשימה‬
•‫רקורסיבי‬ ‫אלגוריתם‬:
‫תרגיל‬:‫קבוצה‬‫ברשימה‬ ‫שונות‬ ‫מילים‬
•‫רקורסיבית‬ ‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫המילים‬ ‫כל‬ ‫קבוצת‬
‫ברשימה‬
•‫רקורסיבי‬ ‫אלגוריתם‬:
•‫תנאי‬‫עצירה‬:‫ריקה‬ ‫קבוצה‬ ‫נחזיר‬ ‫ריקה‬ ‫הרשימה‬ ‫אם‬
•‫ראשון‬ ‫איבר‬ ‫ללא‬ ‫רקורסיבית‬ ‫קראיה‬ ‫של‬ ‫לתוצאה‬ ‫ראשון‬ ‫איבר‬ ‫נוסיף‬
‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬
•‫רקורסיבית‬ ‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫כל‬ ‫קבוצת‬
‫ברשימה‬ ‫המילים‬
•‫רקורסיבי‬ ‫אלגוריתם‬:
•‫עצירה‬ ‫תנאי‬:‫ריקה‬ ‫קבוצה‬ ‫נחזיר‬ ‫ריקה‬ ‫הרשימה‬ ‫אם‬
•‫ראשון‬ ‫איבר‬ ‫ללא‬ ‫רקורסיבית‬ ‫קראיה‬ ‫של‬ ‫לתוצאה‬ ‫ראשון‬ ‫איבר‬ ‫נוסיף‬
‫תרגיל‬:‫קבוצ‬‫ת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬
•‫כתבו‬‫פונקציה‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬,
‫כאשר‬‫לקבוצה‬ ‫להוסיף‬ ‫יש‬‫באורך‬ ‫מילים‬ ‫רק‬4‫יותר‬ ‫או‬
‫תרגיל‬:‫קבוצ‬‫ת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬
•‫פונקציה‬ ‫כתבו‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬,
‫באורך‬ ‫מילים‬ ‫רק‬ ‫לקבוצה‬ ‫להוסיף‬ ‫יש‬ ‫כאשר‬4‫יותר‬ ‫או‬
•‫אלגוריתם‬:
‫תרגיל‬:‫קבוצת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬
•‫פונקציה‬ ‫כתבו‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬,
‫באורך‬ ‫מילים‬ ‫רק‬ ‫לקבוצה‬ ‫להוסיף‬ ‫יש‬ ‫כאשר‬4‫יותר‬ ‫או‬
•‫אלגוריתם‬:
•‫לקריאה‬ ‫קובץ‬ ‫נפתח‬
•‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬
•‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
‫תרגיל‬:‫קבוצת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬
•‫פונקציה‬ ‫כתבו‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬,
‫באורך‬ ‫מילים‬ ‫רק‬ ‫לקבוצה‬ ‫להוסיף‬ ‫יש‬ ‫כאשר‬4‫יותר‬ ‫או‬
•‫אלגוריתם‬:
•‫לקריאה‬ ‫קובץ‬ ‫נפתח‬
•‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬
•‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
‫תרגיל‬:‫קבוצת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬
•‫פונקציה‬ ‫כתבו‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬,
‫באורך‬ ‫מילים‬ ‫רק‬ ‫לקבוצה‬ ‫להוסיף‬ ‫יש‬ ‫כאשר‬4‫יותר‬ ‫או‬
•‫אלגוריתם‬:
•‫לקריאה‬ ‫קובץ‬ ‫נפתח‬
•‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬
•‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
‫תרגיל‬:‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬
•‫פונקציה‬ ‫כתב‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬,
‫באורך‬ ‫מילים‬ ‫רק‬ ‫סופרים‬ ‫כאשר‬4‫יותר‬ ‫או‬
•‫אלגוריתם‬:
•‫לקריאה‬ ‫קובץ‬ ‫נפתח‬
•‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬
•‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
‫תרגיל‬:‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬
•‫פונקציה‬ ‫כתב‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬,
‫באורך‬ ‫מילים‬ ‫רק‬ ‫סופרים‬ ‫כאשר‬4‫יותר‬ ‫או‬
•‫אלגוריתם‬:
•‫לקריאה‬ ‫קובץ‬ ‫נפתח‬
•‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬
•‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
‫תרגיל‬:‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬
•‫פונקציה‬ ‫כתב‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬,
‫באורך‬ ‫מילים‬ ‫רק‬ ‫סופרים‬ ‫כאשר‬4‫יותר‬ ‫או‬
•‫אלגוריתם‬:
•‫לקריאה‬ ‫קובץ‬ ‫נפתח‬
•‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬
•‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
‫תרגיל‬:‫טקסט‬ ‫מקובץ‬ ‫אקראית‬ ‫מילה‬
•‫כתב‬‫פונקציה‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫גדול‬ ‫בגודל‬ ‫אקראית‬ ‫מילה‬
‫מ‬-3‫בקובץ‬ ‫שונות‬ ‫המילים‬ ‫כל‬ ‫בין‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫הנבחרת‬
‫תרגיל‬:‫קבוצות‬ ‫בעזרת‬ ‫מימוש‬ ‫קופונים‬ ‫אסיפת‬
•‫פונקציה‬ ‫כתב‬‫המקבלת‬‫שלם‬ ‫חיובי‬ ‫מספר‬N‫אסיפת‬ ‫תהליך‬ ‫ומסמלצת‬
‫שקנינו‬ ‫מעטפות‬ ‫כמות‬ ‫ומחזירה‬ ‫קופונים‬
‫יותר‬ ‫לדעת‬ ‫רוצים‬?
• https://www.programiz.com/python-programming/set
‫קפואות‬ ‫קבוצות‬
•‫הן‬ ‫קבוצות‬‫טיפוס‬‫בפייתון‬ ‫לשינוי‬ ‫שניתן‬
•‫לשינוי‬ ‫ניתנות‬ ‫שלא‬ ‫קבוצות‬ ‫של‬ ‫טיפוס‬ ‫קיים‬ ‫בפייתון‬frozenset
‫מסכמת‬ ‫שאלה‬
•‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA
•‫סה‬"‫יש‬ ‫כ‬11‫אותיות‬:m,a,t,h,e,m,a,t,I,c,a
‫מסכמת‬ ‫שאלה‬
•‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA
•‫שאלה‬ ‫זאת‬‫קומבינטורית‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬
‫מסכמת‬ ‫שאלה‬
•‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA
•‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬
2223212211311121111111111
29730
!2!2!2
!6
!2!3
!6
1
5
1
2
1
1
!2!2
!6
2
5
2
3
!3
!6
3
6
1
1
!2
!6
4
6
1
3
!6
6
7




























































‫מסכמת‬ ‫שאלה‬
•‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA
•‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬
•‫טיפה‬ ‫פתרון‬‫מורכב‬
•‫נעזר‬‫עצמינו‬ ‫את‬ ‫לבדוק‬ ‫כדי‬ ‫בפייתון‬
2223212211311121111111111
29730
!2!2!2
!6
!2!3
!6
1
5
1
2
1
1
!2!2
!6
2
5
2
3
!3
!6
3
6
1
1
!2
!6
4
6
1
3
!6
6
7




























































‫מסכמת‬ ‫שאלה‬
•‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA
•‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬
•‫טיפה‬ ‫פתרון‬‫מורכב‬
•‫נעזר‬‫עצמינו‬ ‫את‬ ‫לבדוק‬ ‫כדי‬ ‫בפייתון‬
•‫אלגוריתם‬:‫בגודל‬ ‫הפרמוטציות‬ ‫כל‬ ‫נייצר‬6‫אותם‬ ‫ונשמור‬ ‫המילה‬ ‫של‬ ‫מאותיות‬
‫בקבוצה‬,‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬
2223212211311121111111111
29730
!2!2!2
!6
!2!3
!6
1
5
1
2
1
1
!2!2
!6
2
5
2
3
!3
!6
3
6
1
1
!2
!6
4
6
1
3
!6
6
7




























































‫מסכמת‬ ‫שאלה‬
•‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA
•‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬
•‫מורכב‬ ‫טיפה‬ ‫פתרון‬,‫עצמינו‬ ‫את‬ ‫לבדוק‬ ‫כדי‬ ‫בפייתון‬ ‫נעזר‬
•‫אלגוריתם‬:‫בגודל‬ ‫הפרמוטציות‬ ‫כל‬ ‫נייצר‬6‫אותם‬ ‫ונשמור‬ ‫המילה‬ ‫של‬ ‫מאותיות‬
‫בקבוצה‬,‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬
2223212211311121111111111
29730
!2!2!2
!6
!2!3
!6
1
5
1
2
1
1
!2!2
!6
2
5
2
3
!3
!6
3
6
1
1
!2
!6
4
6
1
3
!6
6
7




























































‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬12‫חלק‬4
‫רקורסיביים‬ ‫ציורים‬
2018
Igor Kleiner ©
‫השיעור‬ ‫של‬ ‫מטרה‬
‫רקורסיבי‬ ‫מבנה‬ ‫עם‬ ‫ציורים‬ ‫לצייר‬ ‫איך‬ ‫ללמוד‬
‫רקורסיבי‬ ‫פתרון‬ ‫של‬ ‫הבנה‬ ‫לשפר‬
‫חדשים‬ ‫רקורסיביים‬ ‫ציורים‬ ‫לייצר‬ ‫ללמוד‬
‫מבוא‬
•‫של‬ ‫הרעיונות‬ ‫את‬ ‫טוב‬ ‫יותר‬ ‫הבין‬ ‫לעזור‬ ‫יכולים‬ ‫וגם‬ ‫יפה‬ ‫נראים‬ ‫גם‬ ‫רקורסיביים‬ ‫ציורים‬
‫רקורסיה‬
H-TREE
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree
H-TREE
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree
H-TREE
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree
•‫הבא‬ ‫באופן‬ ‫העץ‬ ‫את‬ ‫נגדיר‬:
•‫עצירה‬ ‫תנאי‬n=0‫דבר‬ ‫שום‬ ‫לצייר‬ ‫צריך‬ ‫לא‬
H-TREE
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree
•‫הבא‬ ‫באופן‬ ‫העץ‬ ‫את‬ ‫נגדיר‬:
•‫עצירה‬ ‫תנאי‬n=0‫דבר‬ ‫שום‬ ‫לצייר‬ ‫צריך‬ ‫לא‬
•‫רקורסיה‬ ‫צעד‬‫נצייר‬H‫יחידה‬ ‫ריבוע‬ ‫באמצע‬+‫נצייר‬4H‫פי‬ ‫קטנים‬ ‫יותר‬ ‫ים‬2,‫כך‬
‫של‬ ‫לקצה‬ ‫מחובר‬ ‫מהם‬ ‫אחד‬ ‫שכל‬H‫גדול‬,‫ה‬H‫נצייר‬ ‫הקטנים‬ ‫ים‬‫בעזרת‬4‫קריאות‬
‫רקורסיביות‬
H-TREE
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree
•‫הבא‬ ‫באופן‬ ‫העץ‬ ‫את‬ ‫נגדיר‬:
•‫עצירה‬ ‫תנאי‬n=0‫דבר‬ ‫שום‬ ‫לצייר‬ ‫צריך‬ ‫לא‬
•‫נצייר‬ ‫רקורסיה‬ ‫צעד‬H‫יחידה‬ ‫ריבוע‬ ‫באמצע‬+‫נצייר‬4H‫פי‬ ‫קטנים‬ ‫יותר‬ ‫ים‬2‫כך‬
‫של‬ ‫לקצה‬ ‫מחובר‬ ‫מהם‬ ‫אחד‬ ‫שכל‬H‫גדול‬
H-TREE
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree
•‫הבא‬ ‫באופן‬ ‫העץ‬ ‫את‬ ‫נגדיר‬:
•‫עצירה‬ ‫תנאי‬n=0‫דבר‬ ‫שום‬ ‫לצייר‬ ‫צריך‬ ‫לא‬
•‫נצייר‬ ‫רקורסיה‬ ‫צעד‬H‫יחידה‬ ‫ריבוע‬ ‫באמצע‬+‫נצייר‬4H‫פי‬ ‫קטנים‬ ‫יותר‬ ‫ים‬2‫כך‬
‫של‬ ‫לקצה‬ ‫מחובר‬ ‫מהם‬ ‫אחד‬ ‫שכל‬H‫גדול‬
https://www.youtube.com/watch?v=KiZwX5iykdo
N=1 N=2 N=3
‫עצירה‬ ‫תנאי‬
‫קואורדינטות‬ ‫חישוב‬
‫לציור‬
‫עצירה‬ ‫תנאי‬
‫קואורדינטות‬ ‫חישוב‬
‫לציור‬
‫ציור‬H‫מרכזי‬
‫עצירה‬ ‫תנאי‬
‫קואורדינטות‬ ‫חישוב‬
‫לציור‬
‫ציור‬H‫מרכזי‬
‫רקורסיביות‬ ‫קריאות‬
‫עצירה‬ ‫תנאי‬
‫קואורדינטות‬ ‫חישוב‬
‫לציור‬
‫ציור‬H‫מרכזי‬
‫רקורסיביות‬ ‫קריאות‬
‫לפונקציה‬ ‫קריאות‬
‫בית‬ ‫תרגיל‬
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬12‫חלק‬5
‫סיבוכיות‬ ‫ניתוח‬
2018
Igor Kleiner ©
‫השיעור‬ ‫של‬ ‫מטרה‬
‫ללמוד‬‫דרך‬‫שבעזרת‬‫ניתן‬‫להגדיר‬‫אלגוריתם‬ ‫של‬ ‫יעילות‬
‫יעילות‬ ‫למדוד‬ ‫איך‬ ‫להבין‬‫אלגוריתם‬ ‫של‬
‫לבעיות‬ ‫יעילים‬ ‫פתרונות‬ ‫לכתוב‬ ‫ללמוד‬
‫סיבוכיות‬-complexity
•‫הדרישה‬‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬...
‫סיבוכיות‬-complexity
•‫הדרישה‬‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬
‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬
‫סיבוכיות‬-complexity
•‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬
‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬
•‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬
‫סיבוכיות‬-complexity
•‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬
‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬
•‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬
•‫דרישת‬‫יעילות‬‫שעלינו‬‫נדבר‬‫היום‬‫היא‬‫גם‬‫דרישה‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬
‫סיבוכיות‬-complexity
•‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬
‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬
•‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬
•‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬
•‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬
‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64
‫סיבוכיות‬-complexity
•‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬
‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬
•‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬
•‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬
•‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬
‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64
‫סיבוכיות‬-complexity
•‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬
‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬
•‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬
•‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬
•‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬
‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64:‫מימוש‬‫אחד‬‫עילי‬‫ושני‬‫לא‬‫יעיל‬
•‫יעילות‬ ‫המושג‬ ‫את‬ ‫נגדיר‬ ‫היום‬‫בצורה‬‫בו‬ ‫להשתמש‬ ‫איך‬ ‫ונראה‬ ‫פורמלית‬
‫סיבוכיות‬-complexity
•‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬
‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬
•‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬
•‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬
•‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬
‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64:‫מימוש‬‫אחד‬‫עילי‬‫ושני‬‫לא‬‫יעיל‬
•‫יעילות‬ ‫המושג‬ ‫את‬ ‫נגדיר‬ ‫היום‬‫בצורה‬‫בו‬ ‫להשתמש‬ ‫איך‬ ‫ונראה‬ ‫פורמלית‬
•‫יעילות‬ ‫על‬ ‫לדבר‬ ‫במקום‬ ‫זמן‬ ‫למדוד‬ ‫לא‬ ‫פשוט‬ ‫למה‬‫סיבוכיות‬?
‫סיבוכיות‬-complexity
•‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬:
•‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬
•‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬
•‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫גם‬ ‫אבל‬
‫חשובה‬ ‫מאוד‬ ‫יעילות‬
‫סיבוכיות‬-complexity
•‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬:
•‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬
•‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬
•‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫גם‬ ‫אבל‬
‫חשובה‬ ‫מאוד‬ ‫יעילות‬
•‫השאלות‬‫החשובות‬:
•‫כמה‬‫זמן‬‫קוד‬‫שלנו‬‫רץ‬?
•‫זיכרון‬ ‫בכמה‬‫משתמש‬‫קוד‬‫שלנו‬?
•‫האם‬‫אפשר‬‫לשפר‬‫שלנו‬ ‫קוד‬ ‫ביצועי‬?‫ואיך‬?
‫סיבוכיות‬-complexity
•‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬:
•‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬
•‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬
•‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫יעילות‬ ‫גם‬ ‫אבל‬
‫חשובה‬ ‫מאוד‬
•‫השאלות‬‫החשובות‬:
•‫כמה‬‫זמן‬‫קוד‬‫שלנו‬‫רץ‬?–‫ריצה‬ ‫זמן‬ ‫סיבוכיות‬ ‫בשאלה‬ ‫נתרכז‬ ‫בעיקר‬ ‫אנו‬
•‫זיכרון‬ ‫בכמה‬‫משתמש‬‫קוד‬‫שלנו‬?
•‫האם‬‫אפשר‬‫לשפר‬‫שלנו‬ ‫קוד‬ ‫ביצועי‬?‫ואיך‬?
•‫דרישת‬"‫קריא‬ ‫קוד‬‫וקל‬‫חשובה‬ ‫גם‬ ‫לתחזוקה‬"‫במקום‬ ‫באה‬ ‫היא‬ ‫המקרים‬ ‫ברוב‬ ‫אבל‬
‫שלישי‬
‫סיבוכיות‬-complexity
•‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬:
•‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬
•‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬
•‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫יעילות‬ ‫גם‬ ‫אבל‬
‫חשובה‬ ‫מאוד‬
•‫השאלות‬‫החשובות‬:
•‫כמה‬‫זמן‬‫קוד‬‫שלנו‬‫רץ‬?–‫ריצה‬ ‫זמן‬ ‫סיבוכיות‬ ‫בשאלה‬ ‫נתרכז‬ ‫בעיקר‬ ‫אנו‬
•‫זיכרון‬ ‫בכמה‬‫משתמש‬‫קוד‬‫שלנו‬?
•‫האם‬‫אפשר‬‫לשפר‬‫שלנו‬ ‫קוד‬ ‫ביצועי‬?‫ואיך‬?
•‫דרישת‬"‫קריא‬ ‫קוד‬‫וקל‬‫חשובה‬ ‫גם‬ ‫לתחזוקה‬"‫במקום‬ ‫באה‬ ‫היא‬ ‫המקרים‬ ‫ברוב‬ ‫אבל‬
‫שלישי‬
‫צריך‬‫לשמור‬‫על‬‫בלנס‬‫בין‬‫יעילות‬‫של‬‫הקוד‬‫וקלות‬‫הבנה‬‫של‬‫ו‬
‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬
•‫א‬ ‫פתרון‬:
•‫ריצה‬ ‫זמן‬ ‫ולמדוד‬ ‫שונים‬ ‫קלטים‬ ‫עם‬ ‫אותו‬ ‫ולהריץ‬ ‫הקוד‬ ‫את‬ ‫לממש‬
•‫למשל‬‫בעזרת‬‫פונקציה‬time()
‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬
•‫א‬ ‫פתרון‬:
•‫ריצה‬ ‫זמן‬ ‫ולמדוד‬ ‫שונים‬ ‫קלטים‬ ‫עם‬ ‫אותו‬ ‫ולהריץ‬ ‫הקוד‬ ‫את‬ ‫לממש‬
•‫למשל‬‫בעזרת‬‫פונקציה‬time()
•‫יתרון‬:
•‫פשוט‬‫לממש‬
•‫חסרונות‬:
•‫האפשריים‬ ‫קלטים‬ ‫לכל‬ ‫הקוד‬ ‫את‬ ‫להריץ‬ ‫נוכל‬ ‫לא‬
•‫מה‬‫נעשה‬‫עם‬‫זמן‬ ‫המון‬ ‫רצה‬ ‫תוכנה‬(‫שנה‬)‫על‬‫קלט‬‫מסוים‬?
•‫עוצרת‬ ‫לא‬ ‫תוכנה‬ ‫עם‬ ‫נעשה‬ ‫מה‬?
•‫מריצים‬ ‫שבו‬ ‫במחשב‬ ‫תלוי‬ ‫ריצה‬ ‫זמן‬
•‫הזמן‬‫לא‬‫להרצה‬ ‫מהרצה‬ ‫להשתנות‬ ‫ויכול‬ ‫מדויק‬
•‫הזמן‬‫בה‬ ‫שמשמשים‬ ‫פייתון‬ ‫בגרסת‬ ‫תלוי‬
‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬
•‫א‬ ‫פתרון‬:
•‫ריצה‬ ‫זמן‬ ‫ולמדוד‬ ‫שונים‬ ‫קלטים‬ ‫עם‬ ‫אותו‬ ‫ולהריץ‬ ‫הקוד‬ ‫את‬ ‫לממש‬
•‫למשל‬‫בעזרת‬‫פונקציה‬time()
•‫פתרון‬‫ב‬:
•‫עושה‬ ‫שהקוד‬ ‫בסיסיות‬ ‫פעולות‬ ‫כמות‬ ‫בעזרת‬ ‫ריצה‬ ‫זמן‬ ‫נאפיין‬
•‫נבטא‬‫את‬‫כמות‬‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫פעולות‬
•‫דומיננטיים‬ ‫לא‬ ‫מגורמים‬ ‫נתעלם‬ ‫בפונקציה‬
‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬
•‫א‬ ‫פתרון‬:
•‫ריצה‬ ‫זמן‬ ‫ולמדוד‬ ‫שונים‬ ‫קלטים‬ ‫עם‬ ‫אותו‬ ‫ולהריץ‬ ‫הקוד‬ ‫את‬ ‫לממש‬
•‫למשל‬‫בעזרת‬‫פונקציה‬time()
•‫פתרון‬‫ב‬:
•‫עושה‬ ‫שהקוד‬ ‫בסיסיות‬ ‫פעולות‬ ‫כמות‬ ‫בעזרת‬ ‫ריצה‬ ‫זמן‬ ‫נאפיין‬
•‫נבטא‬‫את‬‫כמות‬‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫פעולות‬
•‫דומיננטיים‬ ‫לא‬ ‫מגורמים‬ ‫נתעלם‬ ‫בפונקציה‬
•‫נעזר‬‫במודל‬‫חישוב‬‫של‬‫מכונת‬‫חישוב‬‫עם‬‫גישה‬‫אקראית‬(random access machine)
•‫פקודה‬ ‫לאחר‬ ‫פקודה‬ ‫מבצעת‬ ‫המכונה‬
•‫פעולות‬‫בסיסיות‬:‫השמה‬,‫השוואה‬,‫אריתמטיות‬ ‫פעולות‬,‫בזיכרון‬ ‫לאובייקט‬ ‫גישה‬
•‫מודל‬‫חישוב‬‫זה‬‫הוא‬‫ושימושי‬ ‫סביר‬
‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬
•‫ב‬ ‫פתרון‬':
•‫עושה‬ ‫שהקוד‬ ‫בסיסיות‬ ‫פעולות‬ ‫כמות‬ ‫בעזרת‬ ‫ריצה‬ ‫זמן‬ ‫נאפיין‬
•‫נבטא‬‫את‬‫כמות‬‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫פעולות‬
•‫דומיננטיים‬ ‫הלא‬ ‫מגורמים‬ ‫נתעלם‬ ‫בפונקציה‬
•‫נעזר‬‫במודל‬‫חישוב‬‫של‬‫מכונת‬‫חישוב‬‫עם‬‫גישה‬‫אקראית‬(random access machine)
•‫פקודה‬ ‫לאחר‬ ‫פקודה‬ ‫מבצעת‬ ‫המכונה‬
•‫פעולות‬‫בסיסיות‬:‫השמה‬,‫השוואה‬,‫אריתמטיות‬ ‫פעולות‬,‫בזיכרון‬ ‫לאובייקט‬ ‫גישה‬
•‫מודל‬‫חישוב‬‫זה‬‫הוא‬‫סביר‬,‫שימושי‬
•‫מחשב‬ ‫של‬ ‫מהירות‬ ‫חשובה‬ ‫לא‬ ‫כעת‬,‫לדעת‬ ‫רק‬ ‫חשוב‬ ‫פייתון‬ ‫של‬ ‫גרסת‬ ‫חשובה‬ ‫לא‬
‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫בחישוב‬ ‫הפעולות‬ ‫כמות‬
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫אבל‬‫כמות‬‫פעולות‬‫חישוב‬‫יכולה‬‫להיות‬‫שונה‬‫עבור‬‫קלטים‬‫שוני‬‫ם‬
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫אבל‬‫כמות‬‫פעולות‬‫חישוב‬‫יכולה‬‫להיות‬‫שונה‬‫עבור‬‫קלטים‬‫שונים‬
•‫למשל‬‫אם‬‫נרצה‬‫האם‬ ‫לבדוק‬‫איבר‬‫מופיע‬‫ברשימה‬:
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫אבל‬‫כמות‬‫פעולות‬‫חישוב‬‫יכולה‬‫להיות‬‫שונה‬‫עבור‬‫קלטים‬‫שונים‬
•‫למשל‬‫אם‬‫נרצה‬‫האם‬ ‫לבדוק‬‫איבר‬‫מופיע‬‫ברשימה‬:
•‫בדיקות‬ ‫מעט‬ ‫נבצע‬ ‫רשימה‬ ‫בהתחלת‬ ‫נמצא‬ ‫האיבר‬ ‫אם‬
•‫הרשימה‬ ‫לאורך‬ ‫ששווה‬ ‫פעולות‬ ‫כמות‬ ‫נעשה‬ ‫ברשימה‬ ‫נמצא‬ ‫לא‬ ‫בכלל‬ ‫האיבר‬ ‫ואם‬
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬?
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬?
•‫קיים‬‫מספר‬‫גישות‬:
•‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫כל‬ ‫בין‬‫הקלטים‬‫באותו‬‫אור‬‫ך‬best case
•‫זמן‬‫ריצה‬‫כל‬ ‫בין‬ ‫ממוצע‬‫הקלטים‬‫אורך‬ ‫באותו‬average case
•‫זמן‬‫ריצה‬‫ביותר‬ ‫הגרוע‬ ‫במקרה‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬worst case
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬?
•‫קיים‬‫מספר‬‫גישות‬:
•‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫בין‬‫כל‬‫הקלטים‬‫באותו‬‫אור‬‫ך‬best case
•‫זמן‬‫ריצה‬‫כל‬ ‫בין‬ ‫ממוצע‬‫הקלטים‬‫אורך‬ ‫באותו‬average case
•‫זמן‬‫ריצה‬‫ביותר‬ ‫הגרוע‬ ‫במקרה‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬worst case
•‫עבור‬‫חיפוש‬‫ליניארי‬‫בלולאה‬‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬n‫נקבל‬:
•best case:
•average case:
•:worst case
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬?
•‫קיים‬‫מספר‬‫גישות‬:
•‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫בין‬‫כל‬‫הקלטים‬‫באותו‬‫אור‬‫ך‬best case
•‫זמן‬‫ריצה‬‫כל‬ ‫בין‬ ‫ממוצע‬‫הקלטים‬‫אורך‬ ‫באותו‬average case
•‫זמן‬‫ריצה‬‫ביותר‬ ‫הגרוע‬ ‫במקרה‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬worst case
•‫עבור‬‫חיפוש‬‫ליניארי‬‫בלולאה‬‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬n‫נקבל‬:
•best case:‫פעולה‬1
•average case:n/2‫פעולות‬
•:worst casen‫פעולות‬
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬?
•‫קיים‬‫מספר‬‫גישות‬:
•‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫בין‬‫כל‬‫הקלטים‬‫באותו‬‫אור‬‫ך‬best case
•‫זמן‬‫ריצה‬‫כל‬ ‫בין‬ ‫ממוצע‬‫הקלטים‬‫אורך‬ ‫באותו‬average case
•‫זמן‬‫ריצה‬‫ביותר‬ ‫הגרוע‬ ‫במקרה‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬worst case
•‫עבור‬‫חיפוש‬‫ליניארי‬‫בלולאה‬‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬n‫נקבל‬:
•best case:‫פעולה‬1
•average case:n/2‫פעולות‬
•:worst casen‫פעולות‬
•‫אנו‬‫נתרכז‬‫בניתוח‬‫סיבוכיות‬‫במקרה‬‫הגרוע‬‫ביותר‬(‫חסם‬‫עליון‬)
‫דוגמא‬1:‫עצרת‬ ‫חישוב‬
•‫חישוב‬N‫עצרת‬‫דורש‬:???‫פעולות‬
‫דוגמא‬1:‫עצרת‬ ‫חישוב‬
•‫חישוב‬N‫עצרת‬‫דורש‬:5*n+1‫פעולות‬
•‫עבור‬n‫מספיק‬‫גדול‬‫קבוע‬1‫נתעלם‬ ‫ולכן‬ ‫תוצאה‬ ‫על‬ ‫משמעותי‬ ‫באופן‬ ‫תשפיע‬ ‫לא‬ ‫כבר‬
‫שצריך‬ ‫נגיד‬ ‫ואז‬ ‫מימנו‬5n‫לחישוב‬ ‫פעולות‬n‫עצרת‬‫נתונה‬ ‫פונקציה‬ ‫בעזרת‬
•‫אנחנו‬‫גם‬‫נתעלם‬‫מקבוע‬‫נגיד‬ ‫ופשוט‬ ‫סיבוכיות‬ ‫בניתוח‬ ‫המשמעותי‬ ‫איבר‬ ‫של‬ ‫כפלי‬
‫צריך‬~n‫פעולות‬‫או‬c*n‫פעולות‬(O(n))
‫סיכום‬
•‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫עבור‬ ‫ביותר‬ ‫הגרוע‬ ‫למקרה‬ ‫סיבוכיות‬ ‫נחשב‬
•‫נתעלם‬‫מגורמים‬‫פחות‬‫משמעותיים‬
•‫משמעותי‬ ‫גורם‬ ‫של‬ ‫כפלי‬ ‫מקבוע‬ ‫גם‬ ‫נתעלם‬
‫תרגי‬‫ל‬
•‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬:
•‫תשובה‬:
‫תרגי‬‫ל‬
•‫קלט‬ ‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬n:
•‫תשובה‬:5n+2000~5n~c*n
•O(n)
‫תרגי‬‫ל‬
•‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬:
•‫תשובה‬:
‫תרגי‬‫ל‬
•‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬:
•‫תשובה‬:5*log_2(n)+1001~5*log2(n)
•O(logn)
‫תרגי‬‫ל‬
•‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬‫הגרוע‬‫ביותר‬‫עבור‬‫קלט‬:‫בגולד‬ ‫רשימה‬n
•‫תשובה‬:
‫תרגי‬‫ל‬
•‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬‫קלט‬ ‫עבור‬:‫בגולד‬ ‫רשימה‬n
•‫תשובה‬:5n+2
•O(n)
‫דוגמא‬‫מסכמ‬‫ת‬
•‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬‫קלט‬ ‫עבור‬:n
•‫תשובה‬:
‫דוגמא‬‫מסכמ‬‫ת‬
•‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬‫קלט‬ ‫עבור‬:n
•‫תשובה‬:100+n+n^2
•O(n^2)
const n n^2 100+n+n^2
100 100 10000 10200
100 1000 1000000 1001100
100 10000 100000000 100010100
100 100000 10000000000 10000100100
100 1000000 1E+12 1E+12

Weitere ähnliche Inhalte

Was ist angesagt? (6)

1.3 Perkalian Titik
1.3 Perkalian Titik1.3 Perkalian Titik
1.3 Perkalian Titik
 
Урок №7 Розкладання чисел на прості множники
Урок №7  Розкладання чисел на прості множникиУрок №7  Розкладання чисел на прості множники
Урок №7 Розкладання чисел на прості множники
 
Паралельність прямих і площин в просторі
Паралельність прямих і площин в просторіПаралельність прямих і площин в просторі
Паралельність прямих і площин в просторі
 
Pipi çorapegjatja
Pipi çorapegjatjaPipi çorapegjatja
Pipi çorapegjatja
 
რელიგიები საქართველოში
რელიგიები საქართველოშირელიგიები საქართველოში
რელიგიები საქართველოში
 
5o προσομοιωτικό διαγώνισμα
5o προσομοιωτικό διαγώνισμα5o προσομοιωτικό διαγώνισμα
5o προσομοιωτικό διαγώνισμα
 

Ähnlich wie תכנות מדעי פייתון: הרצאה 12: סיבוכיות

שיטות הסתברותיות - תרגול מספר 2 (2007). חיפה
שיטות הסתברותיות - תרגול מספר  2 (2007). חיפהשיטות הסתברותיות - תרגול מספר  2 (2007). חיפה
שיטות הסתברותיות - תרגול מספר 2 (2007). חיפהIgor Kleiner
 
רשתות בייסיאניות אופטימליות
רשתות בייסיאניות אופטימליותרשתות בייסיאניות אופטימליות
רשתות בייסיאניות אופטימליותAndrew Kreimer
 
מבני נתונים
מבני נתוניםמבני נתונים
מבני נתוניםcsnotes
 
2013 summer B 802 a
2013 summer B 802 a2013 summer B 802 a
2013 summer B 802 abagrutonline
 
סיכום הקורס במבנים אלגבריים
סיכום הקורס במבנים אלגברייםסיכום הקורס במבנים אלגבריים
סיכום הקורס במבנים אלגברייםcsnotes
 
2013 summer A 802 a
2013 summer A 802 a2013 summer A 802 a
2013 summer A 802 abagrutonline
 

Ähnlich wie תכנות מדעי פייתון: הרצאה 12: סיבוכיות (8)

שיטות הסתברותיות - תרגול מספר 2 (2007). חיפה
שיטות הסתברותיות - תרגול מספר  2 (2007). חיפהשיטות הסתברותיות - תרגול מספר  2 (2007). חיפה
שיטות הסתברותיות - תרגול מספר 2 (2007). חיפה
 
רשתות בייסיאניות אופטימליות
רשתות בייסיאניות אופטימליותרשתות בייסיאניות אופטימליות
רשתות בייסיאניות אופטימליות
 
מבני נתונים
מבני נתוניםמבני נתונים
מבני נתונים
 
2013 winter 803 a
2013 winter 803 a2013 winter 803 a
2013 winter 803 a
 
2013 summer B 802 a
2013 summer B 802 a2013 summer B 802 a
2013 summer B 802 a
 
2013 winter 802 a
2013 winter 802 a2013 winter 802 a
2013 winter 802 a
 
סיכום הקורס במבנים אלגבריים
סיכום הקורס במבנים אלגברייםסיכום הקורס במבנים אלגבריים
סיכום הקורס במבנים אלגבריים
 
2013 summer A 802 a
2013 summer A 802 a2013 summer A 802 a
2013 summer A 802 a
 

Mehr von Igor Kleiner

Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1Igor Kleiner
 
מדעי נתונים לכל אחד
מדעי נתונים לכל אחדמדעי נתונים לכל אחד
מדעי נתונים לכל אחדIgor Kleiner
 
מדע נתונים - למידה מכונות
מדע נתונים - למידה מכונותמדע נתונים - למידה מכונות
מדע נתונים - למידה מכונותIgor Kleiner
 
מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2Igor Kleiner
 
מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1Igor Kleiner
 
תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3Igor Kleiner
 
תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4Igor Kleiner
 
שאלות לתרגול עצמי
שאלות לתרגול עצמישאלות לתרגול עצמי
שאלות לתרגול עצמיIgor Kleiner
 
פתרון תרגיל 3
פתרון תרגיל 3פתרון תרגיל 3
פתרון תרגיל 3Igor Kleiner
 
מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13Igor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמימבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי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
 

Mehr von Igor Kleiner (20)

Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1
 
מדעי נתונים לכל אחד
מדעי נתונים לכל אחדמדעי נתונים לכל אחד
מדעי נתונים לכל אחד
 
מדע נתונים - למידה מכונות
מדע נתונים - למידה מכונותמדע נתונים - למידה מכונות
מדע נתונים - למידה מכונות
 
מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2
 
מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1
 
תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3
 
תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4
 
שאלות לתרגול עצמי
שאלות לתרגול עצמישאלות לתרגול עצמי
שאלות לתרגול עצמי
 
פתרון תרגיל 3
פתרון תרגיל 3פתרון תרגיל 3
פתרון תרגיל 3
 
מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13
 
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמימבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
 
תכנות מדעי: פייתון: הרצאה 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
 

תכנות מדעי פייתון: הרצאה 12: סיבוכיות

  • 2. ‫חישוב‬‫שורש‬:‫שיטת‬‫רפסון‬ ‫ניוטון‬ •‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬ •‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחת‬ •‫רקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬
  • 3. ‫חישוב‬‫שורש‬:‫שיטת‬‫רפסון‬ ‫ניוטון‬ •‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬ •‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחת‬ •‫רקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬ •‫ממספר‬ ‫שורש‬ ‫לחישוב‬ ‫אלגוריתם‬a •‫התחלתי‬ ‫מניחוש‬ ‫נתחיל‬x. •‫עוד‬ ‫כל‬abs(x^2-a)‫מ‬ ‫גדול‬-epsilon‫ל‬ ‫חדש‬ ‫ערך‬ ‫נחשב‬-x‫הבאה‬ ‫נוסחה‬ ‫בעזרת‬:x=1/2(x+a/x)
  • 4. ‫רפסון‬ ‫ניוטון‬ ‫ששיטת‬ ‫שורש‬ ‫חישוב‬ •‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬ •‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחד‬ •‫הרקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬ •‫ממספר‬ ‫שורש‬ ‫לחישוב‬ ‫אלגוריתם‬a •‫התחלתי‬ ‫מניחוש‬ ‫נתחיל‬x. •‫עוד‬ ‫כל‬abs(x^2-a)‫מ‬ ‫גדול‬-epsilon‫ל‬ ‫חדש‬ ‫ערך‬ ‫נחשב‬-x‫הבאה‬ ‫נוסחה‬ ‫בעזרת‬:x=1/2(x+a/x) http://www.codeskulptor.org/#user44_gVh7uI6o7fOJqq4.py
  • 5. ‫רפסון‬ ‫ניוטון‬ ‫ששיטת‬ ‫שורש‬ ‫חישוב‬ •‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬ •‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחד‬ •‫הרקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬ •‫ממספר‬ ‫שורש‬ ‫לחישוב‬ ‫אלגוריתם‬A •‫התחלתי‬ ‫מניחוש‬ ‫נתחיל‬x. •‫עוד‬ ‫כל‬abs(x^2-a)‫מ‬ ‫גדול‬-epsilon‫ל‬ ‫חדש‬ ‫ערך‬ ‫נחשב‬-x‫הבאה‬ ‫נוסחה‬ ‫בעזרת‬:x=1/2(x+a/x) http://www.codeskulptor.org/#user44_gVh7uI6o7fOJqq4.py
  • 7. ‫עודף‬ ‫החזרת‬ •‫כל‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתבו‬‫האפשרויות‬‫עודף‬ ‫להחזיר‬N ‫מטבעות‬ ‫בעזרת‬1,2,5
  • 8. ‫עודף‬ ‫החזרת‬ •‫עודף‬ ‫להחזיר‬ ‫אפשרויות‬ ‫כל‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתבו‬ N‫מטבעות‬ ‫בעזרת‬1,2,5 http://www.codeskulptor.org/#user44_4d4p0BUt7OJH0YZ_0.py
  • 9. ‫עודף‬ ‫החזרת‬ •‫עודף‬ ‫להחזיר‬ ‫אפשרויות‬ ‫כל‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתבו‬ N‫מטבעות‬ ‫בעזרת‬1,2,5 http://www.codeskulptor.org/#user44_4d4p0BUt7OJH0YZ_0.py
  • 10. ‫מחרוזת‬ ‫של‬ ‫אורך‬ •‫כתבו‬‫פונקציות‬‫אורך‬ ‫ומחזירה‬ ‫מחרוזת‬ ‫שמקבלת‬ ‫ורקורסיבית‬ ‫איטרטיבית‬ ‫של‬‫המחרוזת‬
  • 11. ‫מחרוזת‬ ‫של‬ ‫אורך‬ •‫אורך‬ ‫ומחזירה‬ ‫מחרוזת‬ ‫שמקבלת‬ ‫ורקורסיבית‬ ‫איטרטיבית‬ ‫פונקציות‬ ‫כתבו‬ ‫המחרוזת‬ ‫של‬ http://www.codeskulptor.org/#user44_4d4p0BUt7OJH0YZ_1.py
  • 12. ‫הבאה‬ ‫פונקציה‬ ‫בעזרת‬ ‫עצרת‬ ‫בחישוב‬ ‫בעיה‬ ‫מצא‬
  • 13. ‫הבאה‬ ‫פונקציה‬ ‫בעזרת‬ ‫עצרת‬ ‫בחישוב‬ ‫בעיה‬ ‫מצא‬
  • 14. ‫הבאה‬ ‫פונקציה‬ ‫בעזרת‬ ‫עצרת‬ ‫בחישוב‬ ‫בעיה‬ ‫מצא‬ 12! 11! 10! -100! …. ….
  • 16. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A ‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬: •10,20-?
  • 17. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A ‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬: •10,20-?10
  • 18. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A ‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬: •10,20-?10 •11,13-?
  • 19. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A ‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬: •10,20-?10 •11,13-?1
  • 20. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A ‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬: •10,20-?10 •11,13-?1 •27,15-?
  • 21. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A ‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫ללא‬‫שארית‬: •10,20-?10 •11,13-?1 •27,15-?5
  • 22. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A ‫ו‬-B‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬ ‫הוא‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אפשר‬ ‫איך‬?
  • 23. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫בגדול‬ ‫המחלק‬‫ביותר‬‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬A‫ו‬-B‫הוא‬ ‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אפשר‬ ‫איך‬? •‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid: •‫האלגוריתם‬: If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q)
  • 24. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫הוא‬ ‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬? •‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid: If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q) ‫דוגמא‬: gcd(20,5)=gcd(?,?)
  • 25. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫הוא‬ ‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬? •‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid: If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q) ‫דוגמא‬: gcd(20,5)=gcd(5,0)=?
  • 26. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫הוא‬ ‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬ ‫שלם‬ ‫מספר‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬? •‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid: If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q) ‫דוגמא‬: gcd(20,5)=gcd(5,0)=5
  • 27. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬ ‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬? •‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid: If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q) ‫דוגמא‬: gcd(20,5)=gcd(5,0)=5 gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
  • 28. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬ ‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬? •‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid: If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q) ‫דוגמא‬: gcd(20,5)=gcd(5,0)=5 gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
  • 29. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬ ‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬? •‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid: If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q) ‫דוגמא‬: gcd(20,5)=gcd(5,0)=5 gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
  • 30. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬ ‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬? •‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid: If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q) ‫דוגמא‬: gcd(20,5)=gcd(5,0)=5 gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
  • 31. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ •‫הגדרה‬:‫חיובים‬ ‫שלמים‬ ‫מספרים‬ ‫שתי‬ ‫של‬ ‫ביות‬ ‫בגדול‬ ‫המחלק‬A‫ו‬-B‫שלם‬ ‫מספר‬ ‫הוא‬ ‫את‬ ‫גם‬ ‫שמחלק‬ ‫ביות‬ ‫הגדול‬A‫את‬ ‫וגם‬B‫שארית‬ ‫ללא‬ •‫ביותר‬ ‫הגדול‬ ‫המחלק‬ ‫את‬ ‫למצוא‬ ‫אשפר‬ ‫איך‬? •‫את‬ ‫למצוא‬ ‫אפשר‬GCD‫אלגוריתם‬ ‫בעזרת‬Euclid: If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q) ‫דוגמא‬: gcd(20,5)=gcd(5,0)=5 gcd(20,14)=gcd(14,6)=gcd(6,2)=gcd(2,0)=2
  • 32. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q)
  • 33. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q)
  • 34. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q)
  • 35. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q)
  • 37. ‫תמורות‬-permutation •‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬ ‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
  • 38. ‫תמורות‬-permutation •‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬ ‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
  • 39. ‫תמורות‬-permutation •‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬ ‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
  • 40. ‫תמורות‬-permutation •‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬ ‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
  • 41. ‫תמורות‬-permutation •‫חיובי‬ ‫שלם‬ ‫מספר‬ ‫שמקבלת‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתב‬n •‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬ ‫כל‬ ‫רשימת‬ ‫ומחזירה‬-1‫עד‬n ‫נוסף‬ ‫מימוש‬
  • 43. ‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬ •‫כבר‬ ‫ראינו‬2‫לפונקציה‬ ‫מימושים‬‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬‫פיבונאצ‬ ‫סדרת‬'‫י‬ •‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬ •‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬
  • 44. ‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬ •‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬ •‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬ •‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬ ‫מימוש‬‫לא‬‫יעיל‬
  • 45. ‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬ •‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬ •‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬ •‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬ •‫הזה‬ ‫בחישוב‬ ‫בעיה‬ ‫מה‬? ‫מימוש‬‫לא‬‫יעיל‬
  • 46. ‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬ •‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬ •‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬ •‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬ •‫הזה‬ ‫בחישוב‬ ‫בעיה‬ ‫מה‬? •‫עבור‬ ‫רקורסיביות‬ ‫קריאות‬ ‫שכמות‬ ‫להראות‬ ‫אפשר‬N‫ל‬ ‫שבווה‬ ‫בערך‬1.6^N
  • 47. ‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬ •‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫אברי‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬ •‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬ •‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬ •‫הזה‬ ‫בחישוב‬ ‫בעיה‬ ‫מה‬? •‫עבור‬ ‫רקורסיביות‬ ‫קריאות‬ ‫שכמות‬ ‫להראות‬ ‫אפשר‬N‫ל‬ ‫שבווה‬ ‫בערך‬1.6^N •‫הבעיה‬:‫חוזרים‬ ‫חישובים‬ ‫היא‬–‫חוזרים‬ ‫חישובים‬ ‫את‬ ‫נשמור‬ ‫הבעיה‬ ‫את‬ ‫לפתור‬ ‫כדי‬ ‫עזר‬ ‫ברשימת‬
  • 48. ‫פיבונאצ‬ ‫מספרי‬'‫י‬-‫שיפור‬ •‫כבר‬ ‫ראינו‬2‫פיבונאצ‬ ‫סדרת‬ ‫שמשחב‬ ‫לפונקציה‬ ‫מימושים‬'‫י‬ •‫יעיל‬ ‫לא‬ ‫רקורסיה‬ ‫בעזרת‬ ‫שחישוב‬ ‫ראינו‬ •‫פיבונאצ‬ ‫סידרת‬ ‫חישוב‬ ‫של‬ ‫הרקורסיבי‬ ‫המימוש‬ ‫את‬ ‫נשפר‬ ‫אנו‬ ‫היום‬'‫י‬ •‫הזה‬ ‫בחישוב‬ ‫בעיה‬ ‫מה‬? •‫עבור‬ ‫רקורסיביות‬ ‫קריאות‬ ‫שכמות‬ ‫להראות‬ ‫אפשר‬N‫ל‬ ‫שבווה‬ ‫בערך‬1.6^N •‫הבעיה‬:‫חוזרים‬ ‫חישובים‬ ‫היא‬–‫חוזרים‬ ‫חישובים‬ ‫את‬ ‫נשמור‬ ‫הבעיה‬ ‫את‬ ‫לפתור‬ ‫כדי‬ ‫עזר‬ ‫ברשימת‬Fiblist=[]
  • 49. ‫מדעי‬ ‫לתכנות‬ ‫מבוא‬ ‫הרצאה‬12‫חלק‬2 ‫דינמי‬ ‫תכנות‬:‫זהב‬ ‫משחק‬ 2018 Igor Kleiner ©
  • 50. ‫זהב‬ ‫משחק‬ •‫הבא‬ ‫במחשק‬ ‫נסתכל‬: •‫שלו‬ ‫הדרך‬ ‫בהתחלת‬ ‫נמצא‬ ‫אדם‬ ‫בן‬ •‫בגודל‬ ‫צעד‬ ‫לעשות‬ ‫יכול‬ ‫הוא‬ ‫פעם‬ ‫כל‬1‫או‬3‫ימינה‬,‫הוא‬ ‫ואז‬‫מבק‬‫ר‬‫שנמצא‬ ‫פרס‬ ‫ומקבל‬ ‫במשבצת‬ ‫בה‬ •‫עם‬ ‫אחרונה‬ ‫למשבצת‬ ‫להגיע‬ ‫היא‬ ‫אדם‬ ‫בן‬ ‫של‬ ‫המטרה‬‫מקסימום‬‫מקבל‬ ‫שהוא‬ ‫הפרסים‬ ‫סכום‬ ‫של‬ ‫בדרך‬ 1 -1 2 -1 -1 2 1 3 4 1
  • 51. ‫זהב‬ ‫משחק‬ •‫הבא‬ ‫במחשק‬ ‫נסתכל‬: •‫שלו‬ ‫הדרך‬ ‫בהתחלת‬ ‫נמצא‬ ‫אדם‬ ‫בן‬ •‫בגודל‬ ‫צעד‬ ‫לעשות‬ ‫יכול‬ ‫הוא‬ ‫פעם‬ ‫כל‬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 ‫פרסים‬ ‫של‬ ‫ערכים‬ ‫אינדקס‬
  • 52. ‫זהב‬ ‫משחק‬ •‫הבא‬ ‫במחשק‬ ‫נסתכל‬: •‫שלו‬ ‫הדרך‬ ‫בהתחלת‬ ‫נמצא‬ ‫אדם‬ ‫בן‬ •‫בגודל‬ ‫צעד‬ ‫לעשות‬ ‫יכול‬ ‫הוא‬ ‫פעם‬ ‫כל‬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 ‫פרסים‬ ‫של‬ ‫ערכים‬ ‫אינדקס‬
  • 53. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫הוא‬ ‫מה‬ ‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫פרסים‬ ‫של‬ ‫המרבי‬ ‫סכום‬ •‫נתחיל‬‫מהגדרות‬ ‫הפתרון‬ ‫את‬:‫ב‬ ‫נסמן‬-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
  • 54. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫הוא‬ ‫מה‬ ‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫פרסים‬ ‫של‬ ‫המרבי‬ ‫סכום‬ •‫מהגדרות‬ ‫הפתרון‬ ‫את‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-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
  • 55. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫הוא‬ ‫מה‬ ‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫פרסים‬ ‫של‬ ‫המרבי‬ ‫סכום‬ •‫מהגדרות‬ ‫הפתרון‬ ‫את‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-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
  • 56. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-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
  • 57. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-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
  • 58. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-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
  • 59. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-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
  • 60. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ ‫הוא‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-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
  • 61. ‫זהב‬ ‫משחק‬ •‫המטרה‬‫הוא‬ ‫לדעת‬ ‫אדם‬ ‫לבן‬ ‫שמאפשר‬ ‫הקוד‬ ‫את‬ ‫לכתוב‬ ‫ואז‬ ‫אלגוריתם‬ ‫לפתח‬ ‫היא‬ ‫שלנו‬ ‫לקבל‬ ‫יכול‬ ‫שהוא‬ ‫המרבי‬ ‫סכום‬ •‫מהגדרות‬ ‫פתרון‬ ‫נתחיל‬:‫ב‬ ‫נסמן‬-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]
  • 63.
  • 65. ‫השיעור‬ ‫של‬ ‫מטרה‬ ‫חדש‬ ‫נתונים‬ ‫מבנה‬ ‫ללמוד‬-‫קבוצה‬ ‫ושימושיהם‬ ‫קבוצות‬ ‫של‬ ‫מתודות‬ ‫ללמוד‬ ‫קפואות‬ ‫קבוצות‬ ‫ללמוד‬
  • 66. ‫השיעור‬ ‫של‬ ‫מטרה‬ •‫אוסף‬ ‫היא‬ ‫קבוצה‬(‫סדר‬ ‫אין‬)‫איברים‬ ‫של‬,‫יותר‬ ‫לא‬ ‫בקבוצה‬ ‫מופיע‬ ‫איבר‬ ‫כל‬ ‫כאשר‬ ‫אחד‬ ‫מפעם‬ •‫לשינוי‬ ‫ניתן‬ ‫שלא‬ ‫מטיפוס‬ ‫להיות‬ ‫חייבים‬ ‫בקבוצה‬ ‫האיברים‬
  • 67. ‫השיעור‬ ‫של‬ ‫מטרה‬ •‫אוסף‬ ‫היא‬ ‫קבוצה‬(‫סדר‬ ‫אין‬)‫איברים‬ ‫של‬,‫אחד‬ ‫מפעם‬ ‫יותר‬ ‫לא‬ ‫מופיע‬ ‫איבר‬ ‫כל‬ ‫כאשר‬ •‫במתמטיקה‬ ‫שמגדירים‬ ‫בקבוצות‬ ‫למישוש‬ ‫ונוחה‬ ‫טבעית‬ ‫מאוד‬ ‫זו‬ ‫ההגדרה‬
  • 72. ‫קבוצות‬ ‫של‬ ‫מתודות‬ ‫קבוצות‬ ‫על‬ ‫לפעולות‬ ‫דומות‬ ‫המתודות‬ ‫הסתברות‬ ‫בקורס‬ ‫אותם‬ ‫שלמדנו‬
  • 81. ‫מנגנון‬ ‫בעזרת‬ ‫קבוצה‬ ‫הגדרת‬‫של‬Set Comprehension •‫של‬ ‫למנגנון‬ ‫בדומה‬ListComprehension‫קבוצות‬ ‫גם‬ ‫להגדיר‬ ‫ניתן‬(‫וגם‬ ‫מילונים‬)
  • 82. ‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬ •‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫שונות‬ ‫מילים‬ ‫כמות‬ ‫ברשימה‬
  • 83. ‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬ •‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫שונות‬ ‫מילים‬ ‫כמות‬ ‫ברשימה‬ •‫אלגוריתם‬: •‫לקבוצה‬ ‫אותה‬ ‫ונוסיף‬ ‫ברשימה‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬ •‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬
  • 84. ‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬ •‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫שונות‬ ‫מילים‬ ‫כמות‬ ‫ברשימה‬ •‫אלגוריתם‬: •‫לקבוצה‬ ‫אותה‬ ‫ונוסיף‬ ‫ברשימה‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬ •‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬
  • 85. ‫תרגיל‬:‫קבוצה‬‫ברשימה‬ ‫שונות‬ ‫מילים‬ •‫פונקציה‬ ‫כתב‬‫רקורסיבית‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫המילים‬ ‫כל‬ ‫קבוצת‬ ‫ברשימה‬ •‫רקורסיבי‬ ‫אלגוריתם‬:
  • 86. ‫תרגיל‬:‫קבוצה‬‫ברשימה‬ ‫שונות‬ ‫מילים‬ •‫רקורסיבית‬ ‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫המילים‬ ‫כל‬ ‫קבוצת‬ ‫ברשימה‬ •‫רקורסיבי‬ ‫אלגוריתם‬: •‫תנאי‬‫עצירה‬:‫ריקה‬ ‫קבוצה‬ ‫נחזיר‬ ‫ריקה‬ ‫הרשימה‬ ‫אם‬ •‫ראשון‬ ‫איבר‬ ‫ללא‬ ‫רקורסיבית‬ ‫קראיה‬ ‫של‬ ‫לתוצאה‬ ‫ראשון‬ ‫איבר‬ ‫נוסיף‬
  • 87. ‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬ •‫רקורסיבית‬ ‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫כל‬ ‫קבוצת‬ ‫ברשימה‬ ‫המילים‬ •‫רקורסיבי‬ ‫אלגוריתם‬: •‫עצירה‬ ‫תנאי‬:‫ריקה‬ ‫קבוצה‬ ‫נחזיר‬ ‫ריקה‬ ‫הרשימה‬ ‫אם‬ •‫ראשון‬ ‫איבר‬ ‫ללא‬ ‫רקורסיבית‬ ‫קראיה‬ ‫של‬ ‫לתוצאה‬ ‫ראשון‬ ‫איבר‬ ‫נוסיף‬
  • 88. ‫תרגיל‬:‫קבוצ‬‫ת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ •‫כתבו‬‫פונקציה‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬, ‫כאשר‬‫לקבוצה‬ ‫להוסיף‬ ‫יש‬‫באורך‬ ‫מילים‬ ‫רק‬4‫יותר‬ ‫או‬
  • 89. ‫תרגיל‬:‫קבוצ‬‫ת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ •‫פונקציה‬ ‫כתבו‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬, ‫באורך‬ ‫מילים‬ ‫רק‬ ‫לקבוצה‬ ‫להוסיף‬ ‫יש‬ ‫כאשר‬4‫יותר‬ ‫או‬ •‫אלגוריתם‬:
  • 90. ‫תרגיל‬:‫קבוצת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ •‫פונקציה‬ ‫כתבו‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬, ‫באורך‬ ‫מילים‬ ‫רק‬ ‫לקבוצה‬ ‫להוסיף‬ ‫יש‬ ‫כאשר‬4‫יותר‬ ‫או‬ •‫אלגוריתם‬: •‫לקריאה‬ ‫קובץ‬ ‫נפתח‬ •‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬ •‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
  • 91. ‫תרגיל‬:‫קבוצת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ •‫פונקציה‬ ‫כתבו‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬, ‫באורך‬ ‫מילים‬ ‫רק‬ ‫לקבוצה‬ ‫להוסיף‬ ‫יש‬ ‫כאשר‬4‫יותר‬ ‫או‬ •‫אלגוריתם‬: •‫לקריאה‬ ‫קובץ‬ ‫נפתח‬ •‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬ •‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
  • 92. ‫תרגיל‬:‫קבוצת‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ •‫פונקציה‬ ‫כתבו‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫המילים‬ ‫כל‬ ‫קבוצת‬, ‫באורך‬ ‫מילים‬ ‫רק‬ ‫לקבוצה‬ ‫להוסיף‬ ‫יש‬ ‫כאשר‬4‫יותר‬ ‫או‬ •‫אלגוריתם‬: •‫לקריאה‬ ‫קובץ‬ ‫נפתח‬ •‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬ •‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
  • 93. ‫תרגיל‬:‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬ •‫פונקציה‬ ‫כתב‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬, ‫באורך‬ ‫מילים‬ ‫רק‬ ‫סופרים‬ ‫כאשר‬4‫יותר‬ ‫או‬ •‫אלגוריתם‬: •‫לקריאה‬ ‫קובץ‬ ‫נפתח‬ •‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬ •‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
  • 94. ‫תרגיל‬:‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬ •‫פונקציה‬ ‫כתב‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬, ‫באורך‬ ‫מילים‬ ‫רק‬ ‫סופרים‬ ‫כאשר‬4‫יותר‬ ‫או‬ •‫אלגוריתם‬: •‫לקריאה‬ ‫קובץ‬ ‫נפתח‬ •‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬ •‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
  • 95. ‫תרגיל‬:‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬ •‫פונקציה‬ ‫כתב‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫בקובץ‬ ‫שונות‬ ‫מילים‬ ‫כמות‬, ‫באורך‬ ‫מילים‬ ‫רק‬ ‫סופרים‬ ‫כאשר‬4‫יותר‬ ‫או‬ •‫אלגוריתם‬: •‫לקריאה‬ ‫קובץ‬ ‫נפתח‬ •‫באורך‬ ‫היא‬ ‫ואם‬ ‫בקובץ‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬>3‫לקבוצה‬ ‫אותה‬ ‫נוסיף‬ ‫אז‬ •‫שהתקבלה‬ ‫קבוצה‬ ‫נחזיר‬
  • 96. ‫תרגיל‬:‫טקסט‬ ‫מקובץ‬ ‫אקראית‬ ‫מילה‬ •‫כתב‬‫פונקציה‬‫המקבלת‬‫הקובץ‬ ‫של‬ ‫שם‬‫ומחזירה‬‫גדול‬ ‫בגודל‬ ‫אקראית‬ ‫מילה‬ ‫מ‬-3‫בקובץ‬ ‫שונות‬ ‫המילים‬ ‫כל‬ ‫בין‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫הנבחרת‬
  • 97. ‫תרגיל‬:‫קבוצות‬ ‫בעזרת‬ ‫מימוש‬ ‫קופונים‬ ‫אסיפת‬ •‫פונקציה‬ ‫כתב‬‫המקבלת‬‫שלם‬ ‫חיובי‬ ‫מספר‬N‫אסיפת‬ ‫תהליך‬ ‫ומסמלצת‬ ‫שקנינו‬ ‫מעטפות‬ ‫כמות‬ ‫ומחזירה‬ ‫קופונים‬
  • 98. ‫יותר‬ ‫לדעת‬ ‫רוצים‬? • https://www.programiz.com/python-programming/set
  • 99. ‫קפואות‬ ‫קבוצות‬ •‫הן‬ ‫קבוצות‬‫טיפוס‬‫בפייתון‬ ‫לשינוי‬ ‫שניתן‬ •‫לשינוי‬ ‫ניתנות‬ ‫שלא‬ ‫קבוצות‬ ‫של‬ ‫טיפוס‬ ‫קיים‬ ‫בפייתון‬frozenset
  • 100. ‫מסכמת‬ ‫שאלה‬ •‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA •‫סה‬"‫יש‬ ‫כ‬11‫אותיות‬:m,a,t,h,e,m,a,t,I,c,a
  • 101. ‫מסכמת‬ ‫שאלה‬ •‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA •‫שאלה‬ ‫זאת‬‫קומבינטורית‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬
  • 102. ‫מסכמת‬ ‫שאלה‬ •‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA •‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬ 2223212211311121111111111 29730 !2!2!2 !6 !2!3 !6 1 5 1 2 1 1 !2!2 !6 2 5 2 3 !3 !6 3 6 1 1 !2 !6 4 6 1 3 !6 6 7                                                            
  • 103. ‫מסכמת‬ ‫שאלה‬ •‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA •‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬ •‫טיפה‬ ‫פתרון‬‫מורכב‬ •‫נעזר‬‫עצמינו‬ ‫את‬ ‫לבדוק‬ ‫כדי‬ ‫בפייתון‬ 2223212211311121111111111 29730 !2!2!2 !6 !2!3 !6 1 5 1 2 1 1 !2!2 !6 2 5 2 3 !3 !6 3 6 1 1 !2 !6 4 6 1 3 !6 6 7                                                            
  • 104. ‫מסכמת‬ ‫שאלה‬ •‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA •‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬ •‫טיפה‬ ‫פתרון‬‫מורכב‬ •‫נעזר‬‫עצמינו‬ ‫את‬ ‫לבדוק‬ ‫כדי‬ ‫בפייתון‬ •‫אלגוריתם‬:‫בגודל‬ ‫הפרמוטציות‬ ‫כל‬ ‫נייצר‬6‫אותם‬ ‫ונשמור‬ ‫המילה‬ ‫של‬ ‫מאותיות‬ ‫בקבוצה‬,‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬ 2223212211311121111111111 29730 !2!2!2 !6 !2!3 !6 1 5 1 2 1 1 !2!2 !6 2 5 2 3 !3 !6 3 6 1 1 !2 !6 4 6 1 3 !6 6 7                                                            
  • 105. ‫מסכמת‬ ‫שאלה‬ •‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA •‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬ •‫מורכב‬ ‫טיפה‬ ‫פתרון‬,‫עצמינו‬ ‫את‬ ‫לבדוק‬ ‫כדי‬ ‫בפייתון‬ ‫נעזר‬ •‫אלגוריתם‬:‫בגודל‬ ‫הפרמוטציות‬ ‫כל‬ ‫נייצר‬6‫אותם‬ ‫ונשמור‬ ‫המילה‬ ‫של‬ ‫מאותיות‬ ‫בקבוצה‬,‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬ 2223212211311121111111111 29730 !2!2!2 !6 !2!3 !6 1 5 1 2 1 1 !2!2 !6 2 5 2 3 !3 !6 3 6 1 1 !2 !6 4 6 1 3 !6 6 7                                                            
  • 106.
  • 108. ‫השיעור‬ ‫של‬ ‫מטרה‬ ‫רקורסיבי‬ ‫מבנה‬ ‫עם‬ ‫ציורים‬ ‫לצייר‬ ‫איך‬ ‫ללמוד‬ ‫רקורסיבי‬ ‫פתרון‬ ‫של‬ ‫הבנה‬ ‫לשפר‬ ‫חדשים‬ ‫רקורסיביים‬ ‫ציורים‬ ‫לייצר‬ ‫ללמוד‬
  • 109. ‫מבוא‬ •‫של‬ ‫הרעיונות‬ ‫את‬ ‫טוב‬ ‫יותר‬ ‫הבין‬ ‫לעזור‬ ‫יכולים‬ ‫וגם‬ ‫יפה‬ ‫נראים‬ ‫גם‬ ‫רקורסיביים‬ ‫ציורים‬ ‫רקורסיה‬
  • 112. H-TREE •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree •‫הבא‬ ‫באופן‬ ‫העץ‬ ‫את‬ ‫נגדיר‬: •‫עצירה‬ ‫תנאי‬n=0‫דבר‬ ‫שום‬ ‫לצייר‬ ‫צריך‬ ‫לא‬
  • 113. H-TREE •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree •‫הבא‬ ‫באופן‬ ‫העץ‬ ‫את‬ ‫נגדיר‬: •‫עצירה‬ ‫תנאי‬n=0‫דבר‬ ‫שום‬ ‫לצייר‬ ‫צריך‬ ‫לא‬ •‫רקורסיה‬ ‫צעד‬‫נצייר‬H‫יחידה‬ ‫ריבוע‬ ‫באמצע‬+‫נצייר‬4H‫פי‬ ‫קטנים‬ ‫יותר‬ ‫ים‬2,‫כך‬ ‫של‬ ‫לקצה‬ ‫מחובר‬ ‫מהם‬ ‫אחד‬ ‫שכל‬H‫גדול‬,‫ה‬H‫נצייר‬ ‫הקטנים‬ ‫ים‬‫בעזרת‬4‫קריאות‬ ‫רקורסיביות‬
  • 114. H-TREE •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree •‫הבא‬ ‫באופן‬ ‫העץ‬ ‫את‬ ‫נגדיר‬: •‫עצירה‬ ‫תנאי‬n=0‫דבר‬ ‫שום‬ ‫לצייר‬ ‫צריך‬ ‫לא‬ •‫נצייר‬ ‫רקורסיה‬ ‫צעד‬H‫יחידה‬ ‫ריבוע‬ ‫באמצע‬+‫נצייר‬4H‫פי‬ ‫קטנים‬ ‫יותר‬ ‫ים‬2‫כך‬ ‫של‬ ‫לקצה‬ ‫מחובר‬ ‫מהם‬ ‫אחד‬ ‫שכל‬H‫גדול‬
  • 115. H-TREE •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬H-Tree •‫הבא‬ ‫באופן‬ ‫העץ‬ ‫את‬ ‫נגדיר‬: •‫עצירה‬ ‫תנאי‬n=0‫דבר‬ ‫שום‬ ‫לצייר‬ ‫צריך‬ ‫לא‬ •‫נצייר‬ ‫רקורסיה‬ ‫צעד‬H‫יחידה‬ ‫ריבוע‬ ‫באמצע‬+‫נצייר‬4H‫פי‬ ‫קטנים‬ ‫יותר‬ ‫ים‬2‫כך‬ ‫של‬ ‫לקצה‬ ‫מחובר‬ ‫מהם‬ ‫אחד‬ ‫שכל‬H‫גדול‬ https://www.youtube.com/watch?v=KiZwX5iykdo N=1 N=2 N=3
  • 116.
  • 117.
  • 118.
  • 124.
  • 126. ‫השיעור‬ ‫של‬ ‫מטרה‬ ‫ללמוד‬‫דרך‬‫שבעזרת‬‫ניתן‬‫להגדיר‬‫אלגוריתם‬ ‫של‬ ‫יעילות‬ ‫יעילות‬ ‫למדוד‬ ‫איך‬ ‫להבין‬‫אלגוריתם‬ ‫של‬ ‫לבעיות‬ ‫יעילים‬ ‫פתרונות‬ ‫לכתוב‬ ‫ללמוד‬
  • 128. ‫סיבוכיות‬-complexity •‫הדרישה‬‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬ ‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬
  • 129. ‫סיבוכיות‬-complexity •‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬ ‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬ •‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬
  • 130. ‫סיבוכיות‬-complexity •‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬ ‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬ •‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬ •‫דרישת‬‫יעילות‬‫שעלינו‬‫נדבר‬‫היום‬‫היא‬‫גם‬‫דרישה‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬
  • 131. ‫סיבוכיות‬-complexity •‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬ ‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬ •‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬ •‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬ •‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬ ‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64
  • 132. ‫סיבוכיות‬-complexity •‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬ ‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬ •‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬ •‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬ •‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬ ‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64
  • 133. ‫סיבוכיות‬-complexity •‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬ ‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬ •‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬ •‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬ •‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬ ‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64:‫מימוש‬‫אחד‬‫עילי‬‫ושני‬‫לא‬‫יעיל‬ •‫יעילות‬ ‫המושג‬ ‫את‬ ‫נגדיר‬ ‫היום‬‫בצורה‬‫בו‬ ‫להשתמש‬ ‫איך‬ ‫ונראה‬ ‫פורמלית‬
  • 134. ‫סיבוכיות‬-complexity •‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬ ‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬ •‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬ •‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬ •‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬ ‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64:‫מימוש‬‫אחד‬‫עילי‬‫ושני‬‫לא‬‫יעיל‬ •‫יעילות‬ ‫המושג‬ ‫את‬ ‫נגדיר‬ ‫היום‬‫בצורה‬‫בו‬ ‫להשתמש‬ ‫איך‬ ‫ונראה‬ ‫פורמלית‬ •‫יעילות‬ ‫על‬ ‫לדבר‬ ‫במקום‬ ‫זמן‬ ‫למדוד‬ ‫לא‬ ‫פשוט‬ ‫למה‬‫סיבוכיות‬?
  • 135. ‫סיבוכיות‬-complexity •‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬: •‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬ •‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬ •‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫גם‬ ‫אבל‬ ‫חשובה‬ ‫מאוד‬ ‫יעילות‬
  • 136. ‫סיבוכיות‬-complexity •‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬: •‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬ •‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬ •‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫גם‬ ‫אבל‬ ‫חשובה‬ ‫מאוד‬ ‫יעילות‬ •‫השאלות‬‫החשובות‬: •‫כמה‬‫זמן‬‫קוד‬‫שלנו‬‫רץ‬? •‫זיכרון‬ ‫בכמה‬‫משתמש‬‫קוד‬‫שלנו‬? •‫האם‬‫אפשר‬‫לשפר‬‫שלנו‬ ‫קוד‬ ‫ביצועי‬?‫ואיך‬?
  • 137. ‫סיבוכיות‬-complexity •‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬: •‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬ •‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬ •‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫יעילות‬ ‫גם‬ ‫אבל‬ ‫חשובה‬ ‫מאוד‬ •‫השאלות‬‫החשובות‬: •‫כמה‬‫זמן‬‫קוד‬‫שלנו‬‫רץ‬?–‫ריצה‬ ‫זמן‬ ‫סיבוכיות‬ ‫בשאלה‬ ‫נתרכז‬ ‫בעיקר‬ ‫אנו‬ •‫זיכרון‬ ‫בכמה‬‫משתמש‬‫קוד‬‫שלנו‬? •‫האם‬‫אפשר‬‫לשפר‬‫שלנו‬ ‫קוד‬ ‫ביצועי‬?‫ואיך‬? •‫דרישת‬"‫קריא‬ ‫קוד‬‫וקל‬‫חשובה‬ ‫גם‬ ‫לתחזוקה‬"‫במקום‬ ‫באה‬ ‫היא‬ ‫המקרים‬ ‫ברוב‬ ‫אבל‬ ‫שלישי‬
  • 138. ‫סיבוכיות‬-complexity •‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬: •‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬ •‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬ •‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫יעילות‬ ‫גם‬ ‫אבל‬ ‫חשובה‬ ‫מאוד‬ •‫השאלות‬‫החשובות‬: •‫כמה‬‫זמן‬‫קוד‬‫שלנו‬‫רץ‬?–‫ריצה‬ ‫זמן‬ ‫סיבוכיות‬ ‫בשאלה‬ ‫נתרכז‬ ‫בעיקר‬ ‫אנו‬ •‫זיכרון‬ ‫בכמה‬‫משתמש‬‫קוד‬‫שלנו‬? •‫האם‬‫אפשר‬‫לשפר‬‫שלנו‬ ‫קוד‬ ‫ביצועי‬?‫ואיך‬? •‫דרישת‬"‫קריא‬ ‫קוד‬‫וקל‬‫חשובה‬ ‫גם‬ ‫לתחזוקה‬"‫במקום‬ ‫באה‬ ‫היא‬ ‫המקרים‬ ‫ברוב‬ ‫אבל‬ ‫שלישי‬ ‫צריך‬‫לשמור‬‫על‬‫בלנס‬‫בין‬‫יעילות‬‫של‬‫הקוד‬‫וקלות‬‫הבנה‬‫של‬‫ו‬
  • 139. ‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬ •‫א‬ ‫פתרון‬: •‫ריצה‬ ‫זמן‬ ‫ולמדוד‬ ‫שונים‬ ‫קלטים‬ ‫עם‬ ‫אותו‬ ‫ולהריץ‬ ‫הקוד‬ ‫את‬ ‫לממש‬ •‫למשל‬‫בעזרת‬‫פונקציה‬time()
  • 140. ‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬ •‫א‬ ‫פתרון‬: •‫ריצה‬ ‫זמן‬ ‫ולמדוד‬ ‫שונים‬ ‫קלטים‬ ‫עם‬ ‫אותו‬ ‫ולהריץ‬ ‫הקוד‬ ‫את‬ ‫לממש‬ •‫למשל‬‫בעזרת‬‫פונקציה‬time() •‫יתרון‬: •‫פשוט‬‫לממש‬ •‫חסרונות‬: •‫האפשריים‬ ‫קלטים‬ ‫לכל‬ ‫הקוד‬ ‫את‬ ‫להריץ‬ ‫נוכל‬ ‫לא‬ •‫מה‬‫נעשה‬‫עם‬‫זמן‬ ‫המון‬ ‫רצה‬ ‫תוכנה‬(‫שנה‬)‫על‬‫קלט‬‫מסוים‬? •‫עוצרת‬ ‫לא‬ ‫תוכנה‬ ‫עם‬ ‫נעשה‬ ‫מה‬? •‫מריצים‬ ‫שבו‬ ‫במחשב‬ ‫תלוי‬ ‫ריצה‬ ‫זמן‬ •‫הזמן‬‫לא‬‫להרצה‬ ‫מהרצה‬ ‫להשתנות‬ ‫ויכול‬ ‫מדויק‬ •‫הזמן‬‫בה‬ ‫שמשמשים‬ ‫פייתון‬ ‫בגרסת‬ ‫תלוי‬
  • 141. ‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬ •‫א‬ ‫פתרון‬: •‫ריצה‬ ‫זמן‬ ‫ולמדוד‬ ‫שונים‬ ‫קלטים‬ ‫עם‬ ‫אותו‬ ‫ולהריץ‬ ‫הקוד‬ ‫את‬ ‫לממש‬ •‫למשל‬‫בעזרת‬‫פונקציה‬time() •‫פתרון‬‫ב‬: •‫עושה‬ ‫שהקוד‬ ‫בסיסיות‬ ‫פעולות‬ ‫כמות‬ ‫בעזרת‬ ‫ריצה‬ ‫זמן‬ ‫נאפיין‬ •‫נבטא‬‫את‬‫כמות‬‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫פעולות‬ •‫דומיננטיים‬ ‫לא‬ ‫מגורמים‬ ‫נתעלם‬ ‫בפונקציה‬
  • 142. ‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬ •‫א‬ ‫פתרון‬: •‫ריצה‬ ‫זמן‬ ‫ולמדוד‬ ‫שונים‬ ‫קלטים‬ ‫עם‬ ‫אותו‬ ‫ולהריץ‬ ‫הקוד‬ ‫את‬ ‫לממש‬ •‫למשל‬‫בעזרת‬‫פונקציה‬time() •‫פתרון‬‫ב‬: •‫עושה‬ ‫שהקוד‬ ‫בסיסיות‬ ‫פעולות‬ ‫כמות‬ ‫בעזרת‬ ‫ריצה‬ ‫זמן‬ ‫נאפיין‬ •‫נבטא‬‫את‬‫כמות‬‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫פעולות‬ •‫דומיננטיים‬ ‫לא‬ ‫מגורמים‬ ‫נתעלם‬ ‫בפונקציה‬ •‫נעזר‬‫במודל‬‫חישוב‬‫של‬‫מכונת‬‫חישוב‬‫עם‬‫גישה‬‫אקראית‬(random access machine) •‫פקודה‬ ‫לאחר‬ ‫פקודה‬ ‫מבצעת‬ ‫המכונה‬ •‫פעולות‬‫בסיסיות‬:‫השמה‬,‫השוואה‬,‫אריתמטיות‬ ‫פעולות‬,‫בזיכרון‬ ‫לאובייקט‬ ‫גישה‬ •‫מודל‬‫חישוב‬‫זה‬‫הוא‬‫ושימושי‬ ‫סביר‬
  • 143. ‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬ •‫ב‬ ‫פתרון‬': •‫עושה‬ ‫שהקוד‬ ‫בסיסיות‬ ‫פעולות‬ ‫כמות‬ ‫בעזרת‬ ‫ריצה‬ ‫זמן‬ ‫נאפיין‬ •‫נבטא‬‫את‬‫כמות‬‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫פעולות‬ •‫דומיננטיים‬ ‫הלא‬ ‫מגורמים‬ ‫נתעלם‬ ‫בפונקציה‬ •‫נעזר‬‫במודל‬‫חישוב‬‫של‬‫מכונת‬‫חישוב‬‫עם‬‫גישה‬‫אקראית‬(random access machine) •‫פקודה‬ ‫לאחר‬ ‫פקודה‬ ‫מבצעת‬ ‫המכונה‬ •‫פעולות‬‫בסיסיות‬:‫השמה‬,‫השוואה‬,‫אריתמטיות‬ ‫פעולות‬,‫בזיכרון‬ ‫לאובייקט‬ ‫גישה‬ •‫מודל‬‫חישוב‬‫זה‬‫הוא‬‫סביר‬,‫שימושי‬ •‫מחשב‬ ‫של‬ ‫מהירות‬ ‫חשובה‬ ‫לא‬ ‫כעת‬,‫לדעת‬ ‫רק‬ ‫חשוב‬ ‫פייתון‬ ‫של‬ ‫גרסת‬ ‫חשובה‬ ‫לא‬ ‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫בחישוב‬ ‫הפעולות‬ ‫כמות‬
  • 144. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫אבל‬‫כמות‬‫פעולות‬‫חישוב‬‫יכולה‬‫להיות‬‫שונה‬‫עבור‬‫קלטים‬‫שוני‬‫ם‬
  • 145. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫אבל‬‫כמות‬‫פעולות‬‫חישוב‬‫יכולה‬‫להיות‬‫שונה‬‫עבור‬‫קלטים‬‫שונים‬ •‫למשל‬‫אם‬‫נרצה‬‫האם‬ ‫לבדוק‬‫איבר‬‫מופיע‬‫ברשימה‬:
  • 146. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫אבל‬‫כמות‬‫פעולות‬‫חישוב‬‫יכולה‬‫להיות‬‫שונה‬‫עבור‬‫קלטים‬‫שונים‬ •‫למשל‬‫אם‬‫נרצה‬‫האם‬ ‫לבדוק‬‫איבר‬‫מופיע‬‫ברשימה‬: •‫בדיקות‬ ‫מעט‬ ‫נבצע‬ ‫רשימה‬ ‫בהתחלת‬ ‫נמצא‬ ‫האיבר‬ ‫אם‬ •‫הרשימה‬ ‫לאורך‬ ‫ששווה‬ ‫פעולות‬ ‫כמות‬ ‫נעשה‬ ‫ברשימה‬ ‫נמצא‬ ‫לא‬ ‫בכלל‬ ‫האיבר‬ ‫ואם‬
  • 147. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬?
  • 148. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬? •‫קיים‬‫מספר‬‫גישות‬: •‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫כל‬ ‫בין‬‫הקלטים‬‫באותו‬‫אור‬‫ך‬best case •‫זמן‬‫ריצה‬‫כל‬ ‫בין‬ ‫ממוצע‬‫הקלטים‬‫אורך‬ ‫באותו‬average case •‫זמן‬‫ריצה‬‫ביותר‬ ‫הגרוע‬ ‫במקרה‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬worst case
  • 149. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬? •‫קיים‬‫מספר‬‫גישות‬: •‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫בין‬‫כל‬‫הקלטים‬‫באותו‬‫אור‬‫ך‬best case •‫זמן‬‫ריצה‬‫כל‬ ‫בין‬ ‫ממוצע‬‫הקלטים‬‫אורך‬ ‫באותו‬average case •‫זמן‬‫ריצה‬‫ביותר‬ ‫הגרוע‬ ‫במקרה‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬worst case •‫עבור‬‫חיפוש‬‫ליניארי‬‫בלולאה‬‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬n‫נקבל‬: •best case: •average case: •:worst case
  • 150. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬? •‫קיים‬‫מספר‬‫גישות‬: •‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫בין‬‫כל‬‫הקלטים‬‫באותו‬‫אור‬‫ך‬best case •‫זמן‬‫ריצה‬‫כל‬ ‫בין‬ ‫ממוצע‬‫הקלטים‬‫אורך‬ ‫באותו‬average case •‫זמן‬‫ריצה‬‫ביותר‬ ‫הגרוע‬ ‫במקרה‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬worst case •‫עבור‬‫חיפוש‬‫ליניארי‬‫בלולאה‬‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬n‫נקבל‬: •best case:‫פעולה‬1 •average case:n/2‫פעולות‬ •:worst casen‫פעולות‬
  • 151. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫אם‬‫כמות‬‫פעולות‬‫ריצה‬‫תלויה‬‫בקלט‬,‫נמדוד‬ ‫איך‬‫אותה‬? •‫קיים‬‫מספר‬‫גישות‬: •‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫בין‬‫כל‬‫הקלטים‬‫באותו‬‫אור‬‫ך‬best case •‫זמן‬‫ריצה‬‫כל‬ ‫בין‬ ‫ממוצע‬‫הקלטים‬‫אורך‬ ‫באותו‬average case •‫זמן‬‫ריצה‬‫ביותר‬ ‫הגרוע‬ ‫במקרה‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬worst case •‫עבור‬‫חיפוש‬‫ליניארי‬‫בלולאה‬‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬n‫נקבל‬: •best case:‫פעולה‬1 •average case:n/2‫פעולות‬ •:worst casen‫פעולות‬ •‫אנו‬‫נתרכז‬‫בניתוח‬‫סיבוכיות‬‫במקרה‬‫הגרוע‬‫ביותר‬(‫חסם‬‫עליון‬)
  • 153. ‫דוגמא‬1:‫עצרת‬ ‫חישוב‬ •‫חישוב‬N‫עצרת‬‫דורש‬:5*n+1‫פעולות‬ •‫עבור‬n‫מספיק‬‫גדול‬‫קבוע‬1‫נתעלם‬ ‫ולכן‬ ‫תוצאה‬ ‫על‬ ‫משמעותי‬ ‫באופן‬ ‫תשפיע‬ ‫לא‬ ‫כבר‬ ‫שצריך‬ ‫נגיד‬ ‫ואז‬ ‫מימנו‬5n‫לחישוב‬ ‫פעולות‬n‫עצרת‬‫נתונה‬ ‫פונקציה‬ ‫בעזרת‬ •‫אנחנו‬‫גם‬‫נתעלם‬‫מקבוע‬‫נגיד‬ ‫ופשוט‬ ‫סיבוכיות‬ ‫בניתוח‬ ‫המשמעותי‬ ‫איבר‬ ‫של‬ ‫כפלי‬ ‫צריך‬~n‫פעולות‬‫או‬c*n‫פעולות‬(O(n))
  • 154. ‫סיכום‬ •‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫עבור‬ ‫ביותר‬ ‫הגרוע‬ ‫למקרה‬ ‫סיבוכיות‬ ‫נחשב‬ •‫נתעלם‬‫מגורמים‬‫פחות‬‫משמעותיים‬ •‫משמעותי‬ ‫גורם‬ ‫של‬ ‫כפלי‬ ‫מקבוע‬ ‫גם‬ ‫נתעלם‬
  • 155. ‫תרגי‬‫ל‬ •‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬: •‫תשובה‬:
  • 156. ‫תרגי‬‫ל‬ •‫קלט‬ ‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬n: •‫תשובה‬:5n+2000~5n~c*n •O(n)
  • 157. ‫תרגי‬‫ל‬ •‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬: •‫תשובה‬:
  • 158. ‫תרגי‬‫ל‬ •‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬: •‫תשובה‬:5*log_2(n)+1001~5*log2(n) •O(logn)
  • 159. ‫תרגי‬‫ל‬ •‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬‫הגרוע‬‫ביותר‬‫עבור‬‫קלט‬:‫בגולד‬ ‫רשימה‬n •‫תשובה‬:
  • 160. ‫תרגי‬‫ל‬ •‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬‫קלט‬ ‫עבור‬:‫בגולד‬ ‫רשימה‬n •‫תשובה‬:5n+2 •O(n)
  • 161. ‫דוגמא‬‫מסכמ‬‫ת‬ •‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬‫קלט‬ ‫עבור‬:n •‫תשובה‬:
  • 162. ‫דוגמא‬‫מסכמ‬‫ת‬ •‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬‫קלט‬ ‫עבור‬:n •‫תשובה‬:100+n+n^2 •O(n^2) const n n^2 100+n+n^2 100 100 10000 10200 100 1000 1000000 1001100 100 10000 100000000 100010100 100 100000 10000000000 10000100100 100 1000000 1E+12 1E+12