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

Slides:



Advertisements
מצגות קשורות
אוגרים ומונים – Registers & Counters
Advertisements

תחקור והערכת מערכת .
תכנות בשפת C תרגול 11 - קבצים.
הרצאה 02 סוגי משתנים קרן כליף.
יהי X משתנה מקרי חיובי. אזי
ניווט רובוט מסוג ROOMBA במרחב ממופה
ייצוגים שונים של פונקציה
יצירת מקרו הפעלת מקרו יצירת לחצן / פקד דוגמה מסכמת
הרצאה 12: מיזוג, מיון ושימושים לפעולות על קבוצות - המשך
מבוא לתכנות ב-JAVA מעבדה 1
שיעור 8 ההתמודדות עם הטרור.
Ford Fulkerson.
תרגול 11: רקורסיה ופיתוח טלסקופי
לולאות Department of Computer Science-BGU 19 יולי 19.
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
תרגול 5: לולאות ומערכים.
מיונים (SORTS) שמושים ביישומים רבים
מבוא למדעי המחשב מ' - תירגול 9
תירגול 10: מבנים (structs) וקבצים
Marina Kogan Sadetsky –
Jump tables, review questions
הרצאה 3: משפטים, תנאים ולולאות
מבוא למדעי המחשב הרצאה מספר 12: רקורסיה
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
אנטרופיה Entropy - נקודת מבט מיקרוסקופית
פעולות אריתמטיות קרן כליף.
Computer Programming תרגול 1 Summer 2016
תירגול 11: מיונים וחיפוש בינארי

תירגול 3: לולאות, קלט, וטיפוסים
תכנות בשפת C תרגול 8 רקורסיה
שם ביה"ס, רשות: מקיף ה' אשדוד שם המורה: פולינה צ'יגרינסקי שם המדריכה:
קשרי מקסוול (מתכון לתמרונים אלגבריים בבעיות תרמודינאמיות)
Engineering Programming A
תירגול 8:מצביעים והקצאה דינאמית
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מבוא למדעי המחשב הרצאה 9: רקורסיה
תרגול 6: פונקציות, סוגי משתנים, top-down design
כל הזכויות שמורות לגבריאל אנקרי © 2017
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מבוא לתכנות מונחה עצמים Object Oriented Programming
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
Computer Architecture and System Programming Laboratory
אלגוריתמי מיון רקורסיביים
צביה ויסמן, ד"ר טל סופר, פרופ' רפי נחמיאס
סטטסיטיקה והסתברות לשאלון 002.
תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר
Marina Kogan Sadetsky –
מת"מ מעבדה 7-8 רשימות.
Solving Simultaneous Linear Equations Using GPU
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
מבוא לתכנות ב- JAVA מעבדה 4
Proquest Central
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
Introduction to Programming in C
תרגול 12: backtracking.
מצביעים Pointers – המשך...
Data Structures, CS, TAU, Perfect Hashing
לבית: המשיכו וקראו עד סוף פרק א' נושא תנועה.
תרגול מס' 7: Memoization Quicksort תרגילים מתקדמים ברקורסיה
מודל ניהול פרסום.
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
דוגמא להשערה חד-צדדית ימנית
הפונקציה מחזירה את מספר התווים במחרוזת נתונה.
Engineering Programming A
הדרכה לשימוש במאגרי.
תמליל מצגת:

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

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

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

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

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

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

יעילות של פעולה המחשבת סכום של איברי המערך 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 פעולות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

חיפוש במערך ממוין בסדר עולה 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 זו אם נסרק כל המערך © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים משימה נתחו את היעילות של הפעולה הבודקת האם מספר מסויים נמצא בשני המערכים יחד: 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); } © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

שני המערכים באותו גודל 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 כלומר : © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

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

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

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

ניתן לוותר על האתחול ולחסוך פעולה אחת שיפור יעילות של אלגוריתם בקבוע 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; } ניתן לוותר על האתחול ולחסוך פעולה אחת © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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