מבוא למחשב בשפת matlab
DESCRIPTION
מבוא למחשב בשפת Matlab. הרצאה 13 : מיון על ידי מיזוג. הרצאה 12:. נכתב על-ידי שלמה מורן, מבוסס על שקפים של איתן אביאור, ראובן בר יהודה וסילביו מיקלי. תזכורת: חסם תחתון על מספר ההשוואות הדרוש למיון. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/1.jpg)
Matlabמבוא למחשב בשפת
: מיון על ידי מיזוג.13הרצאה
:12הרצאה
איתן אביאור, ראובן בר יהודה וסילביו נכתב על-ידי שלמה מורן, מבוסס על שקפים שלמיקלי.
![Page 2: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/2.jpg)
תזכורת: חסם תחתון על מספר ההשוואות הדרוש למיון.
אברים חייב לבצע לפחות כ nניתן להראות שכל אלגוריתם למיון של •
[nlog(n)-n השוואות. עבור ]20,000,000 מדובר בכ 1,000,000
מיליארד השוואות הנדרשות על ידי שני 500השוואות בלבד )יחסית ל
האלגוריתמים שראינו בשיעור שעבר(.
השאלה הבאה המתבקשת: האם קיים אלגוריתם למיון המסתפק ב •
nlog(n)?השוואות
תשובה: כן. למשל האלגוריתם מיון על ידי מיזוג שנלמד היום. •
13הרצאה מבוא למדעי המחשב במטלאב 2
![Page 3: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/3.jpg)
מיון מיזוג
הוא שיטה למיון (Merge Sortמיון מיזוג )• תת סדרות ממוינות מיזוגסדרה על ידי
שלה.האלגוריתם משמש בפונקציה למיזוג מערכים •
השוואות m+n-1ממוינים, הדורשת לכל היותר m,nלמיזוג מערכים ממוינים שאורכיהם
בהתאמה.בשלב ראשון, נגדיר את "בעיית המיזוג" ונכתב •
אלגוריתם יעיל לפתרונה.
13הרצאה מבוא למדעי המחשב במטלאב 3
![Page 4: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/4.jpg)
בעיית המיזוג
.n בגודל B ו m בגודל A של מספרים: ממוינים: שני מערכים קלט•
.B ו A המכיל את אברי m+n בגודל C: מערך ממוין פלט•
מגבלה: מותר להשתמש בהשוואות בלבד.•
:אלגוריתם•
, מהקטן לגדול, באופן הבא:A,B ע"י סריקת המערכים Cנבנה את את האיבר היותר קטן מבין C, נעתיק ל B או לסוף Aכל זמן שלא הגענו לסוף –
, ונתקדם לאבר הבא במערך ממנו העתקנו.B וAהאיברים הבאים ב
לאחר שנגיע לקצה אחד המערכים, נעתיק את האיברים הנותרים מהשני.–
(אחרי כל השוואה מועבר אבר m+n-1: לכל היותר מספר השוואות נדרש•
למקומו במערך החדש, והאבר האחרון מועבר ללא צרך בהשוואה). מספר
ההשואות הוא לינארי בארך הקלט.
13הרצאה מבוא למדעי המחשב במטלאב 4
![Page 5: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/5.jpg)
610 2584
הדגמת אלגוריתם המיזוג
1 1 3 5 13 21 55 89
0 2 8 34 144
1 1 3 5 13 21 55 89
0 2 8 34 144
1 1 3 5 13 21 55 89
0 2 8 34 144
0
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1 1
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1 1 2
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1 1 2 3
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1 1 2 3 5
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1 1 2 3 5 8
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1 1 2 3 5 8 13
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1 1 2 3 5 8 13 21
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1 1 2 3 5 8 13 21 34 55
1 1 3 5 13 21 55 89
0 2 8 34 144
0 1 1 2 3 5 8 13 21 34 55 89
1 1 3 5 13 21 55 89
0 2 8 34 144 610 2584
0 1 1 2 3 5 8 13 21 34 55 89
1 1 3 5 13 21 55 89
0 2 8 34 144 610 2584
0 1 1 2 3 5 8 13 21 34 55 89 144
1 1 3 5 13 21 55 89
0 2 8 34 144 610 2584
0 1 1 2 3 5 8 13 21 34 55 89 144 610
1 1 3 5 13 21 55 89
0 2 8 34 144 610 2584
0 1 1 2 3 5 8 13 21 34 55 89 144 610 2584
13הרצאה מבוא למדעי המחשב במטלאב 5
![Page 6: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/6.jpg)
מיזוג1. function c = merge(a,b)2. % given non decreasing sorted arrays a,b3. % return in c the sorted merge of a and b4. n_a = length(a); n_b = length(b); 5. n_c = n_a + n_b; c = zeros(1,n_c);6. i_a = 1; i_b = 1;7. for i_c = 1 : n_c;8. if i_b > n_b 9. c(i_c) = a(i_a);10. i_a = i_a +1;11. elseif i_a > n_a12. c(i_c) = b(i_b);13. i_b = i_b +1;14. elseif a(i_a) < b(i_b)15. c(i_c) = a(i_a);16. i_a = i_a +1;17. else % a(i_a) >= b(i_b)18. c(i_c) = b(i_b);19. i_b = i_b +1;20. end21. end
6
![Page 7: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/7.jpg)
מיון מיזוג רקורסיבי
הוא שיטה למיון (Recursive Merge Sortמיון מיזוג רקורסיבי )•סדרה בה מחלקים את הסדרה לשני חצאים שלאחר מיונם (באופן
רקורסיבי) ממזגים אותם.:השיטה•
– הסדרה ממוינת – חזור.2אם אורך הסדרה קטן מ-–חלק את הסדרה לשני חצאים,–מיין כל אחד משני החצאים (ע"י קריאה רקורסיבית), –מזג את שני החצאים –
13הרצאה מבוא למדעי המחשב במטלאב 13
![Page 8: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/8.jpg)
מיון מיזוג רקורסיבי
1. function b = msort(a)2. if length(a) = 13. b = a;4. return5. end6. m = ceil(length(a)/2);7. b = merge(msort(a(1:m)),
msort(a(m+1:end)));
14
![Page 9: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/9.jpg)
הדגמה )ויקיפדיה(
15
יהרסקו רשתריפ
קיפול רקורסיה
![Page 10: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/10.jpg)
הוכחת נכונות מיון מיזוג רקורסיבי
אינדוקציה על גדל המערך. מוחזר ממוין.1בסיס: מערך בגודל
ממוינים נכון, nשלב מעבר: נניח מערכים בגודל קטן מ . במקרה זה מתקיים: n>1 בגודלaויהי נתון מערך
m = floor(n/2) < n., הקריאות 7לכן, מהנחת האינדוקציה, בעת ביצוע שורה
הרקורסיביות: msort(a(1:m)), msort(a(m+1:end))
ממוינים.a(m+1:n) ו a(1:m) מחזירות את תתי המערכים 7מכאן, ומנכונות אלגוריתם המיזוג, לאחר ביצוע שורה
ממוין.aמערך
13הרצאה מבוא למדעי המחשב במטלאב 16
בשקפים הבאים נראה דרך להעריך את מספר ההשוואות הנדרש
![Page 11: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/11.jpg)
Time Complexity of Merge-Sort )presentation by Silvio Micali, MIT(
MERGE-SORT a(1:n)
1. If n < 2, done2. Recursively sort
a(1 : n/2) and a(n/2 + 1 : n)3. “Merge” the two sorted lists
T(n)
1. O(1)2. 2T(n/2)
3. O(n)
T(n) =
O(1) if n < 2;
2T(n/2) + O(n) if n > 1.
![Page 12: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/12.jpg)
Recurrence solving
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
![Page 13: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/13.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
T(n)
![Page 14: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/14.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
T(n/2) T(n/2)
cn
![Page 15: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/15.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
cn
T(n/4) T(n/4) T(n/4) T(n/4)
cn/2 cn/2
![Page 16: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/16.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Q(1)
…
…
![Page 17: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/17.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Q(1)
…
…
![Page 18: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/18.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Q(1)
…
cn
…
![Page 19: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/19.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Q(1)
…
cn
cn
…
![Page 20: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/20.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Q(1)
…
cn
cn
cn
…
…
![Page 21: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/21.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Q(1)
…
h = lg n
cn
cn
cn
Q(n)
…
#leaves = n
…
![Page 22: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/22.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Q(1)
…
h = lg n
cn
cn
cn
Q(n)
Total = ?
…
#leaves = n
…
![Page 23: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/23.jpg)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Q(1)
…
h = lg n
cn
cn
cn
#leaves = n
O(n)
Total = O(n lg n)
…
![Page 24: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/24.jpg)
מספר השוואות במיון מיזוג: הוכחה באינדוקציה
nlog2(n)טענה: במיון מיזוג רקורסיבי מבוצעות פחות מ השוואות בין אברי הסדרה.
n=2kנוכיח את הטענה עבור
מספר ההשוואות המקסימלי המבוצע על סדרת קלט T(n)יהי .T(n)< nlog2(n). צ.ל. n=2kבאורך השוואות.0 מתבצעות n=1=20עבור
.2n, ונוכיח נכונות עבור nנניח שהטענה נכונה עבור
T(2n)≤2T(n)+2n =2nlog2(n)+2n =2n[log2(n)+1] = (2n)log2(2n)
פעמיים מיוןשל סדרות
nבגודל מיזוג
13הרצאה מבוא למדעי המחשב במטלאב 30
![Page 25: מבוא למחשב בשפת Matlab](https://reader038.vdocuments.mx/reader038/viewer/2022102714/56814359550346895dafd777/html5/thumbnails/25.jpg)
– מיון סיכום
ידועים כיום מספר רב של אלגוריתמים למיון. ניתן לחלקם •לשתי משפחות:
האלגוריתמים ה"פשוטים" (מקס, בועות):• O(n2): סיבוכיות הזמן הינה ריבועית–סיבוכיות המקום* הינה קבועה.–
אלגוריתמים אופטימליים מבחינת מספר השוואות (מיון •מיזוג).
nlog(n)סיבוכיות הזמן הינה – הינה לינארית. קיימים mergesortסיבוכיות המקום של –
אלגוריתמים בעלי סיבוכיות זמן דומה וסיבוכיות מקום קבועה.
13הרצאה מבוא למדעי המחשב במטלאב 31