Introduction to Algorithms by T H Cormen C
חומר לקריאה : ספרים Introduction to Algorithms by: T. H. Cormen, C. E. Leiserson, R. L. Rivest ספר חובה : ספרי עזר Data Structures and Algorithms by: Aho, Hopcroft, Ulman : חומר חובה I. 2, 4 : פרקים Cormen II. 7, 8, 9 10 III. 11, 12, 13 V. 19, 22 כל החומר הנלמד בכיתה 9/4/2021 Data Structures, CS TAU 3 3
– חיתוך מקל 2 דוגמא מקל : נתון לחתוך את המקל לחתיכות של ס”מ ומטה : צריך פתרון איטרטיבי Proc CUT 1(stick) while length(stick)>1 do: chop a piece of 1 cm from stick end; return; end; פתרון רקורסיבי Proc CUT 2(stick) If length(stick)<1 return; else do: chop a piece of 1 cm from stick let s-stick be the remaining part CALL CUT 2(s-stick) end; return; 9/4/2021 end; Data Structures, CS TAU 8 8
פתרון רקורסיבי נוסף : – חיתוך מקל 2 דוגמא פתרון רקורסיבי נוסף Proc CUT 3(stick) If length(stick)<1 return else do: cut stick to two parts: stick 1 and stick 2 CALL CUT 3(stick 1) CALL CUT 3(stick 2) return; end; : תשומת לב הם פתרונות תקיפים CUT 3 ו CUT 2 !CUT 2 לקרוא ל CUT 3 אפשר בתוך !CUT 3 לקרוא ל CUT 2 אפשר בתוך 9/4/2021 Data Structures, CS TAU 9 9
X 2 – חישוב 3 דוגמא . לחסר ולמנות , נתון מחשב שיודע רק לחבר ( שלם X עבור SQUARE(X) )בנה שיגרה X 2 חשב את פתרון רקורסיבי (n+1)2 = n 2+n+n+1 n 2 = (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 SQUARE 2(N) M = 0; for I = 1 to N M = M + N; end; return (M); end; 9/4/2021 Data Structures, CS TAU 10 10
– מגדלי האנוי 4 דוגמא C - תוך שימוש ב B - ל A - • העבר מ ! • אסור שגדול יהיה על קטן פתרון רקורסיבי 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; 9/4/2021 Data Structures, CS TAU 11 11
MAXALL – מציאת 5 דוגמא איברים במערך N של MAXALL מציאת פתרון איטרטיבי N - השמת המקסימום במקום ה A 1, …, 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; end; 9/4/2021 Data Structures, CS TAU 12 12
– מיון מערך 6 דוגמא MAXALL בהנחה שממומשת השגרה SORT(N) מיון מערך פתרון איטרטיבי 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; 9/4/2021 Data Structures, CS TAU 13 13
- Slides: 20