Presentation is loading. Please wait.

Presentation is loading. Please wait.

Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department.

Similar presentations


Presentation on theme: "Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department."— Presentation transcript:

1 Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

2 בעיה פשוטה במיוחד סדר שלושה מספרים לפי סדר מונוטוני עולה יש למישהו רעיון?

3 אלגוריתם א' אם A גדול מ-B, ו- B גדול מ-C, אז הדפס A,B,C אם A גדול מ-C, ו- C גדול מ-B, אז הדפס A,C,B אם B גדול מ-A, ו-A גדול מ-C, אז הדפס B,A,C אם B גדול מ-C, ו-C גדול מ-A, אז הדפס B,C,A אם C גדול מ-A, ו-A גדול מ-B, אז הדפס C,A,B אם C גדול מ-B, ו-B גדול מ-A, אז הדפס C,B,A

4 אלגוריתם ב' אם A גדול מ-B אם B גדול מ-C, הדפס A,B,C אחרת, אם A גדול מ-C הדפס A,C,B אחרת, הדפס C,A,B אחרת אם C גדול מ-B, הדפס C,B,A אחרת, אם A גדול מ-C הדפס B,A,C אחרת, הדפס B,C,A

5 איזה פתרון יותר טוב? נריץ בראש על כמה מספרים ונבדוק שעובד? נראה בכמה משתנים כל אלגוריתם משתמש? ננסה על מספר מחשבים? יוסי יבדוק את אלגוריתם א' על ה-Macintosh שלו יונית תבדוק את אלגוריתם ב' על ה-Pentium במעבדה

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

7 אלגוריתם א' אם A גדול מ-B, ו- B גדול מ-C, אז הדפס A,B,C אם A גדול מ-C, ו- C גדול מ-B, אז הדפס A,C,B אם B גדול מ-A, ו-A גדול מ-C, אז הדפס B,A,C אם B גדול מ-C, ו-C גדול מ-A, אז הדפס B,C,A אם C גדול מ-A, ו-A גדול מ-B, אז הדפס C,A,B אם C גדול מ-B, ו-B גדול מ-A, אז הדפס C,B,A

8 השוואת אלגוריתמים היחידה הבסיסית (במקרה זה): השוואה בין שני מספרים ככל שיש יותר השוואות, לוקח יותר זמן להגיע לתשובה אלגוריתם א': במקרה הטוב: 2 במקרה הרע: 10 בממוצע:.1665 (לא 6!)

9 אלגוריתם ב' אם A גדול מ-B אם B גדול מ-C, הדפס A,B,C אחרת, אם A גדול מ-C הדפס A,C,B אחרת, הדפס C,A,B אחרת אם C גדול מ-B, הדפס C,B,A אחרת, אם A גדול מ-C הדפס B,A,C אחרת, הדפס B,C,A

10 השוואת אלגוריתמים היחידה הבסיסית (במקרה זה): השוואה בין שני מספרים ככל שיש יותר השוואות, לוקח יותר זמן להגיע לתשובה אלגוריתם א': במקרה הטוב: 2 במקרה הרע: 10 בממוצע: 5.166 (לא 6!) אלגוריתם ב': במקרה הטוב: 2 במקרה הרע: 3 בממוצע: 2.666

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

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

13 אלגוריתמים? ברמזור הבא פני ימינה ואז תמשיך שלושה-ארבעה ק"מ ברמזור הבא פנה ימינה ואז אתה כבר באזור. תשאל שם. קח שלוש כפיות סוכר. ערבב בתוך כוס מים רותחים. מיין את רשימת המספרים. הדפס את האיבר הראשון. בצע: 1. בחר רנדומלית מספר בין 3 ל-5. 2. אם המספר גדול מ-4, הדפס "יש", אחרת חזור ל-1 3. חזור ל-1

14 מדידת איכות של תוכנה איכות של תוכנית נמדדת במדדים שונים: קלות התחזוקה של התוכנית מודולריות ואפשרות השימוש בתוכנית למטרות שונות יעילות התוכנית בזמן ריצה ובשימוש בזיכרון בקורס זה אנו מתמקדים במדדי יעילות המטרה: ניתוח יעילות של אלגוריתמים (סיבוכיות) לא להיות תלויים במדידות אמפיריות שלא מאפשרות השוואה כגון: "התוכנה סיימה בתוך 1.3 שניות על מחשב פנטיום עם MB256 זיכרון פנימי"

