J.V. Guttag, Introduction to Computation and Programming Using Python, MIT Press, 2013.

Σχετικά έγγραφα
חורף תש''ע פתרון בחינה סופית מועד א'

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

סדרות - תרגילים הכנה לבגרות 5 יח"ל

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

ל הזכויות שמורות לדפנה וסטרייך

gcd 24,15 = 3 3 =

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

תרגיל 13 משפטי רול ולגראנז הערות

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

3-9 - a < x < a, a < x < a

ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי

תרגול פעולות מומצאות 3

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

גבול ורציפות של פונקציה סקלרית שאלות נוספות

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

סיכום- בעיות מינימוםמקסימום - שאלון 806

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

קיום ויחידות פתרונות למשוואות דיפרנציאליות

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון.

Logic and Set Theory for Comp. Sci.

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

שאלה 1 V AB פתרון AB 30 R3 20 R

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

רשימת משפטים והגדרות

פרק 13 רקורסיה רקורסיה רקורסיה רקורסיות פשוטות: חישוב עצרת. תמונת המחסנית ב-() factorial רקורסיות פשוטות: פיבונאצ'י

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

מתמטיקה בדידה תרגול מס' 12

תרגול 8: מטלאב לולאות

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

{ : Halts on every input}

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

רשימת בעיות בסיבוכיות

מבוא למדעי המחשב מבוא למדעי המחשב מ' - תירגול 14

תרגיל 7 פונקציות טריגונומטריות הערות

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

הגדרה: מצבים k -בני-הפרדה

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

x a x n D f (iii) x n a ,Cauchy

מודלים חישוביים תרגולמס 5

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

אינפי - 1 תרגול בינואר 2012

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

תרגול מס' 6 פתרון מערכת משוואות ליניארית

תכנות בשפת C פרק שלישי: בקרת זרימה שייקה בילו יועץ ומרצה בכיר למדעי המחשב וטכנולוגית מידע מומחה למערכות מידע חינוכיות, אקדמיות ומנהליות

אלגוריתמים ללכסון מטריצות ואופרטורים

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

אוסף שאלות מס. 3 פתרונות

הגדרה 0.1 טיעון הוא תקף אם בכל פעם שההנחות נכונות גם המסקנה נכונה.

co ארזים 3 במרץ 2016

שיעור 1. זוויות צמודות

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

מבני נתונים מדעי המחשב שאלון: מועד ב' תשע"ו מדעי המחשב פתרון בחינת הבגרות. Java שאלה 1. blog.csit.org.

אלגברה ליניארית 1 א' פתרון 2

נספח לפרק 10 דוגמא לאנליזה של מכונת מצבים ננסה להבין את פעולתה של מ כונת המצבים הבאה : Input X. q 0 q 1. output D FF-0 D FF-1. clk

התפלגות χ: Analyze. Non parametric test

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות

מתמטיקה בדידה תרגול מס' 5

אלגברה לינארית (1) - פתרון תרגיל 11

מבני נתונים ואלגוריתמים תרגול #11

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

אלגברה ליניארית (1) - תרגיל 6

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית:

אלגברה מודרנית פתרון שיעורי בית 6

תורת הגרפים - סימונים

(ספר לימוד שאלון )

דיאגמת פאזת ברזל פחמן

הרצאה 7 טרנזיסטור ביפולרי BJT

מבוא ללוגיקה מתמטית 80423

c ארזים 15 במרץ 2017

מתמטיקה בדידה תרגול מס' 13

טריגונומטריה הגדרות הפונקציות הטריגונומטריות הבסיסיות

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

משפטי בקרה ולולאות שעור מס. 3 כל הזכויות שמורות דר' דרור טובי המרכז האוניברסיטאי אריאל

תורת הקבוצות בפברואר 2012 תקציר סיכום הרצאות של פרופסור רון לבנה בשנת לימודים 2012

מצולעים מצולעהוא צורה דו ממדית,עשויה קו"שבור"סגור. לדוגמה: משולש, מרובע, מחומש, משושה וכו'. לדוגמה:בסרטוט שלפappleיכם EC אלכסוןבמצולע.

תורת הקבוצות יובל קפלן סיכום הרצאות פרופ ארז לפיד בקורס "תורת הקבוצות" (80200) באוניברסיטה העברית,

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז

א הקיטסי ' טטסל אובמ רלדנ הינור בג '

הסיכום סמסטר ב' תשס"ז

( k) ( ) = ( ) ( ) ( ) ( ) A Ω P( B) P A B P A P B תכונות: A ו- B ב"ת, אזי: A, B ב "ת. בינומי: (ההסתברות לk הצלחות מתוך n ניסויים) n.

פולינומים אורתוגונליים

אלגברה ליניארית 1 א' פתרון 7

הרצאה. α α פלוני, וכדומה. הזוויות α ל- β שווה ל-

