170 likes | 349 Views
ספר הקורס : Introduction to Algorithms (Cormen, Leiserson, Rivest). גרסה עברית בהוצאת האונ ’ הפתוחה (שני חלקים ). מרצה: נעם ניסן שעור: ב’ 10-12 ד’ 12-1 שעת קבלה: ד’ 1-2 מתרגלים : דן גוטפרוינד אלי בן ששון יונתן בילו. קורס אלגוריתמים. דרישות הקורס. תרגיל לבית כל שבועיים .
E N D
ספר הקורס: Introduction to Algorithms (Cormen, Leiserson, Rivest). גרסה עברית בהוצאת האונ’ הפתוחה (שני חלקים) מרצה: נעם ניסן שעור: ב’ 10-12 ד’ 12-1 שעת קבלה: ד’ 1-2 מתרגלים: דןגוטפרוינד אלי בן ששון יונתן בילו קורס אלגוריתמים
דרישות הקורס • תרגיל לבית כל שבועיים. • הגשה חובה, בדיקה מדגמית • ציון סופי: 90% מבחן; 12% תרגילים. • אתר WEB של הקורס: פרטים, תרגילים, עדכונים. • נדרשת חזרה בבית על חומר השיעור!
חלקב' (4-5 שבועות) אלגוריתמיםעלגרפים חיפושלרוחבולעומק מסלוליםקצריםביותר זרימהושידוכים חלקא (5-4 שבועות) שיטותתכנוןוניתוחאלגוריתמים מבוא ניתוחזמןריצה (חזרה) תכנותדינמי אלגוריתמיםחמדניים אלגוריתמים לקירוב תוכן הקורס
אלגוריתמיםמקביליים אלגוריתמים על מספרים טבעיים אלגוריתמיםהסתברותיים אלגוריתמיםאלגבריים התאמתמחרוזות חלקג' (5-4 שבועות) נושאיםנבחרים ילמדוחלקמהנושאיםהבאים. תוכן הקורס (המשך)
פרספקטיבה • האלגוריתם הינו לב התוכנית • הבנת הבעיה קשורה הדוקות להבנת האלגוריתם אבל • ב‘מציאות’ הבעיה היא הגדרת הבעיה • האלגוריתם הינו משרתם של הנתונים
הפרד ומשול אינדוקציה חצי-חצי (“בערך”) שכלולים אלג’ חמדניים תכנות דינמי לדעת מראש להכיר את הפתרון רדוקציה לשנות אלגוריתם מוכר לגנוב רעיונות כיצד לתכנן אלגוריתם?
יש N קבוצות קלט: לכל זוג קבוצות, מי ניצחה במשחק בין שתיהן. (כל הזוגות התחרו; אין תיקו) פלט: סידור של כל הקבוצות, כך שכל קבוצה ניצחה את קודמתה. דוגמה: בעיה 1 3 4 2
פתור את הבעיה עבור (N-1) הקבוצות הראשונות. מצא מקום להוסיף את הקבוצה ה-N. פתרון או
Sort(A,i,j) A[i]..A[j] ממיין את חלק המערך if i<j then m <-- (i+j)/2 sort(A,i,m) sort(A,m+1,j) merge(A,i,m,j) Merge(A,i,m,j) A[m+1..j], A[i..m] מניח ש ממוינים כבר, וממזג לרשימה A[i..j] אחת ממוינת דוגמה: Merge-Sort מערך עזר [A[i..m] A[m+1..j
A[1..n] קלט: מערך מספרים פלט: שני מספרים במערך שסכומם 10000000 (או שאין כאלו) בעיה
Sort A[1…N] for j=1…N find 1000000-A[j] in A (FIND מתבצע ע”י חיפוש בינארי במערך ממוין.) פתרון
סימון: עבור אלגוריתם A TA(n) יסמן את מספר הפעולות שמבצע A על הקלט הגרוע ביותר מאורך n (על המחשב שלי בבית) הגדרה: יהיו f, g : N --> N נאמר ש: f = O(g) אם קיים קבוע C כך שלכל n: (f בערך קטנה או שווה ל-g) ניתוח זמן ריצה
הוכחה: יהי C כך שלכל n: f(n) <= Cg(n) יהי D כך שלכל n: h(n) <= Dg(n) נציב E=C+D, ונקבל לכל n: (f+h)(n)=f(n)+h(n) <= <= Cg(n)+Dg(n)=Eg(n) משפט: אם f=O(g) ; h=O(g) אזי f+h=O(g) הגדרה: (f+h)(n) = f(n) + h(n) דוגמה להוכחה פורמלית
בעיות ומגבלות: התעלמות מקבועים האם הקלט מספיק גדול? מקרה ממוצע זמן “משוערך" יתרונות: קרוב טוב במציאות (לרוב) ניתוח מתמטי מדויק קל מאוד לעבודה עובד לכל מחשב/שפה עובד לכל קלט פרספקטיבה
Proc1(A[1..n]) s <-- 0 for i = 1 .. n do for j = (i +1) .. n do if A[i] < A[j] s <-- s + 1 ניתוח זמן ריצה
Proc2(A[1..n]) i <-- 1; j <-- 1; s <-- 0 repeat if A[i] < A[j] s <-- s + 1 if j=n j=i + 1; i <-- i+1 else j <-- j+1 until i+j > 2n Proc1(A[1..n]) s <-- 0 for i = 1 .. n do for j = (i +1) .. n do if A[i] < A[j] s <-- s + 1 ניתוח זמן ריצה
Merge-Sort -- זמן ריצה • TMerge(n) = O(n) • TSort(n) = 2TSort(n/2) + O(n) • TSort(1) = O(1) משפט: Tsort(n) = O(n log n)