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

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול
Advertisements

1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
מבוסס על הרצאות של יורם זינגר, האוניברסיטה העברית י"ם
מיון (Sorting) קלט : מערך בן n מספרים. פלט : מערך ובו המספרים אותם מאוחסנים בסדר עולה
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
Growth of Functions: Asymptotic Notations Direct Address Tables Hashing.
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
1 תוכן העניינים הקדמה שיטה כללית לכתיבת תוכנית שיטה כללית לכתיבת תוכנית יעילות של תוכנית (סיבוכיות) יעילות של תוכנית (סיבוכיות) מדדי סיבוכיות נוספים מדדי.
1 מבוא למדעי המחשב תרגול מספר 11 2 הנושאים להיום סיבוכיות זמן ומקום של אלגוריתמים. למה צריך ללמוד את זה? 100% יופיע במבחן מדד ליעילות של אלגוריתמים.
מה החומר למבחן ? כל החומר שנלמד בהרצאות ובתרגולים. לגבי backtracking: לא תידרשו לממש אלגוריתם, אך כן להבין או להשלים מימוש נתון. אחת משאלות המבחן מבוססת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
רקורסיות נושאי השיעור מהן רקורסיות פתרון רקורסיות : שיטת ההצבה שיטת איטרציות שיטת המסטר 14 יוני יוני יוני 1514 יוני יוני יוני 1514.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
הכנת המצגת: מוטי בן ארי ומיכל סמואל המחלקה להוראת המדעים, מכון ויצמן למדע ©
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
משפט ההרכבה Composition Theorem תהי C מחלקה של פונקציות בוליניות תהי נגדיר סדרת פונקציות שניתנות לחישוב בזמן פולינומיאלי.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
מבוא למדעי המחשב תרגול מספר 11.
Ray 7 דוגמא אלגוריתם 1.קבל דוגמאות 2. פלט f a עבור הדוגמה a המינימלית החיובית ?
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 סיכום הקורס.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מיון (Sorting) קלט : מערך בן n מספרים. פלט : מערך ובו המספרים אותם מאוחסנים בסדר עולה
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. אג'נדה שאלות מבחינות חזרה על מימוש stream אפשרי 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
- אמיר רובינשטיין מיונים - Sorting משפט : חסם תחתון על מיון ( המבוסס על השוואות בלבד ) של n מפתחות הינו Ω(nlogn) במקרה הגרוע ובממוצע. ניתן לפעמים.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
Algorithm analysis and design Introduction to Algorithms week1
תרגול מס ' 1: מבני נתונים – מבוא. כללי מבנה נתונים – דרך לארגן נתונים במחשב ולגשת אליהם. בקורס זה נלמד על מבני נתונים שונים אשר משמשים לבניית אלגוריתמים.
Chapter 5 Algorithms (2) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
Introduction to Complexity. בעיה פשוטה במיוחד סדר שלושה מספרים לפי סדר מונוטוני עולה יש למישהו רעיון?
1 Programming for Engineers in Python Autumn Lecture 9: Sorting, Searching and Time Complexity Analysis.
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
יעילות, סגנון ובדיקה של קוד. " איכות " של פיתרון קוד לבעייה נכונות פשטות (תכנות)‏ יעילות.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
מבוא למדעי המחשב סיבוכיות.
מבנה נתונים ואלגוריתמים
ניתוח זמן ריצה (על קצה המזלג)
מבוא למדעי המחשב הרצאה 1: מבוא כללי מי אני, שעות הקבלה:
ניתוח זמן ריצה (על קצה המזלג)
בעיות נוספות ב-NPC.
Marina Kogan Sadetsky –
ניתוח זמן ריצה (על קצה המזלג)
מבוא כללי למדעי המחשב תרגול 4
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
חזרה חלקית על תרגול 12 גרף G=(V,E)
Advanced Analysis of Algorithms
Advanced Analysis of Algorithms
Presentation transcript:

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

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

אלגוריתם א' אם 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

אלגוריתם ב' אם 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

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

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

אלגוריתם א' אם 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

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

אלגוריתם ב' אם 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

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

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

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

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

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

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

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

חיפוש איבר במערך 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 + …

חיפוש איבר במערך 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

חיפוש איבר במערך 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 =

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

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

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

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

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

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

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

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

חיפוש איבר במערך 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)