20
מבוא למחשב בשפתMatlab יעילות( סיבוכיות) זמן נכתב על- ידי דורון משולם. © כל הזכויות שמורות לטכניון מכון טכנולוגי לישראל.

Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

  • Upload
    buidan

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

Matlabמבוא למחשב בשפת

זמן( סיבוכיות)יעילות

.דורון משולםידי -נכתב על .מכון טכנולוגי לישראל –כל הזכויות שמורות לטכניון ©

Page 2: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

2 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב 9תרגול

(סיבוכיות)יעילות

,על פי ויקיפדיה•

משאבי כלי מדד מתמטי שלסיבוכיות היא , במדעי המחשב"

המשאב . מחשב הנחוצים לפתרון בעיה נתונה באמצעות המערכת

כלומר נבחן משך הזמן הנחוץ לשם ביצוע , זמן הריצה העיקרי הנבחן הוא

."האלגוריתם

כתלות בגודל הקלט: תוספת.

נרצה אפוא למצוא , 𝑛עבור אלגוריתם המקבל קלט באורך , כלומר•

.המתארת את זמן הריצה שלו 𝑓(𝑛)פונקציה

.𝑛וכמותן כתלות ב , אנו נספור את הפעולות האטומיות בתוכנית•

Page 3: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

3 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב 9תרגול

𝑶הסימון ⋅

𝑔כאשר עוסקים בשאיפה של • 𝑛 מוגדרת הקבוצה , לאינסוף

𝑂 𝑔 𝑛 בתור אוסף כל הפונקציות𝑓 𝑛 עבורן קיימים הקבועים

𝑛0, 𝑐 , כך שלכל𝑛 > 𝑛0 מתקיים ,𝑓 𝑛 < 𝑐 ⋅ 𝑔 𝑛.

חלק מחומר הקורס אינהההגדרה , שימו לב.

gהיא קטנה יותר מ , fהולכים וגדלים שמקבלת nעבור ערכי , כלומר•

.cעד כדי כפל בקבוע כלשהו

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

.gשל מסדר גודל היא לכל היותר fש , נאמר אם כן•

:לדוגמה•

אם𝑔 𝑛 = 1, 𝑓 𝑛 = 𝑛0אז עבור , 5 = 0, 𝑐 = מתקיים 6𝑓 𝑛 = 5 < 6 = 6 ⋅ 1 = 6 ⋅ 𝑔 𝑛 = 𝑐 ⋅ 𝑔 𝑛

עבור𝑓 𝑛 = 𝑛2 + 𝑛 + ? fמהו סדר הגודל של , 25

Page 4: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

𝑶זמן קבוע 𝟏

הפונקציה תקיים•

𝑓 𝑛 = 𝐶

.פעולה שביצועה אינו תלוי בגודל הקלט :מסקנה•

𝑂מצא את האיבר המינימלי ב. ממוין Aנתון מערך :דוגמה• 1.

if A(1) < A(end)

ret = A(1);

else

ret = A(end);

, כפל, חיבור, כגון השמה" אטומיות"אנו סופרים פעולות , שימו לב•

גישה למערך באינדקס מסויים כפעולות שקורות בזמן , השוואה, חילוק𝑂קבוע 1.

Page 5: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

𝑶זמן לוגריתמי 𝐥𝐨𝐠 𝒏

הפונקציה תקיים•

𝑓 𝑛 = 𝐶0 ⋅ log 𝑛 + 𝐶1

ממש את )מצא את היצוג הבינארי שלו , nבהנתן מספר :תרגיל•

dec2bin)

:פתרון•function res = my_dec2bin(n)

s = ceil(log(n)/log(2));

res = zeros(1, s)

while n>0

res(i) = mod(n, 2);

i = i+1;

n = n/2;

end

Page 6: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

𝑶זמן לוגריתמי 𝐥𝐨𝐠 𝒏

או , Aב xמצא את האינדקס של . xוערך ממוין Aנתון מערך :בעיה•

