מבוא למדעי המחשב הרצאה מספר 12: רקורסיה

Slides:



Advertisements
מצגות קשורות
אוגרים ומונים – Registers & Counters
Advertisements

תכנות בשפת C תרגול 11 - קבצים.
הרצאה 02 סוגי משתנים קרן כליף.
יהי X משתנה מקרי חיובי. אזי
מבוא לתכנות ב-JAVA מעבדה 1
טיפים מנצחים: לחפש ולמצוא במהירות ובדיוק
תרגול 11: רקורסיה ופיתוח טלסקופי
תרגול 11 מלכודות בניית ה-Debugger
Mitug.com- אתר מיתוג של פטריק
לולאות Department of Computer Science-BGU 19 יולי 19.
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
תרגול 5: לולאות ומערכים.
מיונים (SORTS) שמושים ביישומים רבים
ייצוג קבוצות מתוחכם עצי חיפוש בינאריים BINARY SEARCH TREES
תרגול מס' 8 משתנים מיוחסים מבוא ל-C++ קלט/פלט ב-C++
מבוא למדעי המחשב מ' - תירגול 9
תירגול 10: מבנים (structs) וקבצים
רמי כהן, מדעי המחשב, הטכניוןכל הזכויות שמורות ©
Jump tables, review questions
הרצאה 3: משפטים, תנאים ולולאות
רקורסיה ופתרונות רקורסיביים
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
פעולות אריתמטיות קרן כליף.
Computer Programming תרגול 1 Summer 2016
תירגול 11: מיונים וחיפוש בינארי
רקורסיה ופתרונות רקורסיביים

סיכום - TCP TCP מבטיח העברה אמינה של המידע בסדר הנכון לרמת האפליקציה
תירגול 3: לולאות, קלט, וטיפוסים
תכנות בשפת C תרגול 8 רקורסיה
קשרי מקסוול (מתכון לתמרונים אלגבריים בבעיות תרמודינאמיות)
Engineering Programming A
תירגול 8:מצביעים והקצאה דינאמית
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מבוא למדעי המחשב הרצאה 9: רקורסיה
תרגול 6: פונקציות, סוגי משתנים, top-down design
S. Even, "Graph Algorithms", Computer Science Press, 1979
תירגול 2: מבוא לתיכנות ב-C
Carry Save Adder (CSA).
כל הזכויות שמורות לגבריאל אנקרי © 2017
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
Web Services Delegates and Events ליווי מקצועי : ארז קלר
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
מבוא לתכנות למערכות מידע
אלגוריתמי מיון רקורסיביים
כל הזכויות שמורות לגבריאל אנקרי © 2017
תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר
Marina Kogan Sadetsky –
מת"מ מעבדה 7-8 רשימות.
Solving Simultaneous Linear Equations Using GPU
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מבוא לתכנות ב- JAVA מעבדה 4
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
Ci,j=Σκ Ai,κxBκ,j מכפלת מטריצות מכפלת מטריצות ב- O(n3)
Introduction to Programming in C
תרגול 12: backtracking.
מצביעים Pointers – המשך...
תרגול מס' 7: Memoization Quicksort תרגילים מתקדמים ברקורסיה
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
רקורסיה ופתרונות רקורסיביים
Java Programming רשימות מקושרות - המשך
Pre-Medical Studies לימודי קדם רפואה B.Sc..
תוכנה 1 בשפת Java הקדמה שחר מעוז בית הספר למדעי המחשב
Engineering Programming A
רשימות מקושרות עבודה עם קבצים דוגמה
תמליל מצגת:

מבוא למדעי המחשב 234111 הרצאה מספר 12: רקורסיה מבוא למדעי המחשב 234111הרצאה מספר 2 רמי כהן, מדעי המחשב, הטכניוןכל הזכויות שמורות ©

הגדרה Wikipedia רֵקוּרְסִיָּה (בעברית: נסיגה) היא תופעה שכל מופע שלה מכיל מופע נוסף שלה, כך שהיא מתרחשת ומשתקפת בשלמותה בתוך עצמה שוב ושוב. נכתב ע"י יעל ארז. © כל הזכויות שמורות.

אלגוריתם רקורסיבי – צעד הרקורסיה מתי נשתמש ברקורסיה? נתונה בעיה לקלט בגודל n. ניתן לפתור בקלות אם היה לנו את הפתרון לאותה בעיה עם קלט בגודל n-1. דוגמא – חישוב עצרת. אם ידוע (n-1)! נותר לכפול ב n כדי לקבל את n!. טכנית ממומש ע"י פונקציה הקוראת לעצמה או לפונקציה הקוראת לה. נכתב ע"י יעל ארז. © כל הזכויות שמורות.

אלגוריתם רקורסיבי – תנאי עצירה מתי נעצור את הרקורסיה? כאשר הקלט כזה שהפתרון ידוע מראש, נעצור את הרקורסיה. בדוגמת העצרת – נעצור כאשר n הוא 0. נכתב ע"י יעל ארז. © כל הזכויות שמורות.

אלגוריתם רקורסיבי – חישוב עצרת 1. מניחים שעבור קלט קטן יותר הבעיה פתורה. כלומר (n-1)! נתון. 2. פותרים את הבעיה באמצעות הפתרון הנתון. n!=n*(n-1)! 3. מוסיפים תנאי עצירה – פתרון ידוע מראש לקלט בסיסי. עבור n=0 הפתרון ידוע והוא 1. תנאי העצירה יהיה לפני הקריאה הרקורסיבית! int factorial(int n) { } if (n==0) return 1; int res = factorial(n-1); return res*n; הוכחה באינדוקציה... נכתב ע"י יעל ארז. © כל הזכויות שמורות.

