המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

רקורסיה ופתרונות רקורסיביים

מצגות קשורות


מצגת בנושא: "רקורסיה ופתרונות רקורסיביים"— תמליל מצגת:

1 רקורסיה ופתרונות רקורסיביים
תוכן העניינים מבוא לקורס רקורסיה ופתרונות רקורסיביים מבוא – מבעיות לתכנות 7/28/2019 Data Structures, CS TAU

2 קורס במבני נתונים מתרגלים: דרישות: dannyf@post.tau.ac.il עודד שוורץ
דני פלדמן מתרגלים: דרישות: 10% עבודות תאורטיות 10% עבודות מעשיות (תכנות) -- רקע חובה: מבוא להסתברות במקביל, הסתברות, תוכנה 1 במקביל, תכנות ב- JAVA %80 בחינה סופית 7/28/2019 Data Structures, CS TAU

3 חומר לקריאה חומר חובה: ספרים: ספרי עזר: ספר חובה
Introduction to Algorithms by: T. H. Cormen, C. E. Leiserson, R. L. Rivest ספרי עזר: Data Structures and Algorithms by: Aho, Hopcroft, Ulman ספר חובה חומר חובה: Cormen פרקים: כל החומר הנלמד בכיתה I. 2, 4 II. 7, 8, 9 10 III. 11, 12, 13 V. 19, 22 7/28/2019 Data Structures, CS TAU

4 למה מבני נתונים??? שאלות: תשובות (למה לא!) למה? איך קשור למחשבים?
מה עושים עם זה? תשובות (למה לא!) CPU = 2Ghz (2005Laptop ) => 2 ביליון פעולות בשניה חוק MOORE: מוכפל כל שנה וחצי 7/28/2019 Data Structures, CS TAU

5 למה מבני נתונים??? תשובות (למה כן): (by example) נתב אינטרנט: GOOGLE
מיליארד (1,000,000,000) דפים 1/2 טקסט מלא (10,000 bytes ) 1/2 חלקי רוצים למצוא את כל הקורסים ב-data structures ולדרגם לפי הרלוונטים ביותר (רצוי ב 1-3 שניות!) עשרות-מאות אלפים שאילתות בשניה נתב אינטרנט: מקבל 10,000,000 (ויותר) חבילות מידע (packets) בשניה צריך: להפנות ליעד, לתעדף, לסנן 7/28/2019 Data Structures, CS TAU

6 רקורסיה ופתרונות רקורסיביים לבעיות
נושא בסיסי ועקרוני שימוש בסברוטינות (שגרות): בצוע תפקידי משנה Procedure MULT(i,j,prod) prod:=0; for k=1 to j call SUM(prod,i,prod); end; דוגמה: Procedure SUM(i,j,k) k:=i+j; return; עקרון: בקריאה לשגרה חשוב ה”מה”, לא ה”איך”! דוגמה: בצוע קורס “מבנה נתונים” - השג את הספר - למד את החומר - הגש עבודות - הגש בחינה 7/28/2019 Data Structures, CS TAU

7 שגרות רקורסיביות (Recursive Subroutines)
שגרות שקוראות לעצמן! דוגמה 1: חישוב עצרת Recursive Procedure factor1(n); if n = 1 return(1); else x = factor1(n-1); return(n * x); end; Iterative Procedure factor(n); x = 1; for I:1 to n x = x * I; return(x); end; רקורסיה: שיטה כללית נתונה: בעיה גדולה שיטת פתרון: א) שבור הבעיה לבעיה(יות) קטנה(ות) ב) פתור את הבעיה(יות) הקטנה(ות) ג) “הדבק” הפתרונות הקטנים ליצירת הפתרון הגדול אמונה!!!! (+עצלנות!!) מפתח להצלחה: 7/28/2019 Data Structures, CS TAU

8 דוגמא 2 – חיתוך מקל נתון: מקל צריך: לחתוך את המקל לחתיכות של ס”מ ומטה
פתרון איטרטיבי Proc CUT1(stick) while length(stick)>1 do: chop a piece of 1 cm from stick end; return; פתרון רקורסיבי Proc CUT2(stick) If length(stick)<1 return; else do: chop a piece of 1 cm from stick let s-stick be the remaining part CALL CUT2(s-stick) end; return; 7/28/2019 Data Structures, CS TAU

9 דוגמא 2 – חיתוך מקל: פתרון רקורסיבי נוסף
Proc CUT3(stick) If length(stick)<1 return else do: cut stick to two parts: stick1 and stick2 CALL CUT3(stick1) CALL CUT3(stick2) return; end; תשומת לב: CUT2 ו CUT3 הם פתרונות תקיפים אפשר בתוך CUT3 לקרוא ל CUT2! אפשר בתוך CUT2 לקרוא ל CUT3! 7/28/2019 Data Structures, CS TAU

