1 מבוא למדעי המחשב תרגול מספר 11 2 הנושאים להיום סיבוכיות זמן ומקום של אלגוריתמים. למה צריך ללמוד את זה? 100% יופיע במבחן מדד ליעילות של אלגוריתמים.

Slides:



Advertisements
Similar presentations
Pointers הרצאה קריטית. השאלות הפתוחות מה זה ה- & שמופיע ב scanf מדוע כשמעבירים מחרוזת ל scanf אין צורך ב & האם ניתן להכריז על מערך שגדלו אינו ידוע בתחילת.
Advertisements

1 מבוא למדעי המחשב הקצאה דינאמית. 2 הקצאת זיכרון דינאמית  כאשר אנו משתמשים במערכים, אנו מקצים אוטומטית את הזיכרון המקסימלי שנצטרך.  בפועל, אנו משתמשים.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
משטר דינמי המשך – © Dima Elenbogen :55 חידה שכדאי לעבור עליה: 2011/ho/WCFiles/%D7%97%D7%99%D7%93%D7%94%20%D7%A2%D7%9D%20%D7%91%D7%95%D7%A0%D7%95%D7%A1.doc.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
Growth of Functions: Asymptotic Notations Direct Address Tables Hashing.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
מה החומר למבחן ? כל החומר שנלמד בהרצאות ובתרגולים. לגבי backtracking: לא תידרשו לממש אלגוריתם, אך כן להבין או להשלים מימוש נתון. אחת משאלות המבחן מבוססת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
11 Introduction to Programming in C תרגול
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
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. מספר הטעיות קטן.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מבוא למדעי המחשב תרגול מספר 11.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
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.
עקרון ההכלה וההדחה.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
Sscanf example #include int main () { char sentence []="Rudolph is 12 years old"; char str [20]; int i; sscanf (sentence,"%s %*s %d",str,&i); printf ("%s.
- אמיר רובינשטיין מיונים - Sorting משפט : חסם תחתון על מיון ( המבוסס על השוואות בלבד ) של n מפתחות הינו Ω(nlogn) במקרה הגרוע ובממוצע. ניתן לפעמים.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
מבוא למדעי המחשב הרצאה 11: תכנות רקורסיבי 4 כולל מיון רקורסיבי 1.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
יעילות, סגנון ובדיקה של קוד. " איכות " של פיתרון קוד לבעייה נכונות פשטות (תכנות)‏ יעילות.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
מבוא למדעי המחשב סיבוכיות.
מבנה נתונים ואלגוריתמים
ניתוח זמן ריצה (על קצה המזלג)
תירגול 14: מבני נתונים דינאמיים
ניתוח זמן ריצה (על קצה המזלג)
מבני נתונים ADT, O() notation, Recursions תשס"ח סמסטר ב' תרגול 1
ניתוח זמן ריצה (על קצה המזלג)
תרגול 8 תחומי הכרה פונקציות
תוכנה 1 תרגול 13 – סיכום.
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
חזרה חלקית על תרגול 12 גרף G=(V,E)
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Computer Architecture and Assembly Language
Presentation transcript:

1 מבוא למדעי המחשב תרגול מספר 11

2 הנושאים להיום סיבוכיות זמן ומקום של אלגוריתמים. למה צריך ללמוד את זה? 100% יופיע במבחן מדד ליעילות של אלגוריתמים

3 סיבוכיות זמן - מוטיבציה מעוניינים במדד למהירות האלגוריתם פשוט אוניברסאלי הצעה: נקמפל, נריץ על קלט מסוים ונמדוד זמן ריצה תלוי מערכת => יש לנתח ולספור פעולות במקום זמן תלוי "גודל" קלט => יש להתייחס כפונקציה של "גודל קלט" ייתכן קלט "נוח" => יש להתייחס לקלט "הגרוע ביותר" קלטים קטנים לא מעניינם => מספיק התנהגות אסימפטוטית זמן ביצוע פעולות שונה => ניתן להסתפק בקירוב עד כדי קבוע

