קורס מחשב לרפואנים 274121

26
םםםם םםםם םםםםםםםם274121 ההההה12 : ההההה, הההה הההההההה ההההההה הה הההההה הההה- םםםםם.- םםםםם םםםםם- םםםם םם

Upload: faye

Post on 20-Mar-2016

53 views

Category:

Documents


0 download

DESCRIPTION

קורס מחשב לרפואנים 274121. הרצאה 12: מיזוג, מיון ושימושים לפעולות על קבוצות - המשך. נכתב על-ידי ראובן בר-יהודה. סיבוכיות מיזוג. ? קבוע. function c = merge( a,b ) % time complexity % is O(length(a)+length(b)) n_a = length(a); n_b = length(b); - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: קורס מחשב  לרפואנים 274121

קורס מחשב לרפואנים274121

: מיזוג, מיון 12הרצאה ושימושים לפעולות על קבוצות

- המשךנכתב על-ידי ראובן בר-יהודה.

Page 2: קורס מחשב  לרפואנים 274121

סיבוכיות מיזוג1. function c = merge(a,b)2. % time complexity3. % is O(length(a)+length(b))4. 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

2

קבוע?

n_a + n_b פעמים

!קבוע

Page 3: קורס מחשב  לרפואנים 274121

מיון מיזוג

1. function b = msort(a)2. if length(a)<23. b = a;4. return5. end6. m = ceil(length(a)/2);7. b = merge(msort(a(1:m)),

msort(a(m+1:end)));

3

Page 4: קורס מחשב  לרפואנים 274121

sortמיון – פונקצית ספריה ExamplesSort horizontal vector A: A = [78 23 10 100 45 5 6]; sort(A) ans = 5 6 10 23 45 78 100 Sort matrix A in each dimension: A = [ 3 7 5 0 4 2 ]; sort(A,1) ans = 0 4 2 3 7 5 sort(A,2) ans = 3 5 7 0 2 4

4

SyntaxB = sort(A)B = sort(A,dim)B = sort(...,mode)[B,IX] = sort(A,...)

Page 5: קורס מחשב  לרפואנים 274121

שימוש sort מיון – פונקצית ספריה באינדקסים

>> id = [123456 21234567 1234560 1234569];>> grade = [20 100 80 55];>> [sorted index] = sort(grade, 'descend');>> id(index)

ans =

21234567 1234560 1234569 123456>> [sorted index] = sort(id);>> [id(index); grade(index)]'

ans =

123456 20 1234560 80 1234569 55 21234567 100

5

מיון מספרי זהות לפי סדר יורד של ציונים

מיון הכל לפי סדר עולה של מספרי זהות

Page 6: קורס מחשב  לרפואנים 274121

על מטריצותsortמיון – פונקצית ספריה

>> table = [ 123456 20 21234567 100 1234560 80 1234569 55];

>> sort(table)

ans =

123456 20 1234560 55 1234569 80 21234567 100

6

Page 7: קורס מחשב  לרפואנים 274121

שימוש sortמיון – פונקצית ספריה באינדקסים

>> table = [ 123456 20 21234567 100 1234560 80 1234569 55];

>> [sorted index]=sort(table(:,1))>> table(index, :) ans =

123456 20 1234560 80 1234569 55 21234567 100

7

מיון הכל לפי סדר עולה של מספרי זהות

Page 8: קורס מחשב  לרפואנים 274121

- סיבוכיותsortמיון – פונקצית ספריה

O(nlog(n))סיבוכיות הזמן

ומעשית, אין טעם להתחרות בו

8

Page 9: קורס מחשב  לרפואנים 274121

מימוש פעולות על קבוצות בעזרת מערכים