.אחרת, ערך שגיאה

.חיפוש בינארי :פתרון•

.זהו אלגוריתם יחודי שיש לדעת למבחן :שימו לב•

Page 7: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

function id = binarySearch(a, x)

n=length(a); p=1; q=n;

while p<=q

m=floor((p+q)/2);

if a(m)==x; break;

elseif a(m)<x; p=m+1;

else q=m-1;

end

end

if p>q; id=-1;

else id=m;

end

7 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

חיפוש בינארי

Page 8: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

𝑶זמן לינארי 𝒏

הפונקציה תקיים•

𝑓 𝑛 = 𝐶0 ⋅ 𝑛 + 𝐶1

או ערך , Aב xמצא את האינדקס של . xוערך Aנתון מערך :דוגמה•

. אחרת, שגיאה

.חיפוש ממצה :פתרון•function ret = find(A, x)

ret = -1;

n = length(A);

for i=1:n

if x == A(i)

ret = i;

end

end

---> Break נוסיף

Page 9: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

מיזוג – זמן לינארי

.A, B, שני מערכים ממויינים :קלט•

.Bו Aהמכיל את אברי Cמערך ממויין :פלט•

ובכל פעם נכניס את הערך , נעבור על שני המערכים במקביל :פתרון•

.Cהקטן ביותר לתא הנוכחי במערך

.זהו אלגוריתם יחודי שיש לדעת למבחן :שימו לב•

Page 10: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

function C = mergeArrays(A, B)

idx1=1; idx2=1; idx3=1;

n1=length(A); n2=length(B);

C(n1+n2)=0;

while idx1<=n1 & idx2<=n2

if A(idx1) <= B(idx2)

C(idx3) = A(idx1); idx1=idx1+1;

else

C(idx3) = B(idx2); idx2=idx2+1;

end

idx3=idx3+1;

end

if idx1<=n1

C(idx3:end) = A(idx1:n1);

else

C(idx3:end) = B(idx2:n2);

end

10 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

מיזוג

Page 11: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

הפונקציה תקיים•

𝑓 𝑛 = 𝐶0 ⋅ 𝑛2

כך שעבורה מתקיים , Bחשב את המטריצה , Aעבור מטריצה :דוגמה•

𝐵 𝑖, 𝑗 = 𝐴 𝑖, 𝑗 𝑖+10𝑗.

11 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

𝑶זמן ריבועי 𝒏𝟐

Page 12: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

כתבו פונקציה הסוכמת את אברי מטריצה משולשת עליונה ריבועית •

.ונתחו את הסיבוכיות שלהfunction ret = sumUp(A)

n = size(A, 1);

ret = 0;

for i=1:n

for j=i:n

ret = ret + A(i, j);

end

end

end

𝑓 𝑛 = 1

𝑛

𝑗=𝑖

𝑛

𝑖=1

= 𝑛 − 𝑖 + 1

𝑛

𝑖=1

= 𝑛2 + 𝑛 − 𝑖

𝑛

𝑖=1

= 𝑛2 + 𝑛 −𝑛 𝑛 + 1

2=𝑛 𝑛 + 1

2= 𝑂 𝑛2

12 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

תרגיל

Page 13: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

𝐴𝑚×𝑛בתרגולים קודמים כתבנו פונקציה המכפילה בין מטריצה •

.נתחו את יעילות הפונקציה. 𝐵𝑛×𝑙למטריצה

:תזכורת•function ret = matrix_mult(A, B)

if ~isequal(size(A, 2), size(B, 1))

ret=-1;

disp(‘Inner matrix dimensions must agree’);

return;

end

ret = zeros(size(A,1), size(B, 2));

for i=1:size(A, 1)

for j=1:size(B, 2)

for k=1:size(A, 2)

ret(i, j) = ret(i,j) + A(i,k)*B(k,j);

end

end

end

end

13 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

תרגיל

Page 14: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

הפונקציה תקיים•

𝑓 𝑛 = 𝐶0 ⋅ 𝛼𝛽⋅𝑛

