SlideShare una empresa de Scribd logo
1 de 162
Descargar para leer sin conexión
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬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

Más contenido relacionado

Más de 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
 

Más de 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