מבנה פונקציה רקורסיבית return_type name(parameter list) { } תנאי עצירה צעד רקורסיבי לציין שזהו מבנה טיפוסי לרוב הרקורסיות לממש את כל הדוגמאות. להראות את מחסנית הקריאות לפחות בדוגמא אחת מבוא למדעי המחשב 234111הרצאה מספר 2 רמי כהן, מדעי המחשב, הטכניוןכל הזכויות שמורות ©

אלגוריתם רקורסיבי – חישוב עצרת נעקוב אחר הקריאות הרקורסיביות עבור n=3: x=factorial(3) x=6 factorial(2)*3 2*3 צעד הרקורסיה factorial(1)*2 קיפול הרקורסיה 1*2 factorial(0)*1 1*1 return 1 תנאי עצירה נכתב ע"י יעל ארז. © כל הזכויות שמורות.

אלגוריתם רקורסיבי – חישוב עצרת איך נראית המחסנית? return 1 factorial(0)*1 factorial(1)*2 factorial(2)*3 x=factorial(3) נכתב ע"י יעל ארז. © כל הזכויות שמורות.

אלגוריתם רקורסיבי – חישוב עצרת איך נראית המחסנית? return 1 factorial(0)*1 1*1 factorial(1)*2 1*2 factorial(2)*3 2*3 x=factorial(3) x=6 נכתב ע"י יעל ארז. © כל הזכויות שמורות.

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

אלגוריתם רקורסיבי – חישוב חזקה f(x,n) מחזירה את החזקה ה n-ית של x. int f(int x, int n) { } נכתב ע"י יעל ארז. © כל הזכויות שמורות.

רקורסיה – דוגמאות נוספות מיון מערך a בגודל n סכום האיברים במערך בגודל n אםn<=1 המערך ממוין מצא את האיבר הגדול ביותר והעבר אותו למקום האחרון מיין מערך a בגודל n-1. אם n==0 החזר 0 סכום האיברים במערך בגודל n-1 + האיבר האחרון נכתב ע"י יעל ארז. © כל הזכויות שמורות.

רקורסיה – סיכום ביניים פתרון ע"י צעד רקורסיבי ותנאי עצירה. המתכנת מתייחס לקריאה רקורסיבית כקריאה רגילה לפונקציה. המנגנון של C מנהל עבורנו את הקריאה הרקורסיבית, המשתנים הלוקאליים ולאן לחזור על גבי המחסנית. דוגמאות נוספות לרקורסיה בהמשך הקורס נכתב ע"י יעל ארז. © כל הזכויות שמורות.

סיבוכיות זמן ומקום של רקורסיות void helper(int n) { if (n <= 1) { printf(“The End!"); return; } helper(n/3); קבע\י את סיבוכיותה של התוכנית הבאה כפונקציה של n בזמן T(n) ובמקום S(n). סיבוכיות זמן: סה"כ זמן הריצה, כלומר סכום הזמנים של כל הקריאות לפונקציה סיבוכיות מקום: הזכרון המקסימלי הנדרש ע"י מסלול הקריאות הגדול ביותר (מבחינת צריכת זכרון) 11 הרצאה מבוא למדעי המחשב. כל הזכויות שמורות ©

סיבוכיות זמן ומקום של רקורסיות עץ הקריאות הרקורסיבי כל צומת מתאר ריצה של הפונקציה קשת מתארת קריאה לפונקציה נצייר את העץ עבור n=9: להדגים על כל המימושים מבוא למדעי המחשב 234111הרצאה מספר 2 רמי כהן, מדעי המחשב, הטכניוןכל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © עץ הקריאות הרקורסיבי void helper(int n) { if (n <= 1) { printf(“The End!"); return; } helper(n/3); עומק המחסנית בפעולת הרקורסיה תהיה log3n וזהו גם גודל הזיכרון שיידרש, כלומר, S(n)=Θ(logn). h(9) h(3) h(3) h(3) h(1) h(1) h(1m) h(1) h(1) h(1m) h(1) h(1) h(1) Print Print Print Print Print Print Print Print Print 11 הרצאה מבוא למדעי המחשב. כל הזכויות שמורות ©

טור רקורסיבי – סיבוכיות מקום נסמן ב S(n) את כמות הזכרון הנדרש של הפונקציה ונבטא אותו כפונקציה של S(k) כאשר k<n S(n) = 1+max(S(n/3), S(n/3), S(n/3)) = 1+S(n/3) = 1+)1+S(n/3^2)) = … = 1+1+…+1+S(n/3^k) = log(n)+S(1)=log(n)+1 כלומר, S(n)=Θ(logn). void helper(int n) { if (n <= 1) { printf(“The End!"); return; } helper(n/3); K פעמים 11 הרצאה מבוא למדעי המחשב. כל הזכויות שמורות ©

מבוא למדעי המחשב. כל הזכויות שמורות © טור רקורסיבי – סיבוכיות זמן נסמן ב T(n) את כמות הזכרון הנדרש של הפונקציה ונבטא אותו כפונקציה של T(k) כאשר k<n void helper(int n) { if (n <= 1) { printf(“The End!"); return; } helper(n/3); כלומר, T(n)=Θ(n). 11 הרצאה מבוא למדעי המחשב. כל הזכויות שמורות ©

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