תכנון דינאמי. , p p p והמטריצה המתקבלת היא בגודל

Transcript:

מבוא למדעי המחשב שיעור 5: רקורסיה מעט מהשיעור מתבסס על פרקים 4.2 ו- 4.3 בספר: J.V. Guttag, Introduction to Computation and Programming Using Python, MIT Press, 2013. לקריאה נוספת: Leonardo Pisano (Fibonacci), Il Liber Abbaci,1202. Parmanand Singh, the so-called Fibonacci numbers in ancient and medieval India, Historia Mathematica, 12:229-244, 1985. Sarina Singh et al., India travel guide 15th ed., Lonely Planet, 2013.

דוגמה תזכורת: אלגוריתם אוקלידס למציאת מחלק משותף גדול ביותר מחליף את החישוב של GCD(m,n) בחישוב של.GCD(n,m%n) נתרגם זאת מילולית לקוד: זה יעבוד?

קוד מתוקן אם נמחק את ה-# משורת ההדפסה, מה תדפיס 45 27 הקריאה?gcd(45,27) 27 18 18 9 9 0 זו ההדפסה של ערך הביטוי gcd(45,27) 9

עוד דוגמה print(x, y) >>> fast_power(2,10) 2 10 4 5 16 2 256 1 65536 0 1024.0

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

תכנות רקורסיבי פונקציה שהמימוש שלה מכיל קריאה לעצמה נקראת פונקציה רקורסיבית. קריאה לפונקציה מתוך עצמה נקראת קריאה רקורסיבית. על מנת שהביצוע לא ימשיך לעד, חשוב להקפיד על: הגדרה ומימוש של תנאי עצירה; כאשר התנאי מתקיים, אין קריאה רקורסיבית. בכל קריאה רקורסיבית מתקדמים לעבר קיום תנאי העצירה..1.2

רקורסיה ואינדוקציה יש הרבה סדרות מתמטיות מעניינות שמוגדרות באינדוקציה. כלומר, ערך האבר ה- n -י מוגדר על סמך ערכים קודמים בסדרה. דוגמה: הסדרה 3!, 2!, 1!, מוגדרת כך: 1! = 1 n! = n (n-1)! בסדרה כזו קל לכתוב קוד שמחשב את האבר ה- n -י ברקורסיה.

חישוב!n שימוש לדוגמה: f = factorial(5) print(f) מה יודפס? 120

ניהול הזיכרון בכל קריאה לפונקציה נוצר עותק חדש שלה. בעותק: הקצאה חדשה של כל המשתנים הפנימיים, כולל הפרמטרים שמופיעים בחתימה שלה. השמה התחלתית של ערכים לפרמטרים לפי מה שהועבר בקריאה אליה. איתחול של הפקודה הבאה לבצע בקוד - בעותק החדש זו הפקודה הראשונה בפונקציה.

איך זה נראה? n = 3 n = 2 n = 1 factorial(3) return n*factorial(n-1) return n*factorial(n-1) return 1 6 2 1

להשוואה הקוד הרקורסיבי תואם להגדרה באינדוקציה ויפה יותר אבל דורש יותר זיכרון במהלך הביצוע - בתחתית הרקורסיה מוחזקים בו-זמנית n עותקים של.factorial

סדרת פיבונצ י F1 = F2 = 1 הסדרה מוגדרת באינדוקציה: Fn = Fn-2 + Fn-1 האברים הראשונים בסדרה: 21, 1, 1, 2, 3, 5, 8, 13, הערה: הסדרה היתה ידועה למתמטיקאים הודים לפני פיבונצ י: पङ गल - Pingala, c.200 B.C. वरह ङ क - Virhanka, c.700 ग प ल - Gopala, before 1135 ह मचन द र स र - Acharya Hemachandra, c.1150 זוג ארנבים מזדווגים מגיל חודש. ההריון נמשך חודש, בסופו נולד זוג נוסף. מתחילים מזוג אחד בגיל 0. ארנבים לא מתים אף פעם. כמה זוגות יהיו אחרי n חודשים?

inspirationgreen.com : מתוך

מימוש ברקורסיה

