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

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

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים

מצגות קשורות


מצגת בנושא: "© המרכז להוראת המדעים האוניברסיטה העברית בירושלים"— תמליל מצגת:

1 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
פרק 5 יעילות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

2 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
יעילות קיימת יותר מדרך אחת לפתור בעיה. קריטריונים: מקום בזיכרון וזמן ריצה. אנחנו נעסוק בזמן ריצה. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

3 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
בעיית הסוכן הנוסע © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

4 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מספר המסלולים מהשער יש לכל היותר: n-1 אפשרויות מהנקודה שנבחרה יש לכל היותר: n-2 אפשרויות וכך הלאה: (n-1)(n-2)(n-3)…1 =(n-1)! © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

5 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מספר מסלולים אפשריים © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

6 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
איך מודדים יעילות לא מודדים זמן לפי שעון. (מדד הזה אינו אוביקטיבי) סופרים את מספר פעולות היסוד שמבצע האלגוריתם: קלט/פלט, השמה, פעולות חישוב, בדיקת תנאי בוליאני. מספר פעולות היסוד תלוי בדרך כלל באורך הקלט. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

7 יעילות של פעולה המחשבת סכום של איברי המערך
public static int SumArray (int[] arr) { int sum = 0; int n = arr.Length; for (int i = 0; i < n; i++) sum = sum + arr[i]; return sum; } פעולה 1 פעולה 1 3n+1 פעולות פעולה 1 סה"כ 3n+4 פעולות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

8 חיפוש במערך ממוין בסדר עולה
public static int Search1 (int[] arr, int k) { int n = arr.Length; for (int i = 0; i < n; i++) if (arr[i] == k) return i; return -1; } פעולה 1 3n+1 פעולות לכל היותר פעולה 1 המתבצעת אם הפעולה הופסקה באמצע סה"כ 3n+3 פעולות לכל היותר (ייתכן שהתבצעו פחות פעולות) במקרה האחר: תתבצע פעולה 1 זו אם נסרק כל המערך © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

9 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
משימה נתחו את היעילות של הפעולה הבודקת האם מספר מסויים נמצא בשני המערכים יחד: public static bool ExistK (int[] arr1, int[] arr2, int k) { int res1 = Search1 (arr1, k); int res2 = Search1 (arr2, k); return (res1 != -1 && res2 != -1); } © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

10 שני המערכים באותו גודל n 2 פעולות המתבצעות n פעמים
איברים משותפים לשני המערכים שני המערכים באותו גודל n public static void SharedNums(int[] arr1, int[]arr2) { int counter; for (int i = 0; i < arr1.Length; i++) counter = 0; for (int j = 0; j < arr2.Length; j++) if (arr1[i] == arr2[j]) counter ++; if (counter > 0) Console.WriteLine (arr1[i] + " appears " + counter + " times"); } פעולה 1 2 פעולות המתבצעות n פעמים פעולה 1 3n+1 פעולות לכל היותר פעולה 1 פעולה 1 סך הכל מספר פעולות היסוד הוא: n(3n+5)+2 כלומר : © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

11 מקרים טובים ממוצעים וגרועים
ראינו כי בפעולה Search1(...) אם המספר נמצא בתא האחרון במערך או אינו נמצא במערך כלל אז מספר צעדי היסוד הוא 3n+3. אם המספר נמצא בתא הראשון במערך, אז מספר צעדי היסוד הוא 1. איך ננתח את יעילות הפעולה? המקרה הגרוע המקרה הטוב © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

12 המקרה הגרוע והמקרה הממוצע
כאשר פותרים אותה בעיה הרבה פעמים על קלטים שונים, המדד של המקרה הממוצע יכול להיות יעיל. חישוב פעולות היסוד במקרה הממוצע קשה יותר מחישוב פעולות היסוד במקרה הגרוע. מדד המקרה הגרוע מספק הערכה טובה יותר באשר לריצה של פעולה בודדת. אנו ננתח תמיד את המקרה הגרוע. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

13 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מדידת יעילות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

14 ניתן לוותר על האתחול ולחסוך פעולה אחת
שיפור יעילות של אלגוריתם בקבוע public static int Search1(int[] arr, int k) { int n = arr.Length; for (int i = 0; i < n; i++) if (arr[i] == k) return i; return -1; } ניתן לוותר על האתחול ולחסוך פעולה אחת © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

15 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
שיפור ניתן לחסוך בבדיקה של גבולות המערך (i<n) המתבצעת n פעמים: אם הערך המבוקש נמצא בתא האחרון החזר את האינדקס של התא האחרון. אחרת שמור את הערך המקורי של התא האחרון ושים בתא האחרון את הערך המבוקש. סרוק את המערך וחפש את הערך המבוקש. בסוף הסריקה החזר את הערך של התא האחרון לתא האחרון. אם מצאת את הערך בתא האחרון, החזר 1-, אחרת החזר את האינדקס שמצאת. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