10 דוגמא 3 – חישוב X2 - נתון מחשב שיודע רק לחבר, לחסר ולמנות.
- חשב את X2 (בנה שיגרה (SQUARE(X עבור X שלם) פתרון רקורסיבי (n+1)2 = n2+n+n+1 n2 = (n-1)2+n+n-1 Procedure SQUARE(N) if N = 1 return (1) else do M = SQUARE(N-1); return (M+N+N-1); end; פתרון איטרטיבי Procedure SQUARE2(N) M = 0; for I = 1 to N M = M + N; end; return (M); 7/28/2019 Data Structures, CS TAU

11 דוגמא 4 – מגדלי האנוי A B C העבר מ- A ל- B תוך שימוש ב- C
אסור שגדול יהיה על קטן! פתרון רקורסיבי Proc HANOI(From, To, By, N) (* move top N rings from From to To using By*) if N = 1 move ring from From to top of To end return; else do: CALL HANOI(From, By, To, N - 1); move top of From to To CALL HANOI(By, To, From, N - 1); return; end; 7/28/2019 Data Structures, CS TAU

12 דוגמא 5 – מציאת MAXALL - מציאת MAXALL של N איברים במערך A1,…,AN
פתרון איטרטיבי temp:= A(1); itemp:= 1; for j=1 to N do if A(j) > temp itemp:= j; temp:= A(j); end; A(itemp): = A(N); A(N):= temp; פתרון רקורסיבי if N=1 return else begin CALL MAXALL(N-1); if A(N)<A(N-1) then temp= A(N); A(N)= A(N-1); A(N-1)= temp; end; return; 7/28/2019 Data Structures, CS TAU

13 דוגמא 6 – מיון מערך מיון מערך (SORT(N בהנחה שממומשת השגרה MAXALL
פתרון איטרטיבי Do I= N to 1 by -1 CALL MAXALL(I) end; פתרון רקורסיבי Proc SORT(N) /* sorts the elements A(1)….A(N) */ if N = 1 return else begin CALL MAXALL(N); CALL SORT(N-1); end; 7/28/2019 Data Structures, CS TAU

14 תרגיל בית רשות תרגיל רשות: 1) - הבא דוגמא לבעיה
1) - הבא דוגמא לבעיה - פתור את הבעיה בצורה רקורסיבית - פתור את הבעיה בצורה לא רקורסיבית 2) בונוס: האם ישנן בעיות שניתן לפתור בעזרת שפה רקורסיבית ולא ניתן בעזרת שפה לא רקורסיבית? האם יש בעיות שניתן לפתור איטרטיבית אך לא רקורסיבית? 7/28/2019 Data Structures, CS TAU

15 מבוא – מבעיות לתכנות דוגמה לבעיה ופתרונה
מטרה: לקחת בעיה ולכתוב לה פתרון שיטתי באמצעות המחשב כלים: מבנה נתונים + אלגוריתם אלגוריתם: שיטה, סכמה, “מתכון” מבנה נתונים: חלק אינטגרלי של האלגוריתם אלגוריתם - תלוי במבנה הנתונים דוגמה לבעיה ופתרונה A B C D E AB+DC מותר AB+EB מותר AC+EB אסור נתון: צומת דרכים עם כיווני נסיעה צריך: לתכנן פעולות רמזור כך שלא יהיו התנגשויות 7/28/2019 Data Structures, CS TAU

16 בעית הרמזורים שיטה: נרשום את כל הקומבינציות האסורות בצורת גראף
GRAPH(VERTICES, EDGES) (קשתות, צמתים) צמתים: פניות אפשריות קשתות: מחברות צמדי פניות אסורות AB AC AD BA BC BD DA DB DC EA EB EC ED 7/28/2019 Data Structures, CS TAU

17 בעית הרמזורים אחסנת האינפורמציה ייצוג האינפורמציה באמצעות טבלה
(ייצוג גראף בטבלה) 1 = קשת (פניה אסורה) 7/28/2019 Data Structures, CS TAU

18 בעית הרמזורים פתרון הבעיה במודל הנ”ל מערכת רמזורים בעל k מצבים (צבעים)
כשצבע i דולק הפניות של צבע i מבוצעות באותו צבע אסור שתהיינה שתי פניות סותרות תרגום לגראף צבע את צבעי הגראף ב k צבעים, כך ששני שכנים לא יהיו באותו צבע רצוי: מזעור k בעיה קלאסית: צביעת גראף הבעיה היא NP-COMPLETE כדי לפתור יש “לבדוק את כל האפשרויות” (או מספר עצום של אפשרויות) 7/28/2019 Data Structures, CS TAU

19 בעית הרמזורים לא אופטימלי! פתרונות: 1) קטן ==> חפש את כל האפשרויות
2) אולי קיימת אינפורמציה נוספת 3) פתרון “קרוב לאופטימלי” - היוריסטי (heuristic) פתרון היוריסטי (תאוותני - greedy) 1) בחר צומת לא צבוע, וצבע בצבע החדש 2) עבור על רשימת הלא צבועים, ואם לצומת אין שכן בצבע הנוכחי- צבע אותו. 1 5 4 3 2 אופטימלי: {5,2} {4,3,1} היוריסטי: {5} {3,4} {1,2} לא אופטימלי! 7/28/2019 Data Structures, CS TAU

20 צביעת הגראף של הבעיה צביעת הגראף של הבעיה אופטימליות:
הקבוצה AC, DA, BD, EB הינה 4 - קליק (כל פניה אסורה עם כל 3 האחרות) לכן צריך לפחות 4 צבעים תרגום הפתרון לרמזור צבע פניות אדום ירוק כחול סגול AB, AC, BC DC, AD, BD DA, EC, BA EA, EB, DB, ED 7/28/2019 Data Structures, CS TAU


הורד את "ppt "רקורסיה ופתרונות רקורסיביים

מצגות קשורות


מודעות Google