הערכת ביצועים נספור כמה קריאות מתבצעות ל- fibonacci. נסמן ב-( T(n את מספר הקריאות שנדרשות כדי לחשב את.fibonacci(n) T(1) = T(2) = 1 T(n) = 1 + T(n-2) + T(n-1) הפיתרון מקיים - 1 n T(n) = 2F (הוכחה באינדוקציה). ידוע כי F n הוא השלם הקרוב ביותר ל- 5 / n (Φ 1.618 ).Φ זה מספר שגדל בקצב מאוד מהיר! למשל: F. 100 3.54X10 20 צריכת הזיכרון: בשלב מסויים בריצה פתוחים בבת אחת n עותקים של הפונקציה.

מה הבעייה? אנחנו מחשבים מחדש אותם ערכים פעם אחר פעם. למשל, עבור 10==n, הקריאה fibonacci(n-2) מחשבת את F8 וגם הקריאה fibonacci(n-1) מחשבת את F8 באחת הקריאות הרקורסיביות שם. הערכים F1 ו- F2 מוחזרים סך הכל Fn פעמים. אם נזכור את שני הערכים האחרונים, לא נצטרך לחשב מחדש ברקורסיה את כל הערכים הקודמים.

F5 F3 F4 F1 F2 F2 F3 F1 F2

מימוש בלולאה הלולאה מתבצעת 2-n פעמים. נדרש מספר קבוע של משתנים סקלרים.

מגדלי האנוי האגדה מספרת: במקדש קאשי וישוואנאת (בעיר ואראנסי בהודו) יש חדר גדול ובו שלושה מוטות עליהם מושחלות 64 דיסקיות זהב עגולות שהקוטר שלהן שונה זו מזו. כוהנים ברהמינים, בהשראת נבואה עתיקה, עסוקים בהעברת הדיסקיות מהמוט הראשון לשני, בעזרת השלישי. בתחילה, הדיסקיות היו מושחלות על המוט הראשון בהתאם לקוטרן - הגדולה ביותר למטה והקטנה ביותר למעלה. הדיסקיות מועברות על פי הכללים המחייבים של ברהמה: יש להעביר את הדיסקיות אחת-אחת. מותר להעביר רק דיסקית מראש ערמה אחת לראש ערמה אחרת. אסור להניח דיסקית גדולה יותר על גבי דיסקית קטנה יותר. לכשתסתיים העברת הדיסקיות, יבוא העולם לקיצו. בגרסה אחרת של האגדה, אלו נזירים בודהיסטים שנמצאים בעיר האנוי Nội) (Hà בווייטנאם. משחק הדיסקיות וכנראה גם האגדה הומצאו על ידי המתמטיקאי הצרפתי אדוארד לוקאס ב- 1883. הערה: קאשי וישוואנאת הוא אחד מ- 12 מקדשי הג יוטירלינגה ङ ग) (Jyotirlinga - ज य त लर של שיווה. למה במקדש של שיווה शव) (Shiva - פועלים לפי הכללים של ברהמה ब रह म )?(Brahmā -

המחשה עם 9 דיסקיות

פיתרון ברקורסיה, n דיסקיות אם == 0 n, אין צורך לעשות דבר. אחרת (אם > 0,(n נעביר 1-n דיסקיות ממוט 1 למוט 3, בעזרת מוט 2. נעביר את הדיסקית האחרונה ממוט 1 למוט 2. נעביר 1-n דיסקיות ממוט 3 למוט 2, בעזרת מוט 1. http://towersofhanoi.info/animate.aspx

מימוש

ניתוח כמה פעמים קוראים לפונקציה?hanoi - נסמן ב-( T(n את מספר הקריאות שמתבצעות כאשר מפעילים את.hanoi(n, ) T(0) = 1 T(n) = 1 + 2T(n-1) נקבל n+1-1 T(n) = 2 (הוכחה באינדוקציה)

(המשך) כמה צעדים יש בפיתרון? - נסמן ב-( S(n את מספר הצעדים שמדפיסה הקריאה ל-.hanoi(n, ) S(0) = 0 S(n) = 1 + 2S(n-1) נקבל - 1 n S(n) = 2 (הוכחה באינדוקציה)

קץ העולם האם צריך לחשוש שהאגדה נכונה? - אפשר להראות שחייבים לבצע לפחות - 1 n 2 העברות של דיסקית כדי לפתור את הבעייה. מספר ההעברות שהברהמינים צריכים לבצע הוא:.2 64-1 = 18,446,744,073,709,551,615 אם כל העברה לוקחת שנייה, זה ייקח כ- 585 מיליארד שנים. זה יותר מפי 42 מגיל היקום ויותר מפי 127 מגיל כדור הארץ.

מבוא למדעי המחשב שיעור 5 א: תיעוד פונקציות

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

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

עוד על הממשק מקובל לתעד את הממשק ב- docstring, כלומר מחרוזת התחומה בשלושה זוגות גרשיים בתחילתה ובסופה. מחרוזת כזו יכולה להשתרע על פני מספר שורות. שמים את התיעוד מייד אחרי חתימת הפונקציה. הפעלת help(func) מדפיסה את ה- docstring שמופיע בתוך הפונקציה.func לחילופין אפשר לבצע את הפקודה.print(func. doc ) יש להתייחס לתיעוד כאל חוזה שמפרט מה הפונקציה מבטיחה לבצע ומה התנאים שהיא דורשת לשם כך. אם הקלט אינו תקין, הפונקציה לא מבטיחה דבר, אלא אם כן צויין במפורש שהפונקציה מעלה הודעות שגיאה על בעיות מסויימות בקלט.