:דוגמאות•

הצג את כל התמורות של סדרה בינרית באורךn.

ערכו של איבר מהוn חישוב ישיר על פי הגדרת )י 'בסדרת פיבונצ

(.הסדרה

14 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

𝑶זמן אקספוננטיאלי 𝜶𝜷⋅𝒏

Page 15: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

nכדי להגיע אליה עליו לעבור . פורץ מנסה להגיע אל תוך כספת•

' הפורץ יכול להכנס דרך חלון א. כאשר בכל קיר יש שתי חלונות, קירות

וגם שם הוא )ואז הוא ממשיך לקיר הבא , בכל קיר' או דרך חלון ב

הציגו קלט המאפשר להסיק את (. 'לחלון ב' עומד בבחירה בין חלון א

.חד ערכי-כל המסלולים האפשריים באופן חד

.נוכל לדעת ישירות את המסלול, בהינתן הדפסה כלשהי, כלומר•

15 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

𝑶זמן אקספוננטיאלי –תרגיל 𝜶𝜷⋅𝒏

Page 16: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

ולהדפיס את , 𝑁יש לספור את מספר המסלולים האפשריים :הבחנה•

ע ועל נוכל להתאים מספר "אז באופן חח. 𝑁כל המספרים עד ל

.למסלול

function ret = routes(n)

for i=1:2^n

disp(i);

end

בהמשך נפתור באמצעות רקורסיה וממש נציג את כל המסלולים •

.האפשריים

16 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

𝑶זמן אקספוננטיאלי 𝜶𝜷⋅𝒏

Page 17: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

:נתחו את יעילות השגרה הבאה•

function ret = routes(n)

for i=1:2^n

my_dec2bin(i);

end

:פתרון•

𝑓𝑚𝑦_𝑑𝑒𝑐2𝑏𝑖𝑛 𝑖

2𝑛

𝑖=1

= log2 𝑖

2𝑛

𝑖=1

= log2 𝑖

2𝑛

𝑖=1

= log2 2𝑛!

17 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

תרגיל

Page 18: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

log2נשים לב ש :פתרון חלופי• 𝑖 היא פונקציה מונוטונית עולה ולכן

𝑖לכל ≤ 2𝑛 מתקייםlog2 𝑖 ≤ log2 2𝑛 .לכן ,

𝑓𝑚𝑦_𝑑𝑒𝑐2𝑏𝑖𝑛 𝑖

2𝑛

𝑖=1

= log2 𝑖

2𝑛

𝑖=1

≤ log2 2𝑛

2𝑛

𝑖=1

= log2 2𝑛

2𝑛

𝑖=1

= log2 2𝑛 2𝑛 = 𝑛 ⋅ 2𝑛

אבל אל הסיבוכיות , קיבלנו שהסיבוכיות הקודמת יותר מדויקת, כלומר•

ככל שניתן יותר הנחות מקלות ככה הפתרון יהיה . הזו יותר קל להגיע

. פחות מדויק

log2(2בנוסף הצלחנו להוכיח כי •𝑛!) ≤ 𝑛 ⋅ 2𝑛.

18 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

תרגיל

Page 19: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

(.מטלאבשל sort)יעיל כללי מיון •

(.בהרצאה)מיזוג מיון •

(.העשרה)ערימה יון מ•

19 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

𝑶זמן יעיל ביותר לחיפוש 𝒏𝐥𝐨𝐠 𝒏

Page 20: Matlab תפשב בשחמל אובמ תויכוביס תוליעי 1 Author: saher Created Date: 2/21/2017 7:40:06 AM

20 ©כל הזכויות שמורות . מבוא למחשב בשפת מטלאב

טבלת סדרי גודל

הגודל מהקטן לגדול סדרי

𝑂 1

𝑂 log𝑛

𝑂 𝑛

𝑂 𝑛log𝑛

𝑂 𝑛2

𝑂 𝑛3

𝑂 2𝑛

𝑂 𝑛𝑛