לא מייצג קבוצה.A = [75 1 2 1 75 2]המערךבקבוצה, אין חזרות ואין משמעות לסדר.

].75 2 1 תחזיר [unique(A)הפעלת פונקצית ספריה כמוB ו Aנתעניין במימושים יעילים בפעולות בין קבוצות

9

intersect(A, B) = A B union(A, B) = A B

Page 10: קורס מחשב  לרפואנים 274121

unique הפונקציה Syntaxb = unique(A)

b = unique(A, 'rows')[b, m, n] = unique(...)[b, m, n] = unique(..., occurrence)

Descriptionb = unique(A) returns the same values as in A but with no

repetitions… The resulting vector is sorted in ascending order.Example>> a = [1 1 5 6 2 3 3 9 8 6 2 4];>> unique(a)

ans =

1 2 3 4 5 6 8 9

10

Page 11: קורס מחשב  לרפואנים 274121

unique הפונקציה 1.function b = my_unique(a)2.%B = UNIQUE(A) for the array A returns the same values 3.%as in A but with no repetitions. B will also be sorted.4. b = sort(a) ; 5. if isempty(a)6. return7. end8. last = 1;9. for next = 2:length(a)10. if b(next)>b(last)11. last = last + 1;12. b(last) = b(next);13. end14. end15. b = b(1:last);

11

Page 12: קורס מחשב  לרפואנים 274121

חיתוך

12

intersect(A, B) = A B

Page 13: קורס מחשב  לרפואנים 274121

חיתוך: מימוש לא יעיל )ריבועי(1. function c = my_slow_intersect(a,b)2. % given arrays a,b representing sets3. % return in c the intersection of a and b4. n_a = length(a); n_b = length(b); 5. n_c = min (n_a , n_b);6. c = zeros(n_c); i_c = 1;7. for i_a = 1:n_a8. for i_b = 1:n_b9. if a(i_a) == b(i_b)10. c(i_c) = b(i_b);11. i_c = i_c + 1;12. end13. end14. end 15. c = c(1:i_c-1);

13

Page 14: קורס מחשב  לרפואנים 274121

.1חיתוך: מימוש בזמן לינארי function c = my_intersect(a,b)2. % given arrays a,b representing sets3. % return in c the sorted intersection of a and b4. % assume a = unique(a); b = unique(b);5. n_a = length(a); n_b = length(b); n_c = min (n_a , n_b);6. c = zeros(n_c);7. i_a = 1; i_b = 1; i_c = 1;8. while i_b <= n_b && i_a <= n_a9. if a(i_a) < b(i_b)10. i_a = i_a + 1;11. elseif a(i_a) > b(i_b)12. i_b = i_b + 1;13. else14. c(i_c) = b(i_b);15. i_a = i_a + 1; 16. i_b = i_b + 1; 17. i_c = i_c + 1; 18. end19. end20. c = c(1:i_c-1);

14

Page 15: קורס מחשב  לרפואנים 274121

intersectחיתוך: פונקצית ספריה

intersectFind set intersection of two vectorsSyntaxc = intersect(A, B)

c = intersect(A, B, 'rows')[c, ia, ib] = intersect(a, b)

Descriptionc = intersect(A, B) returns the values common to both A and B.

In set theoretic terms, this is A ∩ B. Inputs A and B can be numeric or character vectors or cell arrays of strings. The resulting vector is sorted in ascending order.

15

Page 16: קורס מחשב  לרפואנים 274121

איחוד

16

union(A, B) = A B

Page 17: קורס מחשב  לרפואנים 274121

.1איחוד בזמן לינארי function c = my_union(a,b)2. % assume a = unique(a); b = unique(b);3. n_a = length(a); n_b = length(b); n_c = n_a + n_b;4. c = zeros(1,n_c);5. i_a = 1; i_b = 1; i_c = 1;6. while i_a <= n_a || i_b <= n_b7. if i_b > n_b8. c(i_c)= a(i_a); i_a= i_a+1;9. elseif i_a > n_a10. c(i_c)= b(i_b); i_b= i_b+1;11. elseif a(i_a) < b(i_b)12. c(i_c)= a(i_a); i_a= i_a+1;13. elseif a(i_a) > b(i_b)14. c(i_c)= b(i_b); i_b= i_b+1;15. else16. c(i_c)= b(i_b); i_a= i_a+1; i_b= i_b+1; 17. end18. i_c= i_c+ 1;19. end20. c = c(1:i_c-1);

17

Page 18: קורס מחשב  לרפואנים 274121

unionאיחוד: פונקצית ספריה

unionFind set union of two vectorsSyntaxc = union(A, B)

c = union(A, B, 'rows')[c, ia, ib] = union(...)

Descriptionc = union(A, B) returns the combined values from A and B but

with no repetitions. In set theoretic terms, c = A B. Inputs ∪A and B can be numeric

or character vectors or cell arrays of strings. The resulting vector is sorted in ascending order.

18

Page 19: קורס מחשב  לרפואנים 274121

מבחן מועד א' 16/7יום ב' (10/10)מועד ב'

19

Page 20: קורס מחשב  לרפואנים 274121

(10/10)מועד ב' 16/7מבחן מועד א', יום ב'

זה לא בטוח)UG (עד שלא מופיע ב-13:00-15:30שעות : • -כל אחד יקבל שיבוץ אישי.5+6+7+8חדרים: טאוב, •

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

יום לפני מועד א: או יותר במידת 13:00 ועד 11:00 בשעות 15/7 יום א 2טאוב)