15 ניתוח סיבוכיות (Complexity) זיכרון וזמן ריצה Worst Case Average Case Best Case פונקציה של: גודל הקלט בביטים, במספר המרכיבים (לדוגמא במיון),... מודל המחשוב: מעבד מרכזי, זיכרון מרכזי מסוג RAM מחיר פעולה בסיסית: השוואה, חישוב אריתמטי,....

16 חישוב יעיל נסמן את זמן הריצה של אלגוריתם ב-T(n) ואת הזיכרון הנדרש ב-S(n) N הינו גודל הקלט לדוגמא: בעיית חיפוש מספר במערך קלט: מערך A בגודל n המכיל מספרים; מספר k לחיפוש פלט: אם k נמצא במקום ה-i, החזר i, אחרת החזר Nil.

17 חיפוש איבר במערך 1. For i  1 to n 2. If A[i] = k 3. return i 4. return Nil Best Case: When k = A[1], search is over as soon as begun T(n) = C (C is a constant) C = time to do i  1 + time to compare to n + time to compare to k + …

18 חיפוש איבר במערך 1. For i  1 to n 2. If A[i] = k 3. return i 4. return Nil Worst Case: When k not in A[], search goes through entire list T(n) = C+C+C+…. +C n times = C*n

19 חיפוש איבר במערך 1. For i  1 to n 2. If A[i] = k 3. return i 4. return Nil Average Case: Let Ti be the time it takes to find k when in A[i] Suppose k can be in any place i, or outside of A[] With uniform distribution T(n) = (T1+T2+T3+ …. Tn) / n =

20 פונקציות אסימפטוטיות עכשיו יש לנו זמני ריצה נתונים בקבועים (דוגמה: c) הקבועים ישתנו בין מחשבים אז איך נוכל להשוות בין אלגוריתמים בעלי קבועים שונים או פונקציות T(n) שונות? לצורך כך אנו משתמשים בפונקציות אסימפטוטיות: O (או-גדול Big-O) (אומגה-גדול Big-Omega) (טתה- גדול Big-Theta) פונקציות אסימפטוטיות מאפיינות סדר גודל – התנהגות הפונקציה כשגודל הקלט עולה

21 Big – O: חסם עליון Definition : if there exists constants c>0 and n0 such that for all n>n0, In other words, g(n) bounds f(n) from above (for large n’s) up to a constant. Examples: בתודה למתרגל אלמוני באוניברסיטה העברית על השקופית

22 1000 3000 2000 משמעות סדרי גודל: דוגמא בתודה למרצה באוניברסיטת תל אביב על השקופית שימו לב

23 השוואת סדרי גודל מספר השניות מאז המפץ הגדול -- מספר בן 24 ספרות מספר הפרוטונים ביקום – מספר בן 80 ספרות בתודה לד"ר מירב חדד וראובן קאשי 101001000 1111 log 10 n123 n101001000 n2n2 1001000010 6 2n2n 1024מספר בן 31 ספרותמספר בן 302 ספרות n!36x10 6 מספר בן 161 ספרותמספר גדול באמת

24 למה משתמשים במדדים אסימפטוטיים? כיון שהם לא משתנים גם אם המחשבים נעשים מהירים יותר, או שפת התכנות משתפרת מסתירים את הקבועים המאפיינים מחשב מסויים מבליטים את אופן התנהגות האלגוריתם בקלט גדול

25 Big – Omega חסם תחתון: Definition : if there exists constants c>0 and n0 such that for all n>n0, In other words, g(n) bounds f(n) from below (for large n’s) up to a constant. Examples: בתודה למתרגל אלמוני באוניברסיטה העברית על השקופית

26 Big – Theta: חסם עליון ותחתון Definition : if: and In other words, g(n) is a tight estimate of f(n) (in asymptotic terms). Examples: בתודה למתרגל אלמוני באוניברסיטה העברית על השקופית

27 cg(n) f(n) n0n0 cg(n) n0n0 f(n) c 2 g(n) c 1 g(n) n0n0 ציור מדדי סיבוכיות בתודה למרצה באוניברסיטת תל אביב על השקופית

28 חיפוש איבר במערך 1. For i  1 to n 2. If A[i] = k 3. return i 4. return Nil Best Case: T best (n) = C = O(1) Worst Case: T worst (n) = n*C = O(n) Average Case: T average (n) <= C(n+C)/2 = O(n)


Download ppt "Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department."

Similar presentations


Ads by Google