4 סיבוכיות זמן – הגדרת t(n) נסמן ב- f(n) את מספר הפעולות המקסימאלי שמבצע אלגוריתם, כתלות ב- n – "גודל הקלט". "פעולה" – פעולה אלמנטארית, מתבצעת בזמן קבוע קטן למה סופרים פעולות ולא זמן ריצה? n – "גודל הקלט", תלוי בעיה (כמות מספרים, אורך מחרוזת וכו') מספר פעולות מקסימאלי – לקלט הכי גרוע בגודל n למה מקסימאלי? כעת בהינתן האלגוריתם, נחשב את f(n)

5 סיבוכיות זמן – פישוט t(n) נרצה לפשט את f(n) f(n) מסובכת, למשל f(n)=3n 2 -10n+nlog 3 n-2log 2 n נחפש קירוב פשוט t(n) אשר "מתנהגת בערך כמו f(n)" t’(n)=3n 2 מתנהגת כמו t(n) אסימפטוטית f(n)/t’(n) שואף ל-1 כאשר n שואף לאינסוף t(n)=n 2 מתנהגת כמו t(n) אסימפטוטית עד כדי קבוע f(n)/t(n) שואף ל-3 כאשר n שואף לאינסוף t(n)=n 2 נקראת סיבוכיות זמן של האלגוריתם

6 סיבוכיות זמן – הגדרה סיבוכיות (זמן): קירוב אסימפטוטי (עד כדי קבוע) לכמות הפעולות שהאלגוריתם מבצע לקלט הכי גרוע בגודל נתון ישנם בשלושה מדדים (קירובים) לסיבוכיות:  חסם עליון - O ("או")  חסם תחתון - Ω ("אומגה")  חסם הדוק - θ ("תטה") תמיד נשאף לחשב את החסם ההדוק, אך לעיתים נסתפק בחסם עליון

7 הגדרות (תזכורת) קיים c>0 וקיים N שלם כך שלכל n>N: משמעותסימון f(n) ≤ c·t(n) t(n) – חסם א.ע"כ.ק. עליון ל- f(n) f(n) = O(t(n)) f(n) ≥ c·t(n) t(n) – חסם א.ע"כ.ק. תחתון ל- f(n) f(n) = Ω(t(n)) f(n)=O(t(n)) f(n)=Ω(t(n)) וגם t(n) – חסם א.ע"כ.ק. הדוק ל- f(n) f(n) = Θ(t(n)) f(n) היא... של t(n) כאשר...

8 אינטואיציה להגדרות N1N1 c 1 *t(n) f(n) f(n) = O(t(n)) N2N2 c 2 *g(n) f(n) f(n) = Ω (g(n)) N1N1 c 1 *h(n) f(n) f(n) = Θ (h(n)) N2N2 c 2 *h(n)

9 דוגמא נתון אלגוריתם ש"זמן הריצה" (כמות הפעולות) שלו כתלות בקלט n מתואר ע"י פונקציית הסיבוכיות הבאה: f(n) = 4n 3 מה מהבאים נכון? OΩΘ O(1)Ω(1)Θ(1) O(logn)Ω(logn)Θ(logn) O(n 2 )Ω(n 2 )Θ(n 2 ) O(n 3 )Ω(n 3 )Θ(n 3 ) O(n 3 logn)Ω(n 3 logn)Θ(n 3 logn) O(n 4 )Ω(n 4 )Θ(n 4 ) O(2 n )Ω(2 n )Θ(2 n ) f(n) = 4n 3 + 2n 2 f(n) = 4n 3 + 2n 2 + 7

10 כמה כללים בסיסיים מסקנה (נסו להוכיח פורמאלית): עבור פולינום מדרגה k: f(n) = a k n k + a k-1 n k a 1 n + a 0 = Θ(n k ) באופן דומה ניתן להראות: f(n) = a n 2 n + a n-1 2 n a 0 = Θ(2 n ) ומה לגבי ביטויים מעורבים? תרגיל: נוכיח כיf(n) = n + log(n) = Θ(n) בבית: f(n) = 2 n + n 3 = Θ(2 n )

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

12 "כללי אצבע" לקביעת סיבוכיות זמן של אלגוריתם int i=0; while(i<n) i+=1; int i=1; while(i<n) i*=2; int i=2; while(i<n) i=i*i; Θ (n) מהי סיבוכיות הזמן של קטעי הקוד הבאים כתלות ב- n? Θ (log (n)) Θ (log log (n)) כן, צריך לדעת לבצע פיתוחים כאלו ! 222 log 2 n=log 2 c*log c n

13 "כללי אצבע" לקביעת סיבוכיות זמן של אלגוריתם int i=0,j; while(i<n) i+=1; for(j=0 ; j<n ; j++) x=8; מה קורה כשיש יותר מלולאה אחת? int i=0,j; while(i<n) { i+=1; for(j=0 ; j<n ; j++) x=8; } לולאות " בטור " Θ(n)+ Θ(n)= Θ(n) לולאות מקוננות Θ(n)* Θ(n)= Θ(n 2 ) שימו לב שהלולאות בדוגמאות הנ"ל הן בלתי תלויות! נראה בהמשך דוגמאות שהלולאות כן תלויות.

14 "כללי אצבע" לקביעת סיבוכיות זמן של אלגוריתם עוד דוגמא לקינון לולאות דרך פונקציות: void f1(int x) { int i; for(i=0; i<x; i++) printf("…"); } void f2(int n) { while(n--) { f1(n); } O(n 2 )

15 אבחנות נוספות (1) for(i=0 ; i<n ; i++) printf("…"); לכל הפונקציות הבאות אותה סיבוכיות - Θ(n) for(i=0 ; i<2n ; i++) printf("…"); for(i=0 ; i<4000n ; i++) printf("…");

16 אבחנות נוספות (2) scanf("%d", &n); for(i=0 ; i<n ; i++) printf("…"); מה הסיבוכיות כתלות ב- n? Θ(n) #define N 100 for(i=0 ; i<N ; i++) printf("…"); מה הסיבוכיות כתלות ב- N? Θ(N) הסבר: נכון ש- N הוא קבוע, אבל אנחנו שואלים: "איך משתנה זמן הריצה כתלות ב- N?" ערכו האמיתי של N כלל לא משנה.

17 אבחנות נוספות (3) for(i=0 ; i<100 ; i++) printf("…"); מה הסיבוכיות כתלות ב- N? Θ(1) #define N 100 for(i=0 ; i<N ; i++) printf("…"); מה הסיבוכיות כתלות ב- N? Θ(N)

18 תרגיל 1 int f1(int a[], int b[], int n) { int i, j; for(i=0; i < n; i++) for(j = 0; j < n; j++) if(a[i] == b[j]) return i; return –1; } מה סיבוכיות הזמן של הפונקציה הבאה כתלות ב- n? int f1(int a[], int b[], int n) { int i, j; for(i=0; i < n; i++) for(j = 0; j < i ; j++) if(a[i] == b[j]) return i; return –1; } אותה שאלה, כאשר מחליפים את n ב - i ? Θ (n 2 )

19 תרגיל 2 void f2(int n) { while( n > 1) if(n % 2) n /= 2; else n += 1; } מה סיבוכיות הזמן של הפונקציה הבאה כתלות ב- n? Θ (logn)

20 תרגיל 3 void f3 (int n) { int i, m=1; for(i = 0; i < n; i++) m *= n; while( m > 6) m /= 3; } מה סיבוכיות הזמן של הפונקציה הבאה כתלות ב- n? Θ (nlogn)

21 תרגיל 4 void f4 (int n) { int i, j, k, count; k = 1; for(i = 0; i < n; i++) { k *= 3; for(j = k; j; j /= 2) count++; } מה סיבוכיות הזמן של הפונקציה הבאה כתלות ב- n? Θ (n 2 )

22 סיבוכיות כתלות ביותר מפרמטר אחד #define M 100 void f5 (int n) { while(n--) for(i=0; i<pow(M,n); i*=2) printf("..."); } מה סיבוכיות הזמן של הפונקציה הבאה כתלות ב- n ו-M? Θ (n 2 logM)

23 סיבוכיות זכרון (מקום) מספר תאי הזכרון (למשל בתים) המקסימלי שאלגוריתם צורך בו זמנית מתחילת ריצתו ועד סופו. void f1(int n) { int x,y,z;... } void f2(int n) { int A[N];... } void f3(int n) { int *p=(int*)malloc(n*sizeof(int));... } Θ(1)Θ(N) Θ(n)

24 סיבוכיות זכרון (מקום) כמה זכרון דורשת התוכנית הבאה כתלות ב- N? זיכרו שבסוף בלוק כל הזכרון שהוקצה בבלוק משוחרר. הקצאת הזכרון נראית כך: void f1(void) { int A[N]... } int main() { int i; for(i=0 ; i<N ; i++) f1(); return 0; } N התקדמות התוכנית כמות זכרון Θ (N)