הצורך)יום לפני מועד ב:

או יותר במידת 13:00 ועד 11:00 בשעות 9/10 יום ג 2טאוב) הצורך)

20

Page 21: קורס מחשב  לרפואנים 274121

21

מבחן, דף ראשון: )לא סופי(

Page 22: קורס מחשב  לרפואנים 274121

דקות). לא תינתן תוספת זמן.150 שעות (2.5 משך המבחן:  שהוכן מראש לפי ההנחיות. A4 דף עזר בגודל חומר עזר:

(אין להשתמש בכל חומר עזר אלקטרוני כולל מחשבים/מחשבונים למיניהם) הנחיות והוראות:

הן בכתב והן במשבצות (בדף הקודם).תעודת הזהות• יש למלא באופן ברור את מלבד מספר הזהות, אין להשאיר שמות או כל סימן מזהה אחר.

!נא לוודא). 2• במבחן זה ? שאלות (בעמודים ?-• אם לא צוין אחרת, ניקוד תתי-הסעיפים של השאלות מחולק באופן אחיד.

• גם אם לא פתרתם סעיף מסוים בשאלה תוכלו לפתור סעיפים מאוחרים יותר המשתמשים בסעיף זה.

מהניקוד לאותו 20%• אם אינכם יודעים תשובה לסעיף מסוים, תוכלו לכתוב "לא יודע/ת" ולקבל סעיף. שימו לב שניתן לכתוב "לא יודע/ת" רק על סעיף שלם ולא על חלק מסעיף.

• בשאלות בהן יש לכתוב פונקציות ניתן להניח שהקלט לפונקציות חוקי.• בעמוד האחרון (עמ' ? ) בבחינה מופיעה רשימת פונקציות ספרייה של מטלאב בהן מותר לכם

להשתמש אם לא נאמר אחרת. אין להשתמש בפונקציות ספרייה שאינן ברשימה הזו.• נא לא לנמק אם לא התבקש במפורש.

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

Xעל קטעים שאינכם רוצים שיקראו על ידי הבודקים. העבירו 22• ניתן להשתמש בדפי טיוטה נוספים, שלא ייאספו ולא ייקראו על ידי הבודקים.

מבחן, מתוך דף שני: )לא סופי(

Page 23: קורס מחשב  לרפואנים 274121

מבחן: ש.ת.

ש: על מה ניבחן?•ת: כל מה שראיתם בהרצאות/תרגולים ועבודות בית מלבד:•

הוכחות של נכונות תוכניותניתוח סיבוכיות והוכחות קשורות

(כן תתבקשו לעמוד בדרישות סיבוכיות)-מימדים2מערכים מעל ל

23

Page 24: קורס מחשב  לרפואנים 274121

מבחן: ש.ת.

ש: איזה חומר עזר מותר?• צדדים בלבד!A4 2ת: דף •

ש. מהו נוהל ערעורים?•ת. אחרי פרסום סריקות המבחנים יינתן מידע.•

ש: אני מתקשה בקריאה/כתיבה/הבנה, האם אוכל לקבל הארכת •זמן?

ת: מקבלים הארכת זמן רק סטודנטים בעלי קשיי למידה או בגלל •שרות מילואים ממושך שברשותם מכתב חתום ע"י דיקן לימודי

הסמכה.

24

Page 25: קורס מחשב  לרפואנים 274121

מבחן: ש.ת.

ש: אפשר לקבל מועדי ג'?•ת: אין מועד ג', יש מועד מילואים והוא נועד למילואימניקים בלבד.•

במקרה של מילואים יש לשלוח בהקדם אישור שמ"פ למרצה.ש: ומה אם יש התנגשות עם בחינה אחרת? חתונה? תאונה?•

אשפוז? נסיעה דחופה לחו"ל? ת: כל המקרים הנ"ל מוגדרים כמניעות חמורות,•

ובגללן מלכתחילה הומצא מועד ב'.

ש: הגעתי למבחן ומייד בהתחלה הבנתי שהיא לא בשבילי, אפשר •לוותר.

ת: אם קיבלת את המבחן אז יש לך ציון.•ש: או.קי. אז בעצם דקה אחרי תחילת המבחן חשתי ברע.•ת. התשובה כמו קודם: אם קיבלת את המבחן אז יש לך ציון.•

25

Page 26: קורס מחשב  לרפואנים 274121

26

.תודה ובהצלחה במבחנים

.ראובן