16 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
שיפור © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

17 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
השוואת היעילויות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

18 שיפור יעילות משמעותי יותר
עד כה התעלמנו בחיפושים מהנתון כי המערך ממוין בסדר עולה. נתון זה מאפשר לעצור את החיפוש אם הערך הנבדק גדול מהערך שמחפשים. נתון זה מאפשר לבצע חיפוש אחר: חיפוש בינרי © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

19 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
חיפוש בינרי חוצים את המערך ובודקים אם הערך הדרוש נמצא באמצע. אם לא, בוחרים חצי מתאים להמשך החיפוש. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

20 קביעת האינדקסים לתחום החיפוש המשך החיפוש בחצי השמאלי
חיפוש בינרי קביעת האינדקסים לתחום החיפוש חציית המערך לשתיים המשך החיפוש בחצי השמאלי המשך החיפוש בחצי הימני © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

21 k הוא מספר האיטרציות שלולאת ה-while תבצע במקרה הגרוע ביותר.
חישוב זמן ריצה של חיפוש בינרי k הוא מספר האיטרציות שלולאת ה-while תבצע במקרה הגרוע ביותר. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

22 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
דוגמאות לדוגמה, במערך שגודלו n=1,000,000, לולאת ה-while תתבצע כ-20 פעם. עבור מערך בגודל 1,000,000,000 (מיליארד) לולאת ה-while תתבצע כ-30 פעם. למספר 30 הגענו לפי הנוסחה שקיבלנו לעיל: © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

23 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
חיפוש בינרי לולאת ה-while מבצעת איטרציות בתוכה מתבצעות כ-5 פעולות יסוד בסך הכול הלולאה כולה מבצעת פעולות יסוד. בתוספת הפעולות שמחוץ ללולאה נקבל שפונקציית זמן הריצה היא , כלומר היא פונקציה לוגריתמית © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

24 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
השוואת היעילויות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

25 הערכה כללית של יעילות – סדר גודל
פונקצית זמן ריצה היא: סדר גודל לינארי: פונקצית זמן ריצה היא : סדר גודל ריבועי: סדר גודל לוגריתמי: סדר גודל קבוע: © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

26 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
סדר גודל יחס הסדר בין סדרי הגודל השונים: > > > © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

27 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
השוואה מספר הפעולות אורך הקלט © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

28 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
צעד בסיסי צעד בסיסי מורכב מכמה פעולות יסוד אך אינו תלוי באורך הקלט. לעתים קרובות יהיה נוח יותר להצביע על צעד בסיסי ולחשב כמה פעמים האלגוריתם מבצע את הצעד כולו, מאשר לחשב במדויק את מספר הפעולות הבסיסיות המתבצעות באלגוריתם. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

29 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
שיפור יעילות בסדר גודל נבחן שני אלגוריתמים למיון מערך: מיון בועות ומיון מיזוג. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

30 שתי לולאות מקוננות התלויות באורך המערך:
מיון בועות שתי לולאות מקוננות התלויות באורך המערך: © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

31 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מיון מיזוג מיון-מיזוג ( arr) אם גודל המערך גדול מ-1, בצע: (1) חלק את המערך לשני תת-מערכים arr1 ו-arr2, המכילים כל אחד כמחצית מאיברי המערך (2) מיון-מיזוג (arr1) (3) מיון- מיזוג (arr2) (4) מזג את arr1 ואת arr2 לתוך arr © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

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

33 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
סדר גודל של מיון מיזוג מספר הפעמים שמזמנים את הזימון הרקורסיבי הוא log n.(דומה מאוד לחיפוש הבינרי). בכל שלב יש למזג את המערכים הממוינים: n. סה"כ : O (n logn). © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

34 השוואת יעילות: מיון בועות מול מיון מיזוג
מספר הפעולות אורך הקלט © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

35 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
פונקצית בלתי סבירות קיימות בעיות שפונקציות זמן הריצה שלהן לא סבירות למימוש במחשב כיוון שהן גדלות מהר מאוד. דוגמאות: הפונקציה המעריכית: העצרת (בעיית הסוכן הנוסע): © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

36 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
משפחות של סדרי גודל © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

37 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
טבלה מסכמת - חלק א © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

38 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
טבלה מסכמת – חלק ב © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

39 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
סוף © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

40 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים

41 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים

42 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים

43 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים

44 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים


הורד את "ppt "© המרכז להוראת המדעים האוניברסיטה העברית בירושלים

מצגות קשורות


מודעות Google