49
מבנה נתונים – סיכומי הרצאות2010 ביוני22 מרצה: דורית אהרונובי: אור שריר סוכם ע[email protected] פניות לתיקונים והערות: הערה לקראת המבחנים כרגע חסרים מספר דברים בסיכום, כמו פונקציות גיבוב, וכמובן שתמיד יתכנו טעויות נוספות שלא שמתי לב אליהן. במהלך תקופת המבחנים אני אשתדל לעדכן את הסיכומים מדי פעם, כאשר יתפנה לי זמן לתקן ולהוסיף להם חומר, ולכן מי שמוצא טעויות אני אשמח אם יודיע לי על כך במייל. גם אם הסיכומים לא יעתדכנו מיד בבנק האקדמי, הקישור הבא תמיד ישאר לגרסה הכיhttp://dl.dropbox.com/u/380910/class_notes/dast.pdf :(כאשר תאריך העדכון מופיע בדף הראשי) עדכנית בהצלחה לכולם! תוכן עניינים4 הרצאותI 4 ................................... הקדמה1 4 ............................. נהלי הקורס1.1 4 ............................. מבני נתונים1.2 5 ......................... כלים בהם נשתמש1.3 5 ................. דוגמא לבעיות שנתקל בהן בקורס1.4 6 .................................. סיבוכיות2 6 .............................. מיון בועות2.1 6 ........................ אלגוריתם2.1.1 6 .................. סיבוכיות האלגוריתם2.1.2 7 .................. סימונים אסימפטוטים2.1.3 7 ............... שיטות טיפול באלגוריתמים רקורסיבים2.2 8 .................. השיטה האיטרטיבית2.2.1 8 ............... ניחוש והוכחה באינדוקציה2.2.2 9 ................ Merge Sort מיון מיזוג –2.2.3 1

סיכום הרצאות + תירגולים

  • Upload
    -

  • View
    390

  • Download
    2

Embed Size (px)

Citation preview

Page 1: סיכום הרצאות + תירגולים

הרצאות סיכומי – נתונים מבנה

2010 ביוני 22

אהרונוב דורית מרצה:

שריר אור ע״י: סוכם

[email protected] והערות: לתיקונים פניות

המבחנים לקראת הערה

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

במייל. כך על ליהכי לגרסה ישאר תמיד הבא הקישור האקדמי, בבנק מיד יעתדכנו לא הסיכומים אם גםhttp://dl.dropbox.com/u/380910/class_notes/dast.pdf הראשי): בדף מופיע העדכון תאריך (כאשר עדכנית

לכולם! בהצלחה

עניינים תוכן

4 הרצאות I4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . הקדמה 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . הקורס נהלי 1.14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . נתונים מבני 1.25 . . . . . . . . . . . . . . . . . . . . . . . . . נשתמש בהם כלים 1.35 . . . . . . . . . . . . . . . . . בקורס בהן שנתקל לבעיות דוגמא 1.46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . סיבוכיות 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . בועות מיון 2.16 . . . . . . . . . . . . . . . . . . . . . . . . אלגוריתם 2.1.16 . . . . . . . . . . . . . . . . . . האלגוריתם סיבוכיות 2.1.27 . . . . . . . . . . . . . . . . . . אסימפטוטים סימונים 2.1.37 . . . . . . . . . . . . . . . רקורסיבים באלגוריתמים טיפול שיטות 2.28 . . . . . . . . . . . . . . . . . . האיטרטיבית השיטה 2.2.18 . . . . . . . . . . . . . . . באינדוקציה והוכחה ניחוש 2.2.29 . . . . . . . . . . . . . . . . Merge Sort – מיזוג מיון 2.2.3

1

Page 2: סיכום הרצאות + תירגולים

10 . . . . . . . . . . . . . . . . האב ומשפט ומשול הפרד אלגוריתמי 2.313 . . . . . . . . . . . . . . . . . . . . . . . . ההשוואות ומודל מיון 2.413 . . . . . . . . . Abstract Data Type – ADT – מופשט נתונים טיפוס 314 . . . . . . . . . . . . . . . . . . . . . . . . וגרפים עצים על חזרה 3.114 . . . . . . . . . . . . . . . . . . . . . . . . . . . . קדימויות תור 3.218 . . . . . . . . . . . . . . . . . . . . . . . . . בינאריים חיפוש עצי 3.319 . . . . . . . . . . . . . . . . . . . בינארי בעץ חיפוש 3.3.119 . . . . . . . . . . . . . . . . . . . ומקסימום מינימום 3.3.219 . . . . . . . . . . . . . . . . . . . . קודקוד של עוקב 3.3.321 . . . . . . . . . . . . . . . . . . . . לעץ איבר הכנסת 3.3.421 . . . . . . . . . . . . . . . . . . . . . . איבר מחיקת 3.3.521 . . . . . . . . . . . . . . . . . . AVL מסוג בינאריים חיפוש עצי 3.422 . . . . . . . . . . . . . . . . . . . . . . . העץ מימוש 3.4.124 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . בהסתברות רקע 426 . . . . . . . . . . . . . . . . . . . . . . מקרי משתנה 4.0.227 . . . . . . . . . . . . . . . . . . . . . . . . . . . קידודים – מידע דחיסת 527 . . . . . . (1952) (Huffman Code) הופמן קוד ־ טקסטואלי מידע 5.129 . . . . . . . . . . . . . . . . . . . . . . . . . . מימוש 5.1.129 . . . . . . . . . . . . . . . . . . . . הופמן קוד יעילות 5.1.230 . . . . . . . . . . . . . . . . . . . . . . . . אקראית וסיבוכיות אקראיות 630 . . . . . . . . . . . . . . . . . . . . . . . . . . אקראי מהיר מיון 6.133 . . . . . . . . . . . . . . . . . . . . . . . Hash Table – גיבוב טבלאות 733 . . . . . . . . . . . . . . . . . . . . . . . הפתרון למימוש כיוונים 7.133 . . . . . . . . . . . . . . . רנדומלי גיבוב ראשון: שלב 7.1.134 . . . . . . . . . . . . . . . . גיבוב פונקציית שני: שלב 7.1.235 . . . . . . . . . . . . . . גיבוב פונקציות של אוניברסלית משפחה 7.235 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . גרפים 835 . . . . . . . . . . . . . . . . . . . . . . . . . . . גרפים של ייצוג 8.136 . . . . . . . . . . . . . . . . . . . . . גרפים לסריקת אלגוריתמים 8.236 . . . . . . . . . . BFS – Breadth First Search – לרוחב חיפוש 8.338 . . . . . . . . . . . (״דייקסטרה״) Dijkstra אלגוריתם 8.3.139 . . . . . . . . . . . DFS – Depth First Search ־ לעומק חיפוש 8.440 . . . . . . . . . . . . . . . . . . . . . . טופולוגי מיון 8.4.140 . . . . . . . . . . . DAG של טופולוגי למיון אלגוריתם 8.4.241 . . . . . . . . . . . . . . . . . . . . . SCC אלגוריתם 8.4.341 . . . . . . . . . . (Minimum Spanning Trees) מינימליים פורשים עצים 942 . . . . . . . . . . . . . . . . . . . . . MSTל־ קרוסקל אלגוריתם 9.143 . . . . . . . . . . . . . . . . . . . . . . . Union-Find אלגוריתם 9.244 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . הסופי המבחן על 1044 . . . . . . . . . . . . . . . . . . . . . . . . . . . . למבחן החומר 10.145 . . . . . . . . . . . . . . . . . . . . . . . . . . . . המבחן מבנה 10.2

2

Page 3: סיכום הרצאות + תירגולים

45 תרגולים II45 . . . . . . . . . . . . . . אסימפטוטים סימונים – 01.03.2010 – 1 תרגול 1146 . . . . . . . . האסימפטוטים בסימונים לשימוש כללים 11.0.147 . . . . . . . . . . . . . . . . . . מיון אלגורתמי – 09.03.2010 – 2 תרגול 1247 . . . . . . . . . . . . . Counting Sort – ספירה מיון 12.0.248 . . . . . . . . . . . . . . . . . . . . Radix Sort מיון 12.0.348 . . . . . . . . . . . . . . . . . . . Bucket Sort מיון 12.0.449 . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.03.2010 – 3 תרגול 13

3

Page 4: סיכום הרצאות + תירגולים

I חלק

הרצאות

הקדמה 121.02.2010

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

מידע.

הקורס נהלי 1.1

קבלה שעת

.17:00 עד מ־15:00 רביעי בימי בשבוע שעתיים

תרגילים

אלקטרונית, אותם להגיש ויש תרגילים 14 יהיו בקורס. הסופי מהציון %10 מהווים התרגיליםבשבוע ראשון ליום עד להגיש להגישו ויש התרגיל יפורסם בלילה ראשון ביום שבוע כל כאשרהתרגילים, תוכן על ראיונות יבוצעו התרגילים לבדיקת בנוסף בצהריים. ב־12 מכן לאחרמספיק לא – הראיון עד שהוגשו התרגילים על שאלות ישאלו בו אחד ראיון חודש בכל כאשרסטודנטים, 4 נוכחים יהיו ראיון בכל מספק. לא הפתרון הכתוב בתרגיל אם נכון פתרון להציגאחרת הסמסטר, במהלך ראיונות ל־3 לגשת חובה קיימת התרגילים, הגשת לחובת ובדומה

למבחן. לגשת ניתן לא

הקורס אתר

www.cs.huji.ac.il/~dast האתר: כתובתאחריהם. לעקוב ויש מחייבים הם באתר בפורומים העדכונים כל

אמצע מבחן

מגן. כציון הסופי מהציון כ־%20 יהווה אשר מבחן יתקיים הקורס במאצע

בונוסים

וכו׳. מעניינות שאלות על ובתרגילים בשיעורים בונוסים ינתנו

נתונים מבני 1.2

ראינו: שכבר נתונים מבני

מקושרת רשימה •

מחסנית •

תור •

בינארי חיפוש עץ •

4

Page 5: סיכום הרצאות + תירגולים

וכו׳ •

נוספים: נתונים מבני

גרפים •

מאוזנים חיפוש עצי •

גיבוב פונקציות •

נשתמש בהם כלים 1.3

אינדוקציה •

משוואות ־ רקורסיה •

הסתברות •

סיבוכית אנליזה •

הוכחות •

בקורס בהן שנתקל לבעיות דוגמא 1.4

הלוח בפינות הנמצאים כתומים פרשים ושני כחולים פרשים שני עם 3× 3 משבצות לוח עלהשחורים הפרשים של המיקום להחלפת הנדרש המינימלי הצעדים מספר מהו איור). (ראה

פרשים. של תקניים צעדים באמצעות רק הלבנים עם

משבצות לוח על פרשים חילוף – פתיחה בעיית :1 איור

מהנקודות 4 על כאשר נקודות 8 קיימות עיגול על הבאה: לבעיה מקבילה הזו הבעיהבקפיצות לנוע היכולים פרשים, שני כל בין נקודה של במרווחים הנ״ל הפרשים נמצאים האלוהפעם והכחולים. הכתומים הפרשים של המיקומים להחלפת השאלה אותה ונשאלת 3 של

צעדים. 16 – ברור התשובה

5

Page 6: סיכום הרצאות + תירגולים

מעגל על הנמצאים ״פרשים״ חילוף מקבילה: בעיה :2 איור

סיבוכיות 2

בועות מיון 2.1

אלגוריתם 2.1.1

תכנות. לשפת כתובה שפה בין שהיא אלגוריתמים לכתיבת צורה היא פסאודו־קוד 2.1 הגדרה

פסאודו־קוד: באמצעות בועות למיון האלגוריתם את נכתוב

בועות מיון 1 אלגוריתםfor i = 1 to n - 1 do

for j = 1 to n - i doif a(j) > a(j+1) then swap a(j) and a(j+1)

האלגוריתם סיבוכיות 2.1.2

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

T (n) =

n−1∑i=1

n−i∑j=1

2

=

n−1∑i=1

2 · (n− i) = 2

n−1∑i=1

(n− i)

= 2 ·n−1∑k=1

k = 2 · n(n− 1)

2= n(n− 1) = n2 − n

6

Page 7: סיכום הרצאות + תירגולים

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

T ′(n) =

n−1∑i=1

1 +

n−i∑j=1

5

=

n−1∑i=1

(1 + 5(n− i)) =

n−1∑i=1

1 + 5

n−1∑i=1

i

= (n− 1) + 5 · n(n− 1)

2=

5

2n2 − 3

2n− 1

בכל אך שונה, פירוט ברמת הבעיה על שהסתכלנו מכיוון שונות, תוצאות שתי קיבלנו כביכולנבחר. בה הפירוט לרמת קשר ללא בריבוע יהיה N הפרמטר מקרה

אסימפטוטים סימונים 2.1.3

ש־ כך 0 < n,C קבועים קיימים O(g(n))אם ש־f(n)היא נגדיר – גדול״ O״ – 2.2 הגדרה. n > n0 f(n)לכל ≤ C · g(n)

דוגמאות:

.n0 = 1, C = 1 עבור נכון הוא n2 − n = O(n2) •

.n0 = 1, C = 52 עבור נכון הוא 5

3n2 − 3

2n− 1 = O(n2) •

נכון! הוא אף 52n

2 + 32n+ 1 = O(n2) •

ש־ כך 0 < C, n0 קבועים קיימים אם Ω(g(n)) היא f(n)ש־ נגדיר – ״Ω״ – 2.3 הגדרה.n ≥ n0 לכל f(n) ≥ C · g(n)

.Θ(g(n)) שהיא נגדיר אז Ω(g(n)) וגם O(g(n)) גם היא f(n) אם – ״Θ״ – 2.4 הגדרה

,(g(n)ל־ ביחס (זניחה o(g(n)) היא f(n)ש־ נגדיר – ״o״ – 2.5 הגדרה

. limn→∞

∣∣∣ f(n)g(n)

∣∣∣ = 0 אם

רקורסיבים באלגוריתמים טיפול שיטות 2.207.03.2010

בועות: למיון רקורסיבי אלגוריתם נמצא

רקורסיבי בועות מיון 2 אלגוריתם

Bubble Sort A[1, . . . , n] :

Bubble A[1, . . . , n]Bubble Sort A[1, . . . , n− 1]

Bubble A[1, . . . , n] :

שמאלה... במערך ביותר הגדול האיבר את בעבע

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

T (n) = T (n− 1) + Θ(n)

T (1) = Θ(1)

7

Page 8: סיכום הרצאות + תירגולים

האיטרטיבית השיטה 2.2.1

T (n− 1) + c′ · n ≤ T (n) ≤ T (n− 1) + c · n≤ T (n− 2) + c(n− 1) + c · n≤ T (n− 3) + c(n− 2) + c(n− 1) + c · n

≤...

≤ T (1) + c · 2 + c · 3 + . . .+ c(n− 1) + c · n

≤ d+ c ·n∑j=2

j = d+ c ·[n(n+ 1)

2− 1

]= d+

c

2n2 +

c

2n− c = O(n2)

השמאלי: האגף עבור דומה באופן

T (n) ≥ d′ + c′

2n2 +

c′

2n− c′ = Ω(n2)

.Θ(n2) היא האלגוריתם של הסיבוכויות כי נקבל התוצאות שתי ומשילוב

באינדוקציה והוכחה ניחוש 2.2.2

T (1) = הוא: האינדוקציה בסיס באינדוקציה) נכונה (לא הוכחה: T (n) = O(n)ש־ ננחשO(1)

:n עבור nונוכיח עד נכונה הטענה כי נניח

T (n) = T (n− 1) +O(n)

Assumption︷︸︸︷= O(n− 1) +O(n)

= O(n) +O(n) = O(n)

הטעות? איפה – מקודם שמצאנו לסיבוכיות בסתירה T (n) = O(n) אכן כי וקיבלנובאופן צויינה לא האינדוקציה והנחת משתנים O של הסימון תחת המסתתרים הקבועים

המעברים: את נתקן – מפורש

T (n) ≤ T (n− 1) + d · n ידוע:

T (n) ≤ c · n באינדוקציה: נניח

:n+ 1 עבור נוכיח

T (n+ 1)

From the recursion eq.︷︸︸︷≤ T (n) + d · (n+ 1)

Assumption︷︸︸︷≤ c · n+ d(n+ 1)?≤ c · (n+ 1)

8

Page 9: סיכום הרצאות + תירגולים

השאלה). סימן (עם האחרון המעבר את לבצע ניתן לא הבעיה:

.T (n) = O(n2)ש־ באינדוקציה נוכיח (נכונה) הוכחה:

.T (1) ≤ dו־ T (n) ≤ T (n− 1) + d · n ידוע:

T (n) ≤ d · n2 באינדוקציה: להוכיח ננסה

.T (1) ≤ d = d · 12 האינדוקציה: בסיס

שכן T (n+ 1) ≤ d(n+ 1)2 ש־ ונוכיח T (n) ≤ d · n2ש־ נניח האינדוקציה: צעד

T (n+ 1) ≤ T (n) + d(n+ 1) ≤ d · n2 + d(n+ 1)

≤ d(n2 + n+ 1) ≤ d(n2 + 2n+ 1) = d(n+ 1)2

Merge Sort – מיזוג מיון 2.2.3

מיזוג מיון 3 אלגוריתם

Mergesort A[1, . . . , n]:

Mergesort A[1, . . . , n2 ]Mergesort A[n2 + 1, . . . , n]Merge (A[1, . . . , n2 ], A[n2 + 1, . . . , n]) <- Θ(n)

האלגוריתם: של הסיבוכיות את נמצא

T (n) = 2T (n

2) + Θ(n)

לדוגמא: מערך על האלגוריתם של הרקורסיה עץ את נצייר5 4 2 6 1 3 7 8

2 4 5 6 1 3 7 8

4 5 2 6 1 3 7 8

5 4 2 6 1 3 7 8ריצה: זמני לפי עץ את נצייר דומה, ובאופן

9

Page 10: סיכום הרצאות + תירגולים

ריצה זמני לפי רקורסיה עץ :3 איור

T (n) = c ·n · logc(n) = בסה״כ ולכן c ·nל־ שווה שורה וכל בעץ רמות log2(n) קיימות.Θ(n · log(n))

האב ומשפט ומשול הפרד אלגוריתמי 2.3

a, b כאשר nb בגודל קטנות בעיות aל־ הבעיה את לחלק דרך וקיימת ,n בגודל בעיה נתונה

חיובי. שלם k עבור Θ(nk) היא הפתרונות a של החיבור שעלות נגיד חיוביים. שלמים הםהוא: שכזה האלגוריתם של הריצה זמן

T (n) = a · T(nb

)+ Θ(nk)

T (1) = Θ(1)

זו: כללית משוואה של הריצה זמן את למצוא ננסה

T (n) = a · T (n

b) + c · nk

T (1) = c

רקורסיה: עץ ולפי

10

Page 11: סיכום הרצאות + תירגולים

ומשול הפרד לאלגוריתם רקורסיה עץ :4 איור

בשורה בנוסף logb(n) הוא בעץ השורות ומספר c · al ·(nbl

)kהוא שורה כל של הסכום

.c · alogb(n) יש האחרונההשורות: כל את נסכום

l = 0 cnk = cnk

l = 1 c · a ·(nb

)k= cnk

( abk

)l = 2 c · a2 ·

(nb2

)k= cnk

( abk

)2

...... =

...

m = logb n c · am(nbm

)k= cnk

( abk

)m:q = a

bkעבור מקרים שלושה קיימים

. T (n) = c · nk ·∑ml=0

(abk

)l= c · nk ·

(1−qm+1

1−q

)= Θ(nk) ואז q < 1 .1

. T (n) = c · nk ·∑ml=0 1 = c · nk · logb(n) = Θ(nk log(n)) ואז q = 1 .2

ואז q > 1 .3

T (n) = c · nk ·m∑l=0

( abk

)l= c · nk

[(abk

)m+1 − 1(abk

)− 1

]

= Θ

(nknk

[( abk

)m+1

− 1

])= Θ

[nk( abk

)m]= Θ

[nk

am

bkm

]= Θ

[nkam

nk

]= Θ (am) = Θ

(alogb n

)= Θ

(nlogb a

)11

Page 12: סיכום הרצאות + תירגולים

אם ומשול. הפרד אלגוריתם לפי T (n) עבור הנ״ל הפתרונות – האב משפט 2.6 משפטאז q = a

bkונגדיר , T (n) = a · T

(nb

)+ Θ(nk)

T (n) = Θ(nk) מתקיים q < 1 אם .1

T (n) = Θ(nk log n

)מתקיים q = 1 אם .2

.T (n) = Θ(nlogb a

)מתקיים q > 1 אם .3

.T (n) = Θ(n log2 n) ולכן q = 1 ואז a = b = 2, k = 1 – מיזוג מיון דוגמא:

ולא וכל ומשול הפרד אלגוריתם לא הוא – T (n) = T (n− 1) + Θ(n) בועות מיון דוגמא:כך! אותו לפתור ניתן

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

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

Quicksort 4 אלגוריתםQuicksort A[left, right] :-

if left < right then

q ←partition[A]Quicksort [left, q-1]Quicksort [q+1, right]

בסה״כ: ולכן Θ(n) היא החלוקה של הסיבוכיות

T (n) = T (q − 1) + T (n− q) + Θ(n)

T (1) = Θ(1)

T (n) = 2T (n2 ) + Θ(n) טוב: הכי המקרהT (n) = T (n− 1) + Θ(n) גרוע: הכי המקרה

.Ω(n log n) = T (n) = O(n2) ולכןאת יחלק הוא איבר נבחר בו פעם שבכל כך c = 1

10 למשל ,c קבוע קיים כי נניחולכן , n10 ,

9n10 ל המערך

T (n) = T (n

10) + T (

9

10n) + Θ(n) < 2T (

9

10n) + Θ(n)

מכיוון אבל ,O(nlog 10

92) הוא הפתרון ,k = 1, b = 10

9 , a = 2 כאשר האב, וממשפטהרקורסיה עץ את נצייר אם שלנו. הדיוק את משפר לא זה נתון ,log10/9 2 > ש־2לעלים מהשורש מהמסלולים חלק (כלומר מאוזן אינו העץ כי ניראה האלגוריתם, שלO(n log10/9 n) = כי לכתוב ניתן ולכן ,log10/9 n הינו העץ גובה העץ). מגובה קצרים

.O(n log n)

12

Page 13: סיכום הרצאות + תירגולים

ההשוואות ומודל מיון 2.4

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

הטוב המיון גם (כלומר, Ω(n log n) היא ההשוואות במודל מיון כל של הסיבוכיות 2.8 משפט.(Θ(n log n)מ־ הקטנה סיבוכיות בעל להיות יכול לא ביותר, והיעיל

האלגוריתמים את המתאר כללי מודל למצוא ננסה המשפט, את להוכיח בשביל הוכחה::(Decision Tree) הכרעה בעץ נעזר הללו.

החלטה עץ :5 איור

בעץ לעלה מהקודקוד ארוך ארוך הכי המסלול אורך לפחות היא השוואות מיון של סיבוכיות.(h – העץ (גובה

היותר לכל בו קיימים אז בינארי עץ הוא שהעץ ומכיוון עלים n! לפחות יש שבעץ לב נשיםולכן עלים, 2h

2h ≥ #Leaf ≥ n!

2h ≥ n!

h ≥ log n! = log n+ log(n− 1) + log(n− 2) + . . .+ log 1

≥ n

2log

n

2=n

2log n− n

2= Ω(n log n)

Abstract Data Type – ADT – מופשט נתונים טיפוס 3

דוגמאות:

וכו׳. pop(), push(element) הפעולות עם LIFO הוא האיברים סדר – מחסנית .1

וכו׳. dequeue(), enqueue() הפעולות עם FIFO האו האיברים סדר – תור .2

13

Page 14: סיכום הרצאות + תירגולים

וגרפים עצים על חזרה 3.1

קודקודים שתי בין בין המחברות צלעות ושל קודקודים של כקבוצה G גרף נגדיר 3.1 הגדרהבגרף.

קודקודים של סדורים מזוגות מורכבות הצלעות קבוצת בו גרף הוא מכוון גרף 3.2 הגדרה((a, b) 6= (b, a) לסדר משמעות יש (כלומר

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

קיים n − 1 עד מ־1 i שלכל כך v1, . . . , vn קודקודים סדרת זו בגרף מסלול 3.4 הגדרה.(vi, vi+1) ∈ E

מסלול וקיים כשורש, מסומן הקוקדקדים שאחד כך מכוון גרף הוא מכוון עץ 3.5 הגדרהבגרף. קודקוד לכל מהשורש ויחיד אחד

קודקוד. של הבנים מספר היא קודקוד של יציאה דרגת 3.6 הגדרה

הקודקוד. אל מהשורש המסלול אורך הוא קודקוד של עומק 3.7 הגדרה

צלעות. ממנו יוצאות שלא קודקוד הוא עלה 3.8 הגדרה

לשורש. מהקודקוד במסלול w האחרון הקודקוד הוא קודקוד של הורה 3.9 הגדרה

בעץ. כלשהו לעלה העץ משורש ביותר הארוך המסלול אורך הוא העץ גובה 3.10 הגדרה

.2 היותר לכל היא קודקודיו שדרגת מכוון עץ הוא בינארי עץ 3.11 הגדרה

.0 או 2 היא היציאה דרגת קודקוד לכל שבו עץ הוא מלא עץ 3.12 הגדרה

עומק. אותו העלים לכל שבו עץ הוא מלאה עץ 3.13 הגדרה

המלאה האחרונה הרמה מלבד מלאות, הרמות כל שבו עץ הוא שלם כמעט עץ 3.14 הגדרהשלם). כמעט עץ גם הוא שלם שעץ (כמובן מסויים מקום עד משמאל

.D = blog2 nc הוא קודקודים n עם שלם כמעט עץ של גובהו 3.15 טענה

קדימויות תור 3.2

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

הבאות: הפעולות את כן

אותו. להוציא מבלי בתור ביותר הגדול האיבר את מחזירה – Max(A) •

מהתור. אותו ומוחקת בתור ביותר הגודל האיבר את מחזירה – Extract_max(A) •

התור. לתוך k חדש איבר הכנסת – Insert(k,A) •

14

Page 15: סיכום הרצאות + תירגולים

.x החדשה לקדימות k האיבר של הקדימות את מגדילה – Increase_key(x, k,A) •

ערימה. הנקרא אחר נתונים במבנה נשתמש יעילה, בצורה התורה את לממש מנת על

הערמה. תכונת את המקיימת שלם כמעט בינארי עץ היא (Heap) ערימה 3.16 הגדרה

לערימה דוגמא :6 איור

של הורה של הקדימות כלומר , ∀i, A(parent(i)) ≥ A(i) היא הערמה תכונת 3.17 הגדרהבניו. מקדימות גדולה קודקוד כל

. n = heapsize(A) הוא בערימה האיברים מספר 3.18 הגדרה

בנוסחאות: בשימוש בערימה) האיברים (מספר n בגודל מערך באמצעות ערמה לממש ניתן

left(i) := 2i

right(i) := 2i+ 1

parent(i) :=

⌊i

2

לנו: הדרושות הפעולות את עתה נגדיר

15

Page 16: סיכום הרצאות + תירגולים

וערימה קימויות תור 5 אלגוריתםheap_max(A) := return A[1]extract_max(A) :=

max ← A(1)A(1) ← A(heapsize(A))heapsize(A) ← heapsize(A)-1max_heapify(A, 1)

insert(A,k) :=

heapsize(A) ← heapsize(A)+1A(heapsize(A)) ← −∞increase_key(heapsize(A), k, A)

increase_key(i, k, A) :=

if k < A(i) then errorA(i) ← kwhile i>1 and A(parent(i)) > A(i)

swap(A, i, parent(i))i ← parent(i)

increase_key דומה, ובאופן מטה, כלפי iה־ האיבר את max_heapify״מפעפע״ (כאשרהמפתח) של החדש הערך לפי מיקומו עד מלא כלפי האיבר את מפעפע

אבחנות: מספר

שלם. כמעט בינארי עץ של שורש הנו שלם כמעט בינארי בעץ קודקוד כל א׳: אבחנה .1

מקסימום. ערימת של שורש הנו מקסימום בערימת קודקוד כל ב׳: אבחנה .2

מקסימום ערימת שורשי i של ילדיו שני אם (max_heapify של (נכונות ג׳: אבחנה .3הוא i ,max_heapify(A, i) הפעלת אחרי אז שלם, כמעט בינארי עץ על שורש iו־

מקסימום ערימת של שורש

זאת? לעשות ניתן כיצד ערמה. ממנו ליצור ונרצה קיים מערך לנו נתון כי נניח

היא זו דרך של הסיבכויות ולכן חדשה, ערמה לתוך במערך איבר כל להכניס •.Θ(n log n)

.Θ(n log n) הפחות לכל היא זו פעולה וגם המערך, את למיין ניתן •

max_heapifyב־ להשתמש ניתן ממוינת, ממש תהיה הערמה כי צורך שאין מכיוון •הבא: באופן הערמה את לסדר בשביל

16

Page 17: סיכום הרצאות + תירגולים

ממערך ערמה בניית 6 אלגוריתםbuild_max_heap(A) :=

heapsize(A) ← length(A)for i ← n to 1

max_heapify(A, i)

.(loop invariant) לולאה״ ״שמורת באמצעות נוכיח נכון? זה אלגוריתם מדוע

i, . . . , n הקודקודים באלגוריתם ללואה, iה־ הקריאה אחרי הלולאה: שמורת הוכחה:מקסימום. ערימות שורשי הם

.1 עד nמ־ i לכ נכונה הלולאה ששמורשת נוכיח

ריק). (באופן מקסימום ערימת של שורש הוא n שהקודקוד ברור i = n אתחול:

.i− 1 עבור ונוכיח i עבור נניח שימור:

לפי מקסימום ערימות שורשי הם A(1), . . . , A(n)ש־ ידוע , i עד הלולאה משמורתהעץ לתת שמחוץ הקודקדוים כל הקריאה, אחרי .max_heapify(A, i) הקריאהעבור מקסימום ערימות שורשי עדין הם ולכן כלום, להם קרה לא i − 1 ששורשושלם, כמעט עץ של שורש i− 1 א׳, אבחנה (לפי i− 1 ששורשו העף בתת הקודקודיםאת להפעיל ניתן ולכןן מקסימום, ערימת שורשי בניו ושני ,i עד הלולאה שמורת ובכל

מקסימום. ערימת של שורש הוא i− 1 ולכן ג׳) אבחנה

.Θ(n) היא זו בצורה הערימה בניית של הסיבוכיות 3.19 טענה

היא max_heapifyל־ הקריאה של הסיבוכיות d(i) בעומק קודקוד עבור הוכחה:.O(D − d(i) + 1)

2d ≥ הוא ?d בעומק קודקודים כמההיא: הסיבוכיות ולכן

T (n) ≤ C ·D∑d=0

2d(D − d+ 1)

k=D−d+1︷︸︸︷= C

D∑k=1

2D−k+1k

= C2D+1D∑k=1

k

2k?≤ C · 2 · n

17

Page 18: סיכום הרצאות + תירגולים

:x = 12 כאשר הסכום, את נעריך הבעיה, את לפתור בשביל

D+1∑1

kxk = x

D+1∑k=1

kxk−1

= x

D+1∑k=1

(xk)

0<x<1︷︸︸︷≤ x

∞∑k=1

(xk)

(∗)︷︸︸︷= x(

∞∑k=1

xk)′

= x

(1

1− x

)=

x

(1− x)2= 2

הראינו∑Dk=0 k

12k = O(1) כי נכון הוכחנו לא שעבר בשיעור ההוכחה: המשך / תיקון

kוגם ≥ k0ש־ כך k0 וקיים c′ קבוע קיים .c = ל־1.5 ובפרט c > 1 לכל k = o(ck)ש־הסכום . k ≤ c′ · 1.5k

D∑k=0

k · 1

2k≤

=O(1)︷ ︸︸ ︷k0∑k=0

k · 1

2k+

D∑k=k0+1

c′(

1.5

2

)k≤ c′

∞∑k=0

(3

4

)k:∑∞k=0 q

k ו־ q < 1 כאשר הנדסית, סדרה של סכום

limk′→∞

k′∑k=0

qk = limk′→∞

qk′+1 − 1

q − 1= limk′→∞

1− qk′+1

1− q=

1

1− q

זה: בסכום בשימוש ולכן

c′∞∑k=0

(3

4

)k= c′

114

= 4c′

בינאריים חיפוש עצי 3.3

הפעולות: מוגדרות עליו ADT הוא בינארי חיפוש עץ

max ־ מקסימום •

min ־ מינימום •

predecessor ־ קודם •

successor ־ עוקב •

insert ־ הכנסה •

delete ־ מחיקה •

18

Page 19: סיכום הרצאות + תירגולים

מתקיים y ∈ T (right(x)) לכל בעץ x קודקוד לכל – בינארי חיפוש עץ תכונת 3.20 הגדרההצאצאים כל כלומר ,key(x) > key(y) מתקיים z ∈ T (left(x)) ולכל key(x) < key(y)

ממנו. קטנים השמאליים הצאצאים וכל ממנו גדולים הקודקוד של הימניים

.key אותו בעלי קודקודים שני בעץ נמצאים בו במקרים מטפלים לא אנו כרגע 3.21 הערה

בינארי בעץ חיפוש 3.3.1

בינארי בעץ חיפוש 7 אלגוריתםTree_Search(x,k):-

if x = null return “not found”else if key(x) = k return xelse if key(x) < k return tree_search(left(x), k)else return tree_search(right(x), k)

העץ. גובה הוא h כאשר O(h) היא הריצה זמן סיבוכיות

ומקסימום מינימום 3.3.2

ומקסימום מינימום 8 אלגוריתםTree_minumum(x):-

while left(x) 6= null

do x ← left(x)

return x

Tree_maximum(x):-

while right(x) 6= null

do x ← left(x)

return x

.O(h) היא אלו אלגוריתמים של הסיבוכיות שגם וכמובן

קודקוד של עוקב 3.3.3

.xמ־ שגודל בעץ ביותר הקטן האיבר 3.22 הגדרה

הוא: x של y העוקב 3.23 טענה

.T (w) של המינימום הוא y אזי ,w ימני, בן xל־ אם .1

הכי קדמון אב y שקיים או בעץ המקסימום הוא xש־ או אזי ימני, בן אין xל־ אם .2העוקב. הוא זה וקדקוד עצמו, x או x של קדמון אב השמאלי ילדו שגם כך x של נמוך

19

Page 20: סיכום הרצאות + תירגולים

T (x) העץ בתת שלא בעץ קודקוד הוא z אם בינארי. חיפוש בעץ קודקוד x נניח 3.24 למה.key(z) 6∈ [min(T (x)),max(T (x))] אזי

קיימים ולכן הקודקוד, אל העץ משורש יחיד מסלול קיים בעץ קודקוד לכל (הלמה) הוכחה::x, z, w ממוקמים לפיהם הבאים המקרים רק

מקרה כל עבור הוכחה :7 איור

העוקב) (טענת הוכחה:

.x של העוקב הוא min(right(x)) = min(w) T (x) שבתוך ברור ,T (x) על נסתכל .1יושבים האלה האיברים כל העזר, מוטענת ?T (x) בתוך שלא העץ איבר שאר עם ומה

.[x,min(w)] לטווח מחוץ

(כי x של עוקב y .T (y) בתוך ולכן max(left(y)) שהוא מקיים x .T (y)ב־ נתבונן .2,T (y)ל־ שמחוץ האיברים כל ולגבי (yמ־ הקטנים האיברים כל מבין המקסימלי x

.[max(left(y)), y] לטווח מחוץ שהם אומרת העזר טענת

כ: עצמו האלגוריתם את לכתוב נוכל ועכשיו

קודקוד של העוקב 9 אלגוריתםTree_successor(x):-

if right(x) 6= null return Tree_min(right(x))else y ← parent(x)while y 6= null and x = right(y)

x← yy ← parent(x)

return y

20

Page 21: סיכום הרצאות + תירגולים

לעץ איבר הכנסת 3.3.4

לעץ איבר הכנסת 10 אלגוריתםTree_insert(T,Z):-

y = parent(x)y ← nullx← root(T )while x 6= null do

y ← xif key(z) < key(x) x← left(x)else x← right(x)

parent(z) ← yif y = null root(T) = zelse if key(z) < key(y) left(y) ← zelse right(y) ← z

איבר מחיקת 3.3.5

פשוטה. מחיקה – ילדים אין xל־ אם .1

.x של לאב הבן את ומחברים x את מוחקים אז אחד, ילד xל־ אם .2

שהוא x של לעקוב העוקב, מטענת אזי ימני, ילד לו יש ובפרט ילדים, שני xל־ אם .3.x במקום אותו ונעביר העוקב את נמחק שמאלי, ילד אין min(right(x))

AVL מסוג בינאריים חיפוש עצי 3.4

.k = O(log n) הוא העץ גובה כלומר מאוזניים, בינאריים חיפוש עצי מטרה:

כי בעץ קודקוד כל עבור מתקיים אזי ,k(T ) הוא תת־עץ של הגובה כאשר :AVL תכונת.|k(left(T ))− l(right(T ))| ≤ 1

.−1 הוא ריק עץ תת של גובה מסוכמה:

לדוגמא: .k בגובה AVL בעץ המינמלי הקודקודים מספר להיות nk נגדיר 3.25 הגדרה.n2 = ו־4 n1 = 2 ,n0 = 1

.nk < nk+1 k לכל כלומר ,kב־ ממש מונוטוני הוא nk 3.26 טענה

k בגובה הוא העצים מתתי שאחד ידוע .k + 1 בגובה AVL עץ הוא T ש־ נניח הוכחה:.k − 1 או k או והשני בדיוק,

בדיוק יש iה־ העץ בתת ,T העץ של מינימלית ובגלל קודקודים, nk לפחות יש iה־ העץ בתתקודקודים. nk + 1 לפחות יש T ב־ ולכן קודקודים, nk

21

Page 22: סיכום הרצאות + תירגולים

נגדיר ואם nk = nk−1 + nk−2 + 1 מתקיים כי לב ל־nkונשים כללית נוסחה להגדיר ננסהכי נקבל אזי Gk = nk + 1

nk + 1 = nk−1 + 1 + nk−2 + 1

Gk = Gk−1 +Gk−2

,1, 1, 2, 3, 5 הם הסדרה איברי כאשר Fk = Fk−1+fk−2 פיבונצ׳י, נוסחת את קיבלנו ובעצםונלכן פיבונצ׳י למספרי ביחס אינדקסים 3 של הסתה יש ולכן Gi = 2, 3, 5 כי לב ונשים

נכתוב

Gk = Fk+3

nk = Fk+3 − 1

φ1,2 Fkכאשר = 1√5

(φk1 − φk2

)היא פיבונאצי למספרי המפורשת הנוסחה מהתרגיל, כזכור

ולכן ,φ1,2 = 1±√

52 כלומר x2 − x− 1 = 0 של הפתרונות הם

1√5

(φk1 + 1

)≥ Fk ≥

1√5

(φk1 − 1

)1√5

(φk+31 + 1)− 1 ≥ nk ≥

1√5

(φk+3

1 − 1)− 1

ולכן nk ≥ cφk1 כי מתקיים גדול מספיק k עבור ולכן,

log nk ≥ k log φ1 + log c

k ≤ log nklog φ1

− log c

log φ1

k = O(log nk)nk≤n

= O(log n)

העץ מימוש 3.4.1

הבאות: הפעולות את ונגדיר העץ, תת גובה את המציין חדש שדה קודקוד לכל נוסיף

נעדכן (כולל) קודקוד ובכל השורש, אל xמ־ נעלה ההכנסה ואחרי ,x איבר נכניס הכנסה:בו שיש Iה־ הקודקוד את ונזהה מתקיימת, AV L שתכונת ונבדוק הגובה, שדה את

הפרה.

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

.LL ברוטציית משתמשים LL מקרה .1

22

Page 23: סיכום הרצאות + תירגולים

LL המקרה את המתאר עץ :8 איור

.LLל־ סימטרי בדיוק הוא RR מקרה עבור .2

LL למקרה להגיע בשביל A על RR פעם הרוטציה, את פעמיים נבצע ,LR מקרה .3.B על LL רוטציית ואז

LR מקרה של ראשון שלב :9 איור

השיטה: של יתרונות

בינארי חיפוש עץ נשאר העץ .1

.AVL של הפרות אין המדובר העץ בתת הקודקודים בכל הרוטציה אחרי .2

23

Page 24: סיכום הרצאות + תירגולים

בהכנסה. הגובה את הגדלנו לא .3

נבצעה ,RL,LR,RR,LL לבצע יש רוטציה איזו נבדוק הוא: כלי באופן האלגוריתם בסה״כ.O(log n) היא האלגוריתם של הסיבוכיות וסיימנו.

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

.O(log(n)) היא הסיבוכיות

בהסתברות רקע 4

להסתברות: כלליות דוגמאות

ל־1000. 2 בערך הוא בפוקר יד בחלוקת (Flush) ״צבע״ לקבת הסיכוי .1

גשם מחר שיהיה הסיכוי .2

הבאות. השנים ב־30 באיסלנד יתפרץ געץ הר שעוד הסיכוי .3

ימים. 3 הנו זו במערת מעבדים נפילות בין האופייני הזמן .4

במחלה יחלה שלא הילד שגם הסיכוי מה כלשהי, גנטית במחלה חולה שהורה בהינתן .5חייו? במהלך זו

עבור למשל אלמנטריים, מאורועות של קבוצה היא Ω נגדיר הסתברות) (מרחב 4.1 הגדרהבפוקר. האפשריות הידיים מספר שהוא Ω =

(525

)לעיל (1) דוגמא

0 ≤ pr(ω) ≤ מתקיים w ∈ Ω שלכל כך pr : Ω→ R הסתברות פונקציית נגדיר בנוסף.∑ω∈Ω pr(ω) = 1 ובנוסף 1

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

.Ω של קבוצה תת הוא מאורע 4.2 הגדרה

.pr(A) =∑ω∈A pr(ω) היא A מאורע של ההסתברות 4.3 הגדרה

בש שש במשחק קוביות שתי הטלת דוגמא:

∀ω ∈ Ω, pr(ω) = כלומר אחידה, ההתפלגות כי ונגדיר האפשריים, הזוגות כמספר Ω = 36. 136

כל לפי ללכת ניתן כי ההנחה (תחת 2 במרחק משחק כלי ״לאכל״ הסיכוי את למצוא נרצה.A = (a, b)|a = 2 ∨ b = 2 ∨ (a = b = 1) הוא המאורע ולכן קובייה),

.pr(A) = 1236 = 1

3 היא זה מאורע של ההסתברות

שווה בהסתברות מטבעות 3 הטלת דוגמא:

(כלומר שווים שכולם כך מטבעות 3 להטלת ההסתברות את למצוא ונרצה Ω = 23 = 8.pr(C) = 1

4 ולכן |C| = 2 ולכן עץ) או פלי פעמים שלוש

האלמנטריים המאורעות כל את מייצג והוא A ע״י מסומן Aל־ משלים מאורע 4.4 הגדרה.A = Ω\A כלומר Aב־ שאינם

.pr(A) = 1− pr(A) הוא המשלים המאורע של ההסתברות

24

Page 25: סיכום הרצאות + תירגולים

.Bב־ וגם Aב־ גם הנמצאים המאורעות כל – A ∩B – מאורעות חיתוך 4.5 הגדרה

באחת לפחות שנמצאים האלמנטריים המאורעות כל – A∪B – מאורעות איחוד 4.6 הגדרה.B או A הקבוצות

ואז ריקה) (קבוצה A ∩ B = ש־∅ כך A,B מאורעות שני הם זרים מאורעות 4.7 הגדרה.pr(A ∪B) = pr(A) + pr(B) כי נקבל

מה השאלה למשל האינטואיצה, את נוגדת לפעמים הסתברות כי לב לשים צריך 4.8 הערהמליון בין הבחירה רק השאלה ואותה ל־2, 1 של בסיכוי מליון 2 או בוודאות דולר מליון עדיף

שנעשה. הבחירה מבחינת זהה היא 1200 בהסתברות מליון 2 לעומת 1

100 בהתסברות דולר

(כלומר זהים הולדת ימי שני יש תלמידים 60 של שבכיתה ההסתברות היומהולדת: פרדוקסמ־99%! גדולה היא השנה) ללא

באורך האפשרויות הרשימות לכל שווה Ω אם ולכן אחיד, באופן מפולגים הולדת שימי נניח.|Ω| = 36560 אז שונים הולדת ימי של 60

כל B = A ואת לפחות שווים תאריכם שני בהן שיש הרשימות כל להיוות A את נגדירשונים. התאריכים כל שבהן הרשימות

pr(B) =365 · 364 · · · 306

36560=

365!

305!36560

pr(B) < 1%

pr(A) > 99%

(או קיום על המידע בהינתן כלשהו לאירוע ההסתברות היא מותנת הסתברות 4.9 הגדרהלו. הקודמים האירועים של קיום) אי

w אלמנטרי מאורע עבור .pr(A|B) ע״י מסומנת B בהינתן A שיתקיים ההסתברותכי נקבל אחידה היא שההתפלגות ובהנחה

pr(w|B) =

1|Ω||B||Ω|

=1

|B|

כלשהי התפלגות ועבור

pr(w|B) =w∈B

pr(w)

pr(B)

pr(w|B) =w 6∈B

0

⇒ pr(w|B) =pr(w ∩B)

pr(B)

נקבל A כללי מאורע עבור ולכן

pr(A|B) =∑

w∈A∩B

pr(w)

pr(B)=pr(A ∩B)

pr(B)

25

Page 26: סיכום הרצאות + תירגולים

קוביות. שתי להטלת בחזרה דוגמא:

.( 13 הוא יקרא שזה הסיכוי (כאשר 1 יצאה הראשונה שהקוביה שראינו נניח

כי pr(A|B) = 13 = 2

6 זה ובמקרה הקודמת, בדוגמא שהוגדר כפי A למאורע הסיכוי מה. 13 ולכן 2 או 1 שתהיה הנוספת הקוביה של ההסתברות את לחשב רק נותר

.pr(A|B) = pr(A) מתקיים אם״ם Bב־ תלוי לא A מאורע 4.10 הגדרה

.Aב־ תלוי לא B אז Bב־ תלוי לא A המאורע אם 4.11 טענה

מתקיים ההנחה לפי הוכחה:

pr(A|B) =pr(A ∩B)

pr(B)= pr(A)

⇒ pr(A ∩B) = pr(A)pr(B)

נקבל: A בהינתן Bל־ ההסתברות את ההגדרה לפי נכתוב אם ולכן

pr(B|A) =pr(A ∩B)

pr(A)=pr(A)pr(B)

pr(A)= pr(B)

סימטרי. יחס הוא הזה היחס ולכן

.pr(A ∩B) = pr(A)pr(B) מתקיים אם״ם תלויים בלתי הם מאורעות שני 4.12 מסקנה

מקרי משתנה 4.0.2

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

המחברת את שיקבלו התלמידים מספר הוא Xו־ כלשהי אקראית פרמוטציה היא π אםמספר הוא שלהם המחברת את שיקבלו התלמידים מספר π פרמוטציה עבור אזי שלהם,

כי נקבל ולכן בפרמוטציה, השבת נקודות

1, 2, 3 → 3

1, 3, 2 → 1

2, 3, 1 → 0

2, 1, 3 → 1

3, 1, 2 → 0

3, 2, 1 → 1

⇒ pr(X = 0) =1

3, pr(X = 1) =

1

2, pr(X = 3) =

1

6

נציב אותה X : Ω→ R פונקציה הוא הסתברות מרחב על ממשי מקרי משתנה 4.13 הגדרה.prב־

26

Page 27: סיכום הרצאות + תירגולים

להתפלגויות הממוצע של הכללה היא (Expectation) מקרי משתנה של תוחלת 4.14 הגדרהאחידות: לא

E(x) =∑ω∈Ω

X(ω) · pr(ω) =∑

i∈p|x(ω)=p

pr(X = i) · i

.E(X+Y ) = E(X) +E(Y ) כי מתקיים ולכ לינארי אופוראטור היא התוכלת 4.15 טענה

הוכחה:

E(X + Y ) =∑ω∈Ω

E(X + Y )(w) · pr(ω)

=∑ω∈Ω

(X(ω) + Y (ω))pr(ω)

=∑ω∈Ω

X(ω)pr(ω +∑ω∈Ω

Y (ω)pr(ω)

= E(X) + E(Y )

קידודים – מידע דחיסת 5

(1952) (Huffman Code) הופמן קוד ־ טקסטואלי מידע 5.1

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

a = 00000

b = 00001

c = 00010...

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

אף הוא אותו כל של שהקידוד כך האותיות, של קידוד הוא תחיליות חסר קוד 5.1 הגדרהאחרת. אות של הקידוד התחלת לא פעם

לקידוד: כמילון אותנו הישמש בעץ נעזר

27

Page 28: סיכום הרצאות + תירגולים

מילון המייצג עץ :10 איור

היא: האותיות התפלגות כי נניח אם ולכן

0 – 45% – a •

101 – 13% – b •

100 – 12% – c •

111 – 16% – d •

1101 – 9% – e •

1100 – 5% – f •

הוא הטקסט לייצוג הדרוש הביטים מספר ולכן

(1 · 45% + 3 · 13% + 3 · 12% + . . .)n

היא T הקוד עלות כללי, ובאופן

L(T ) =∑c∈C

f(c)l(c)

הדרושים הביטים מספר הוא l(c)ו האות, שכיחות הוא f(c) האותיות, קבוצת היא C כאשרהאות. לייצוג

בקוד בעוד ,dlog |C|e · n הפשוט לקוד (בניגוד L(T ) · n – n באורך טקסט עבור ולכן,הקוד .2.24n רק דרושים זה בקוד אותיות, 6 של למקרה ביטים 3n דרושים כי נקבל הפשוט

למעלה. מלמטה (העץ) המילון את לבנות צריך כאשר הופמן, קוד נקרא הנ״ל

28

Page 29: סיכום הרצאות + תירגולים

מימוש 5.1.1

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

הקוד: את לכתוב

הופמן קוד 11 אלגוריתםHuffman(C):-

n← cQ←Build_min_heap(C)for i = 1 to n-1

allocate a new node Zleft(Z) ← extract_min(Q)right(Z)← extract_min(Q)key(Z) ← key(left(Z)) + key(right(z))insert(Q,Z)

return extract_min(Q)

.n log n היא הנ״ל האלגוריתם של הסיבוכיות כאשר

הופמן קוד יעילות 5.1.2

חסר קוד המתאר עץ הוא T ש־ ונניח שכיחויות) עם אותיות (אוסף C נתון 5.2 טענהתחיליות חסר קוד המתאר אחר עץ הוא W הופמן. מקידוד שנוצר C עבור תחיליותכלומר יעיל, הכי הוא הופמן קוד כי להוכיח נרצה .C עבור הופמן) של דווקא (לאו כלשהו

.L(T ) ≤ L(W )

.f(a) < f(b)ש־ נניח הוכחה:

אז f(a) < f(b) אם a, b לכל אזי אופטימלי, תחיליות ללא קוד הוא W אם א׳: טענה.l(a) ≥ l(b) כי מתקיים

ו־ f(a) < f(b)ש־ כך a, b קיימים ולכן מתקיים, לא התנאי כי בשלילה נניח הוכחה:ולכן ,a, b מוחלפים שבו ,W ′ אחר עץ נייצר .l(a) < l(b)

L(W ) =∑c6=a,b

f(c)l(c) + f(a)l(a) + f(b)l(b)

L(W ′) =∑c6=ab

f(c)l(c) + f(a)l(b) + f(b)l(a)

L(W ′)− L(W ) = f(a)l(b) + f(b)l(a)− f(a)l(a)− f(b)l(b)

=

<0︷ ︸︸ ︷(f(a)− f(b))

>0︷ ︸︸ ︷(l(b)− l(a)) < 0

מתקיימת. העזר טענת ולכן ,W של לאופטימליות לסתירה הגענו

29

Page 30: סיכום הרצאות + תירגולים

עם האותיות ששתי כך W אופטמילי עץ קיים ,|C| ≥ 2 כאשר ,C א״ב עבור ב׳: טענהאותו להן (יש ש״אחיות״ בעץ התחתונה ברמה מופיעות ביותר, הנמוכה השכיחות

הורה).

א׳), (מטענה ארוך הכי l(x) ולכן המינימלית, השכיחות עם האות היא xש־ נניח הוכחה:להיות חייב ולכן אופטמלי W שכן ,y אחות יש xל־ בעץ. התחתונה ברמה x כלומרטובה עלות עם עץ ולקבל אותו לקצר ונוכל ,1 דרגה עם קודקוד יש (אחרת מלא עץ

יותר).הבאה האותר שהיא ,z אזי , אחרי הבא המינימלית השכיחות עם האות אינה y אםונקבל zו־ y את להחליף נולכ ולכן א׳) (מטענה בעץ התחתונה ברמה היא גם ,x אחרי

עלות. אותה עם W ′

ברור. המצב |C| = 2 במקרה המשפט. את להוכיח כדי באינגוקציה להשתמש נוכל כעת.n+ 1 עבור ונוכיח ,n עבור אופטמלי תחילות חסר קוד הוא שהופמן נניח

אותיות, n+1 עבור הופמן קוד את T ב־ ונסמן מהופמן, טוב יותר קוד לנו שיש בשלילה נניח.L(W ) < L(T ) ולכן אותיות, אותן עבור האופטימלי הקוד את W וב־

אותן בעל הוא C ′ כאשר ,C ′ על הופעמן קוד בעזרת הנוצר העץ בתור ,T ב־′ נסמןמהנחת .f(z) = f(x) + f(y) שקיבלה zב־ שהוחלפו x, yמ־ חוץ Cב־ ושכיחויות אותיות

.L(T ′) ≤ L(W ′) האינדוקציה

L(T ) =∑c∈C

f(c)l(c) =∑c 6=x,y

f(c)l(c) + f(x)

LT ′ (z)+1︷ ︸︸ ︷lT (x) +f(y)

LT ′ (z)+1︷ ︸︸ ︷lT (y)

=∑c6=x,y

f(c)l(c) +

f(z)︷ ︸︸ ︷(f(x) + f(y))LT ′(z) +

f(z)︷ ︸︸ ︷f(x) + f(y)

= L(T ′) + f(z)

⇒ L(T ) = L(T ′) + f(z)

L(W ) = L(W ′) + f(z)

L(T ′) ≤ L(W ′)

L(T ′) + f(z) ≤ L(W ′) + f(z)

L(T ) ≤ L(W )

מהופמן. (ממש) טוב היותר הקוד הוא W ש־ לכך בסתירה

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

אקראית וסיבוכיות אקראיות 6

אקראי מהיר מיון 6.1

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

30

Page 31: סיכום הרצאות + תירגולים

הסיבוכיות אז Θ(n) היא החלוקה של שהסיבוכיות מכיוון ולכן במערך, אחריו נמצאיםהיא הכללית

T (n) = T (m− 1) + T (n−m) + Θ(n)

הציר. איבר של הסופי המיקום הוא m כאשרביותר), הגרוע (המקרה T (n) = Θ(n2) כי נקבל אז בקצוות נופל תמיד m כאשר כי ראינובתרגיל ביותר). הטוב (המקרה T (n) = Θ (n log n) נקבל אז באמצע תמיד נופל m וכאשרניתן הקלטים, כל פני על בממוצע כי וציינו ,Ω (n log n) = T (n) = O(n2) כי ראינו 3בעובדה להשתמש נרצה ולכן זה), בקורס זו עובדה נוכיח לא (אבל Θ(n log n) כי להוכיח

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

הריצה. זמן את(m1,m2,m3, . . .) האלגוריתם: מצעדי אחד אכל החלוקהבכל נפלה איפה ־ המדגם מרחב

אחיד. באופן האלגוריתם פעולת את המגדירה

E(T (n)) =∑nm=1

1n [E(T (m− 1)) + E (T (n−m))] + Θ(n) הריצה: זמן תוחלת

נגדיר אז מקריים, משתנים שני X,Y ש־ נניח (כללית) 6.1 טענה

E(X|Y = y) =∑x∈X

pr (X = x|Y = y)

ולכן

E(X) =∑y

E(X|Y = y)Pr(Y = y)

(כתרגיל) הוכחה:

התוחלת מלינאריות ולכן החלוקה) (מיקום Y = Mו־ X = T (n) עבור זו, בטענה נשתמשכי נקבל

E(T (n)) =

n∑m=1

E [T (m− 1) + T (n−m) + Θ(n)]1

n

ולכן

E (T (n)) =2

n

n−1∑m=0

E (T (m)) + Θ (n)

2

n

n−1∑m=0

E (T (m)) + C2n ≤ E (T (n)) ≤ 2

n

n−1∑m=0

E (T (m)) + C1n

ונגדיר

U(n) =2

n

n−1∑m=0

U(m) + C · n

U(1) = C

31

Page 32: סיכום הרצאות + תירגולים

זאת כי לב ונשים ,UC2(n) ≤ E(T (n)) ≤ UC1(n) כי נקבל C = C1, C2 עבור כאשרשכזו? משוואה פותרים איך מלאה. היסטוריה עם שלמה רקורסיה משוואת

(1) nU(n) = 2

n−1∑m=0

U(m) + Cn2

(2) (n+ 1)U(n+ 1) = 2

n∑m=0

U(m) + C (n+ 1)2

(2)− (1)⇒ (n+ 1)U (n+ 1)− nU(n) = 2U(n) + C (2n+ 1)

...

לעיל) המעברים את להשלים (צריךהוא העליון החסם ולכן C ≤ 2n+1

n+1 C ≤ 2C כי לב ונשים האיטרציות, בשיטת נפתור

U(n+ 1) ≤ n+ 2

n+ 1U(n) + 2C

≤ n+ 2

n+ 1

(n+ 1

nU(n− 1) + 2C

)+ 2C

≤ n+ 2

n+ 1

(n+ 1

nU

(n

n− 1U(n− 2) + 2C

)+ 2C

)+ 2C

...

≤ n+ 2

2U(1) +

n+ 2

32C + . . .+

n+ 2

n2C +

n+ 2

n+ 12C +

n+ 2

n+ 22C

U(n+ 1) ≤ (n+ 2) 2c

Harmonic Serie︷ ︸︸ ︷n+2∑i=2

1

i

.Θ(log n) = H(n) =∑n−1i=1

1i 6.2 טענה

ולכן n = 2m − 1 עבור רק נוכיח הוכחה:

1︸︷︷︸1

+

<1︷ ︸︸ ︷1

2+

1

3︸ ︷︷ ︸2

+

<4· 14 =1︷ ︸︸ ︷1

4+

1

5+

1

6+

1

7︸ ︷︷ ︸3

+ . . .

ולכן Skב־ kה־ הבלוק של הסכום את ונסמן איברים 2k בו ויהיו 12k ב־ יתחיל kה־ הבלוק

ולכן 12k+1 צ־ גדולים כול איברים 2k כי Sk ≥ 1

2 ובנוסך Sk ≤ 1

1

2log (n+ 1) =

m

2≤ H(n) ≤ m = log (n+ 1)

הסיבוכיות היא E(T (n)) = Θ (n log n) ולכן ,U(n1) = Θ (n log n) כי קיבלנו בסה״כ ולכןהאקראי. מהיר מיון של האקראית

32

Page 33: סיכום הרצאות + תירגולים

pr(X ≥ אז E(X) = µ נסמן אם ,X שליף לא מקרי משתנה בהינתן (מרקוב) 6.3 משפט. λµ) ≤ 1

λ

הוכחה:

µ = E(x) =∑x∈X

pr(X = x)x =∑x<λµ

pr (X = x)x+∑x≥λµ

pr (X = x)x

∑x≥λµ

pr (X = x)

λµ

1

λ≥ pr (X ≥ λµ)

דדד

Hash Table – גיבוב טבלאות 7

הכנסה חיפוש היאפשר נתונים טיפוס להגדיר נרצה ולכן ,ADTכ־ מילון להגדיר נרצהומידע. מפתח של צמדים של יעיל ומחיקה

דרישות:

.O(1) יקח חיפוש .1

אז המפתחות, לאכסון בזיכרון המקום הוא Sו־ המפתחות, מספר הוא N אם .2.S = O(N) שיתקיים נרצה

הפתרון למימוש כיוונים 7.1

רנדומלי גיבוב ראשון: שלב 7.1.1

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

נגדיר בקלט i מפתח לכל .j מפתח יושב שבה הרשימה אורך תוחלת את לחשב נרצה

ברשימה האיברים מספר ולכן Zij =

1 i and j in the same position0 Otherwise

מקרי משתנה

ולכן∑∀i Zij הוא j של

E

(∑∀i

Zij

)=

∑∀i

E (Zij)

E(Zij) = pr(Zij = 1) · 1 + pr (Zij = 0) · 0 =1

m

⇒ E

(∑∀i

Zij

)=

N

m

33

Page 34: סיכום הרצאות + תירגולים

נבחר ואם .m = Ω (N) לבחור חייבים קצרה, תהיה שרשרת שכל רוצים אם ולכן,.α = N

m = O(1)ש־ אקראי גיבוב של במקרה נקבל m = Θ (N)

המערך. של העומס״ ״פקטור נקרא α = Nm 7.1 הגדרה

גיבוב פונקציית שני: שלב 7.1.2

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

המערך.

גיבוב פונקציית :11 איור

שני מצד התנאי, את מספקת זו פונקציה אחד מצד .h(k) = k mod m החלוקה: שיטתh(k1) = כי יתקיים קלטים תתי הרבה עבור כי המפתחות, של בקלט תלויה מאוד היאספרות, 3 באותן המסתיימים המפתחות כל אז m = 3 עבור למשל ,h(k2), k1 6= k2

.k ·mn מהצורה שהם המפתחות כל או

ספציפי ובאופן קבוע, ממשי מספר A כאשר hA(k) = dm (Ak − bAkc)e ההכפלה: שיטתכל ולמשל אליה, הנשלח בקלט תלויה זו שיטה גם הזהב. יחס כלומר ,A = 1+

√5

2אפס. אל הנשלחים A−1nk מהצרה המפתחות

מפתחות N של אוף יש h : U → 1 . . .m פונקציה לכל אזי |U | > mN אם 7.2 טענהבטבלה. מקום לאותו שולחת hש־

מפתחות. N + 1 שולחת h הפונקציה אליו m מספר קיים היונים שובך עקרון לפי הוכחה:

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

34

Page 35: סיכום הרצאות + תירגולים

גיבוב פונקציות של אוניברסלית משפחה 7.2

גיבוב, פונקציית של האוניברסלית המשפחה תקרא H = h : U → 1 . . .m 7.3 הגדרה.prh(h(x) = h(y)) ≤ 1

m אז x 6= y כאשר x, y ∈ U שלכל מתקיים אם

לכל (המחוברת הרשימה אורך הוא K אם אז שכזו, אוניברסלית משפחה H אם 7.4 טענה.E (K) ≤ 1 + N

m אז במערך) תא

מתקיים x, y ∈ U לכל המציינים מקריים משתנים נגדיר כמקדם, הוכחה:

Cxy =

1 h(x) = h(y)

0 h(x) 6= h(y)

ולכן

E(Kx) = E

(∑y

Cxy

)=∑y

E (Cxy) = 1 +∑y 6=x

E (Cxy)

≤ 1 +∑y 6=x

E (Cxy = 1) ≤ 1 +N − 1

m≤ 1 +

N

m

ונסמן: m |U | ≤ ראשוני p יהי דוגמא:

Zp = 0, . . . , p− 1Z∗p = 1, . . . , p− 1

:b ∈ Zp, a ∈ Z∗p עבור ונגדיר

ha,b (k) = ((a · k + b) mod p) mod mKm =

ha,b : a ∈ Z∗p , b ∈ Zp

הרלוונטיות. הקבוצות מתוך a, b להגריל רק נדרש גיבוב, פונקציית להגדיר בשביל ולכן

גיבוב) פוקנציות על ה־23.05 של השיעור את להשלים (צריך

גרפים 8

שיכול הצלעות, אוסף הוא Eו־ הקודקודים אוסף הוא V כאשר G = (V,E) זוג הוא גרףכיוונים). בשני צלע כל לנוע אפשר כל (כלומר מכוון לא או מכוון להיות

גרפים של ייצוג 8.1

הקודקודים רשימת את נשמר קודקוד לכל כלומר – שכנויות רשימת בעזרת ייצוג •צלע: באמצעות ישירות אליו המחוברים

v1 → v2 → . . .→ vk

v2 → ...

...

35

Page 36: סיכום הרצאות + תירגולים

.O (|V |+ |E|) היא הגרף של מקום הסיבוכיות ולכן

i, jה־ בתא כאשר |V | × |V | בגודל מטריצה כלומר – שכנויות מטריצת בעזרת ייצוג •.O(|V |2

)הוא שלה המקום סיבוכיות .vjל־ vi בין צלע קיימת אם 1 יש

ייצוג? בכל להשתמש כדי מתי

שכנויות. במטריצת בבד״כ נשתמש צפוף, בגרף כלומר ,|E| = Θ(|V |2

)אם .1

שכנויות. ברשימת נשתמש אז צלול, גרף כלומר ,|E| = O (|V |) אם .2

גרפים לסריקת אלגוריתמים 8.2

למציאת: אלגוריתמים נרצה

נקודות. שתי בין קצר הכי המסלול .1

מבוך. מתוך ליציאה מסלול מציאת .2

BFS – Breadth First Search – לרוחב חיפוש 8.3

קודקוד של ראשונה מדרגה השכנים כל על נעבור הראשון, שבשלב כך הגרף על נעבורהלאה. וכן שנייה מדרגה השכנים על נעבור השני בשלב ההתחלה,

BFS 12 אלגוריתםBFS(G,S):-

forall v in V do dist(v) = ∞dist(s) ← 0previous(S) = nilQ← Build_Queue(s)while Q not empty

u←dequeue(Q)forall w in (u,w) ∈ E

if dist(w) == ∞enqueue(Q, w)dist(w) = dist(u)+1previous(w) = u

36

Page 37: סיכום הרצאות + תירגולים

לדוגמא גרף :12 איור

מקיימים בו האברים לכל dist ערכי כל שבו תור להיות d ערך עם מדרגתי תור נגדירבעלי הם בתור האיברים שאר וכל dist(w) = d אז בתור, הראשון האיבר הוא w שאם כך

כך. ונשאר d+ ל־1 עובר שהוא עד dל־ השווה dist ערך

בצלעות). ביותר הקצר המסלול (ארוך בגרף האמיתי המרחק בתור δ (s, w) נגדיר 8.1 הגדרה

קודקודים: k הוצאת לאחר 8.2 טענה

.d ערך עם מדרגתי התור עבורו d קיים .1

שווה כלומר נכון, dist ערך בתור, שעדיין או מהתור שהוצאנו הקודקודים לכל כמוכן .2.δ (s, w)ל־

.d+ 1 ≤ יהיה עבורם δ וכן dist =∞ לתור נכנסו לא שעוד הקודקודים כך .3

באינדוקציה נוכיח הוכחה:

:k = 1 עבור בסיס:

.d = 1 ערך עם מתקיימת .1

.δ את מכיל באמת dist שכניוי וכל s עבור .2

שכנים אינם שכן 2 ≤ שלהם δ וגם S הוצאת אחרי dist =∞ באמת השאר כל .3ההתחלה). (קודקוד S של

37

Page 38: סיכום הרצאות + תירגולים

.k + 1 עבור ונוכיח k עבור מתקיימות הטענות כי נניח האינדוקציה: שלב

כך: נראה שהתור או כלומר ,dist = d+ 1 עם הם שהכנסנו הקודקודים כל א׳: טענה

d, . . . , d, d+ 1, . . . , d+ 1

כך: נראה שהוא או

d+ 1, . . . , d+ 1

מדרגתי. מקרה ובכללקודקוד וכן האינדוקציה, מהנחת מקודם שיצאו הקודקודים לכל נכון ב׳: טענהבתור שהיו הקודקודים לכל וכן האינדוקציה, מהנחת k + ה־1 בשלב שהוצאנוdist = עם לתור k+1ה־ באיטרציה שנכנסו החדשים הקודקודים לגבי מקודם,שכנים שהם בגלל אבל ,d+ מ־1 שווה) (או גדול שלהם δשה־ מ־ג׳ ידוע .d+ 1dל־ השווה שלו distל־ שווה ש־δשלו לגבי שידוע הוצאנו שכרגע הקודקוד של.d+ 1 בדיוק שהלם δה־ ולכ d+ 1 באורך שלהם מסלול קיים ולכן ב׳ מטענהδשה־ וצ״ל (ברור), dist = ∞ לתור, נכנסו לא שעוד הקודקודים כל לגבי ג׳: טענה

החדש). המדרגתי (הערך d+ ל־1 שווה) (או גדול שלהםג׳. מטענה נכונה הטענה אזי השתנה, לא המדרגתי הערך אם

שלהם δשה־ להראות ונרצה ,.d → d + 1 אזי השתנה, כן המדרגתי הערך אםכן, אם שכן ,d+ 1 להיות יכול לא אבל ,d+ 1 ≤ ש־ ג׳ מטענה ויודעים d+ 2 ≤בתור נמצא או בתור עבר כבר w ג׳ ומטענה ,d = δש־ כך w שכן קודקוד ישכל בתור. גרע נמצא שהוא ייתכן לא וגם בתור, עבור הוא כי ייתכן לא כרגע.להיות יכול לא ולכן שלו, השכנים כל את הכניס כבר בתור עבר שכבר קודקוד

בתור. עבר כבר v שהקודקוד

O (M)+∑v∈V O(Neighbors) ולכן לתור אחת פעם נכנס קודקוד כל היותר לכל סיבוכיות:

.O (|V |) +O (|E|) היא הסיבוכיות ולכן

(״דייקסטרה״) Dijkstra אלגוריתם 8.3.1

הצלע. אורך בתור l(u,w) ונגדיר ממושקל, בגרף קצרים משקלים מציאת

Dijkstra 13 אלגוריתםDijkstra(G,S):-

∀u ∈ V, dist(u)←∞, previous(u)← nildist(s)=0Q← build_min_heap(V) sorted by distwhile Q not empty

v← extract_min(Q)∀w, (u,w) ∈ E if dist(w) > dist(u)+l(u,w)

dist(w) ← dist(u) + l(u,w)prev(w) = udecrease_key(Q,w)

38

Page 39: סיכום הרצאות + תירגולים

מהערמה. שיצאו הקודקודים כל קבוצת היא R (נכונות) 8.3 טענה

מתקיים v 6∈ R קודקוד ולכל w ∈ R כאשר dist(w) ≤ dש־ כך d ערך קיים .1.dist(v) ≥ d

.Rב־ הנכון המסלול אורך את מכיל dist ערך שלהם, והשכנים Rב־ הקודקודים לכל .2

O(|V |+ |E| log |V |) סיבוכיות:

עם גרפים על עובדים לא Bellman-Ford, Dikstra, BFS של האלגוריתמים 8.4 הערהאשר שליליות בצלעות להסתיים יכול יותר, ארוך שמתחיל מסלול גם כי שליליים, משקולות

ההתחלתי. האורך את יקזזו

DFS – Depth First Search ־ לעומק חיפוש 8.4

להמשיך, לאן עוד לו אין אשר עד רמות שיותר כמה מתקדם זה אלגוריתם ,BFSמ־ בשונהאותם. נסמן קודקודים אותם על לחזור לא מנת ועל

:Explore על מבוסס האלגוריתם

Explore 14 אלגוריתםExplore(G, v):-

visit(v)=1previsit(v)∀ω, (v, ω) ∈ E

if visited(ω)=0 then explore(ω)

postvisit(v)

כך z קודקוד שיש נניח .vמ־ מסלול אלהם שיש הקודקודים לכל יגיע זה אלגוריתם.v → v1 → v2 → . . .→ vk → zש־

ע״י DFS אלגוריתם את נבנה ולכן

DFS 15 אלגוריתםDFS(G):-

∀v ∈ V visted(v)=0∀v ∈ V if visited(v)==0 then explore(v)

.O (|V |+ |E|) היא האלגוריתם של והסיבוכיו

החיפוש. כדי תוך המתקבלים (המסלולים) העצים כל ־ DFS חורשת 8.5 הגדרה

מסלול שיש כך קודקודים של מקסימלית קבוצה – מכוון לא בגרף קשירות רכיב 8.6 הגדרהבתוכה. קודקודים שני כל בין

39

Page 40: סיכום הרצאות + תירגולים

לכל לכתוב נרצה ובנוסף ,ccNumב־ זה גודל ונסמן הקשירות, רכיבי את למספר נרצהמכוון: לא בגרף הקשירות רכיבי את מוצא הבא האגוריתם שלו. הקשירות רכיב מי קודקוד

CC 16 אלגוריתםCC(G):-

ccNum = 0DFS(G) ← ccNum + נוסיף DFSב־DFSב־ Exploreל־ קריאה לכל +

בגרך קודקודים של מקסימלית קבוצה ע״י חזק קשירות רכיב נגדיר מכוון, בגרף 8.7 הגדרה.xל־ yמ־ וגם yל־ xמ־ מסלול יש בקבוצה, x, y קודקודים שני שלכל כל מכוון

טופולוגי מיון 8.4.1

.u אחרי מופיע v (u, v) ∈ E צלע שלכל כל הקודקדוים על סדר

Directed גם נקרא מכוון מעגלים ללא (גרף טופולוגי מיון אין אזי מעגל יש אם 8.8 מסקנה(Acyclic Graph - DAG

הוא viש־ ונניח v0 → v1 → . . .→ vk → v0 אזי טופולוגי, מיון ויש מעגל שיש נניח הוכחה:,vj−1 כולל הטופולוגי במיון מופיעיםאחריו הקודקודים כל הטופולוגי. במיון Iה־ הקודקוד

.vjל־ vj−1מ־ במעגל צלע יש אבל

DAG של טופולוגי למיון אלגוריתם 8.4.2

כאשר clockה־ ערך את קודקוד לכל נשמור ובנוסף clock של שדה DFS לאלגוריתם נוסיףכלומר לאחרונה, ממנוו ויצאנו לראשונה אליו נכנס

DFSב־ מקודקוד ויציאה כניסה 17 אלגוריתםprevisit(v):-

pre(v)←clockclock++]

postvisit(v):-

post(v)←clockclock++

להיות: יכולה (u, v) ∈ E הצלע u, v קודקודים שני לכל

בעץ צלעות .1

קדימה צלעות .2

אחורה צלעות .3

40

Page 41: סיכום הרצאות + תירגולים

.Cross Edge סוג .4

הצלע: סוג מה אינטרוול לכל להגדיר נוכל כן על

.4 מקרה זהו אז להפך) (או interval(u) < interval(v) אם .1

.3 מקרה זהו אז interval(u) ⊂ interval(v) אם .2

.2 או 1 מקרה זהו אז interval(v) ⊂ interval(u) אם .3

נמיין מכאן ולאחר טופולוגי, מיון נותן יורד בסדר postה־ אז DFS את נריץ אם 8.9 טענהספירה. מיון בעזרת

.post(u) > post(v) כי מתקיים (u, v) צלע שלכל צ״ל הוכחה:ואכן interval(v) ⊂ interval(u) במקרה אנחנו אז ,v לפני uל־ DFSב־ שהדענו נניח

.post(v) < post(u).interval(v) < interval(u) במקרה אנו אז DAG שזה בגלל אז ,u לפני vל־ הגענו נניח

SCC אלגוריתם 8.4.3

.DAG הוא הקשירות רכיבי גרף 8.10 טענה

קשירות ברכיב קודקוד של הוא המקסימלי post אז ,v על DFS נרציץ אם 8.11 טענההקשירות. רכיבי גרף של מקור שהוא

C בתוך המקסימלי postה־ אזי C ל־′ SCCל־ C לצלע SCCמ־ צלע יש אם 8.12 טענה.C ב־′ המקסימלי postמה־ גדול

הפוכות. G של הצלעות כל שבו הגרף הוא GR 8.13 הגדרה

מיון בעזרת post של יורד סדר לפי הקודקודים את נמיין .GR על DFS הרץ אלגוריתם:הזה. הסדר לפי לקודקודים שקורא CC (G)ל־ נקרא ואז ספירה

(Minimum Spanning Trees) מינימליים פורשים עצים 9

מינמלית. בעלות W : E → Rtו־ G = (V,E) מכוון לא גרף על נסתכל

T = (u, v) , u, v ∈ V זוגות שקבוצת ונגיד מעגלים, ללא קשיר גרף הוא עץ 9.1 הגדרה.V הם שקודקודיו עץ T ו־ T ⊆ E אם Gל־ פורש עץ הן

ω (T ) = מתקיים פורש עץ T ′ לכל אם מינימלי פורש עץ יקרא T פורש עץ 9.2 הגדרה.∑ω (e) ≤ ω (T ′)

צלעות. n− 1 יש קודקודים n על בעץ 9.3 טענה

41

Page 42: סיכום הרצאות + תירגולים

כזו צלע כל מהעץ. צעד בכל ונסוף קשירות, רכיבי n שהם הקודקודים nמ־ נתחיל הוכחה:(כי קיים קשירות רכיב בתוך להיות יכול לא שכל באחד, הקשירות רכיבי מספר את מפחית

מעגל). תיצור

עץ. הוא אזי צלעות, n− 1 יש קודקודים n בין קשיר בגרף אם (הפוכה) 9.4 טענה

שיהפוך עד צלעות נוריד מעגל, בו יש שאם כך עץ שאינו יתכן אז קשיר, שהעץ נתון הוכחה:הורדנו לא כלומר צלעות n− 1 בעץ יש הקודמת מהטענה לעץ. כלומר מעגלים, ללא לקשיר

צלע. אף

MSTל־ קרוסקל אלגוריתם 9.1

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

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

המינימלי. הפורש לעץ כלומר ביותר, הטוב לפתרון זה ובמקרה טוב, לפתרון תביא

ש־ כך MST שהוא T שקיים מקיים x שלב שבכל באינדוקציה נראה (נכונות) הוכחה:.X ⊆ T

החתך. בתכונות נעזר הנכונות, את להוכיח בשביל

הצלעות הן בחתך והצלעות זרות, קבוצות לשתי הקודקודים של חלוקה הוא חתך חתך:הקבוצות. שתי של הקודקדים בין המקשרות

(חתך בחתך צלע e אם .MST הוא T כאשר X ⊆ T ש־ כך X ⊆ Eש־ נניח החתך: תכונתמינמלית eו־ בחתך, צלע אינה Xב־ צלע ואף כה), עד שנמצאו הקשירות רכיבי בין.X ∪ e ⊆ T ש־′ כך MST שהוא T ′ קיים X ∪ e אזי בחתך המשקל) (מבחינת

.MST T ו־ X ⊆ T ונתון בחתך, צלע אף אין Xל־V1, V2 נתון החתך: תכונת הוכחת.x ∪ e ⊆ T ש־′ כך MST T ′ למצוא ורוצים e את Xל־ הוספנו

Tוסיימנו. להיות T ′ את נבחר אזי ,T ב־ נמצא eש־ נניחv1 ∈ כאשר e = (v1, v2) כי ונניח בחתך, צלע eו־ ,T ב־ נמצא לא eש־ נניחT ב־ קשורים היו v1, v2 (כי e′ הצלע על נסתכל מעגל. יש T ∪ eוב־ V1, v2 ∈ V2

ונבנה בחתך) מינימלית e) ω (e) ≤ ω (e′) בחירתינו ולפי החתך), צידי משני והםכך: T ′ את עכשיו

צלעות, n − 1 יש T ′ = T ∪ e \ e′ב־ .T ∪ e \ e′ש־ כך e את T ל־ נוסיףפורש. עץ T ′ ולכן במעגל e′ צלע הורדנו כי קשיר והוא

ω (T ′) = ω (T ) + ω (e)− ω (e′)

MST T ל־ בסתירה ω (T ′) < ω (T ) אז שכן יתכן לא ω (e) < ω (e′)ש־ מכיוון.MST הוא ולכן T כמו משקל באותו T ′ ולכן ω (e) = ω (e′) ולכן

42

Page 43: סיכום הרצאות + תירגולים

ומניחים X ⊆ E צלעות, k אחרי הוא: האינגו׳ציה צעד הנכונות, להוכחת בחזרה עתהמעגל). סוגרת שלא מינימלית צלע e (כאשר X ∪ eו־ X ⊆ T ש־

k + ה־1 בשלב מוסיך שקרוסקל eש־ נניח .MST הוא T ′ כאשר X ∪ e′ ⊆ T ′ צ״ליווצר אז כי קשירות רכיב באותו להיות יכול (לא G2ל־ G1 קשירות רכיב בין מחברתולכן מתקיימת החתך תכונת ולכן השאר, וכל G1 בין להיות החתך את נבחר ואז מעגל),הנותרות, הצלעות כל בין מינימלית היא כי בחתך? מינימלית e מדוע .X ∪ e′ ⊆ T ′

שבחתך. הצלעות עבור ובפרט

אבל ,O (E) היא נתון בגרף מעגל שמציאת הבעיה עוד נותרה הנכונות, הוכחת אחרי עתה.Union-Find חדש, נתונים מבנה עם נעבוד כך ולשם ,O ב־(1) זאת לעשות רוצים היינו אנו

Union-Find אלגוריתם 9.2

בפעולות: יתמוך ושהמבנה זרות בקבוצות לטיפול נתונים מבנה נרצה

Makeset(x) •

הנציג מציאת ־ find(x) •

.x של הקבוצות איחוד Union(x) •

הקבוצה, של הנציג הוא העץ שורש כאשר קבוצות, המיצגים עצים על בנוי הנ״ל הנתונים מבנהבעץ. שלו להורה x קודקוד של המצביע בתור π (x) ונסמן

Makeset 18 אלגוריתםMakeset(x):-

π(x)← xrank(x)← 0

Find 19 אלגוריתםFind(x):-

while x 6= π (x) do x← π (x)return x

43

Page 44: סיכום הרצאות + תירגולים

Union 20 אלגוריתםUnion(x, y):-

rx ← find(x)ry ← find(y)if rx == ry returnif rank(rx) > rank(ry) then

π (ry)← rx

else

π (rx)← ry

if rank(rx) == rank (ry) then rank(ry)← rank(ry) +1

גדולה עצמו) הוא (כולל שלו העץ בתת הקדוקדוים מספר ,k דרגה עם לקודקוד 9.6 טענה.2kל־ שווה או

ברור. k = 0 בו האינדו׳ציה בססי הוכחה:כך ידי על kל־ עלתה הדרגה ,k דרגה עם בקודקוד ונתבונן k − 1 דרגה עבור שנכון נניחהנחת לפי .k = 1 מדרגת קודקודים שניצגיהם קבוצות) שתי (או קודקודים שני שאוחדוומתקיים 2k הקודקודים≥ מספר ולכן קודקודים. 2k−1 לפחות יש כזה עץ בכל האינדוקציה,

.k ≤ log (# vertices) ≤ log n

קרוסקל 21 אלגוריתםkruskal(G, w):-

∀v ∈ V,makeset (v)QSort(E by w)X ← ∅∀ (u, v) ∈ Eif find(v) 6= find(u) then X ← X ∪(u, v) , Union(u, v)

לחשב ובשביל ,PathCompressionsב־ שימוש ע״י יותר אף זה אלגוריתם לייעל ניתן אבלחישוב כלומר ,Amortized Complexityב־ להיעזר צריך זה, אלגוריתם של היעילות את

זמן. לאורך פעולות של רב מספר של העלות

הסופי המבחן על 10

נסחאות! דף אין

למבחן החומר 10.1

המבחן לפני שישי או חמישי ביום חזרה תרגול יהיה

44

Page 45: סיכום הרצאות + תירגולים

בשיעור. שהיה מה וכל התרגולים כל ,(11 מספר (כולל התרגילים כל ־ למבחן החומרהאחרונים. בפרקים טעויות הרבה שם יש סאשה, של מהסיכומים להיעזר

ספר). (אחלה מהאתר שמקושר בספר להיעזר

המבחן מבנה 10.2

יותר רק האמצע מבחן של כמו יהיה המבנהו״קלות״ קטנות שאלות של 5 מתוך ראשונה שאלות 4

הסעיפים את לפתור (המלצה סעיפים מספר ובעלות גדולות שאלות של 3 מתוך שאלות 2לקשה) מהקל והולכים השני על אחד בנויים הם כי הסדר לפי

II חלק

תרגולים

אסימפטוטים סימונים – 01.03.2010 – 1 תרגול 11

f, g : N→ R+ חיוביות בפונקציות מדובר ריצה, זמן המתארות פונקציות על כשנדבר תמיד.

ש־ כך 0 < n,C קבועים קיימים O(g(n))אם ש־f(n)היא נגדיר – גדול״ O״ – 11.1 הגדרה. n > n0 f(n)לכל ≤ C · g(n)

לדוגמא:

מתקיים c = 1019, n0 = 1 עבור כי f(n) = O(n) מתקיים אז f(n) = 1019 אם •. 0 ≤ 1019 ≤ 1019n

מתקיים c = 2, n0 = 1 עבור כי f(n) = O(n) מתקיים אזי f(n) = 2n אם •. 0 ≤ 2n ≤ 2n

אזי n > c שאם מתקיים c > 0 לכל כי f(n) 6= O(n2) אזי f(n) = n2 אם •. n2 > c · n

ש־ כך 0 < C,n0 קבועים קיימים אם Ω(g(n)) היא f(n)ש־ נגדיר – ״Ω״ – 11.2 הגדרה.n ≥ n0 לכל f(n) ≥ C · g(n)

לדוגמא:

1019 ≥ ואז c = 1, n0 = 1 כאשר f(n) = Ω(1) מתקיים אזי f(n) = 1019 אם •. 1 ≥ 0

n0 = ו־1 c = 12 עבור 2n = Ω(n) וגם f(n) = Ω(2n) מתקיים אזי f(n) = n אם •

המקרים). שני (עבור

ל־״O״. דומה באופן f(n) 6= Ω(n2) אזי f(n) = n אם •

.Θ(g(n)) שהיא נגדיר אז Ω(g(n)) וגם O(g(n)) גם היא f(n) אם – ״Θ״ – 11.3 הגדרה

45

Page 46: סיכום הרצאות + תירגולים

n > n0 שלכל כך n0 ∈ N קיים 0 < ε ∈ R לכל אם״ם limn→∞ f(n) = L 11.4 הגדרה. |f(n)− L| < ε מתקיים

.( f(n) = sinn (למשל n→∞ כאשר מתכנסת פונקציה/סדרה כל לא 11.5 הערה

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

,(g(n)ל־ ביחס (זניחה o(g(n)) היא f(n)ש־ נגדיר – קטן״ o״ – 11.7 הגדרה

. limn→∞

∣∣∣ f(n)g(n)

∣∣∣ = 0 אם

האסימפטוטים בסימונים לשימוש כללים 11.0.1

f(n) = O(g(n)), g(n) = לדוגמא: טרנסזיטיביים. הם האסימפטוטים הסימונים כל •. O(h(n))⇒ f(n) = O(h(n))

אינטואיציה): רק זוהי ממש! לא (אך כמו מתנהגים האסימפטוטים הסימונים •

f(n) = O(g(n))→ f(n) ≤ g(n) –

f(n) = Ω(g(n))→ f(n) ≥ g(n) –

f(n) = Θ(g(n))→ f(n) ' g(n) –

f(n) = o(g(n))→ f(n) < g(n) –

f(n) = o(g(n))⇒ f(n) = O(g(n)) •

f(n) = Θ(g(n)) ⇔ למשל האסימפטוטי. הסימון על משפיע לא בקבוע הכפלה •. f(n) = Θ(c · g(n))

f(n) = Θ(g(n)+h(n)), g(n) = o(h(n))⇒ כלומר: זניחות, מפונקציות להתעלם ניתן •. f(n) = Θ(h(n))

n1 ∈ Nו־ c1, c2 > 0 קבועים קיימים אזי f(n) = Θ(g(n)+h(n))ש־ מכיוון הוכחה:שמתקיים: כך

∀n > n!, c1 · (g(n) + h(n)) ≤ f(n) ≤ c2 · (g(n) + h(n))

גם: מתקיים אז שלילי אי הוא g(n)ש־ ומכיוון

∀n > n1, c1 · h(n) ≤ f(n) ≤ c2 · (g(n) + h(n))

שמתקיים: כך n2 ∈ N קבוע קיים אז g(n) = o(h(n))ש־ מכיוון

∀n > n2, 0 ≤g(n)

h(n)≤ 1

2

n > n0 = maxn1, n2 ניקח אם ולכן

מהמצגת! ההוכחה את להשלים נדרש

46

Page 47: סיכום הרצאות + תירגולים

f(n) = פורמלי: באופן או פולינומי, מגידול גדול (אקספוננציאלי) מעריכי גידול •. c > ו־1 כלשהם קבועים הם dו־ c כאשר nd, g(n) = cn ⇒ f(n) = o(g(n))

הבאה: בלמה נעזר הטענה, את להוכיח בשביל הוכחה:

הוכחה: .c2 log(n) = o(nc1) שמתקיים כך c1, c2 > 0 קבועים קיימים 11.8 למהלופיטל: כלל באמצעות

limn→∞

c2 log(n)

nc1

L’Hopital︷︸︸︷= lim

n→∞

(c2 log(n))′

(nc1)′

= limn→∞

c2n ln(2)

c1nc1−1= 0

כי לב נשים העיקרית) הטענה הוכחת (המשך הוכחה:

nd = clogc(n)·d = cd

log(c)log(n)

.cc0 log(n) = co(n) ולכן c0 log(n) = o(n) כי נובע מהלמה ולכן c0 = dlog(c) יהי

כתרגיל. מושארת cc0 log(n) = o(cn) כי הטענה הוכחת ע״י ההוכחה השלמת

f(n) = (log(n))c, g(n) = פורמלי: באופן או לוגריתמי, מגידול גדול פולינומי גידול •קבועים. c, d > 0 כאשר nd ⇒ f(n) = o(g(n))

כי (תרגיל) להוכיח ניתן ולכן log(n) = o(ndc ) כי נבוע הקודמת מהלמה הוכחה:

. (log(n))c = o(nd)

מיון אלגורתמי – 09.03.2010 – 2 תרגול 12

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

Counting Sort – ספירה מיון 12.0.2

לינארית. בסיבוכיות המערך את למיין נוכל במערך, איבר כל של הערכים טווח ידוע כאשר

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

העזר. במערך המופיעים האינדקסים לפי

47

Page 48: סיכום הרצאות + תירגולים

ספירה מיון 22 אלגוריתםCounting Sort(A¸B¸n¸k)

Init C[k]for i=1 to n

C[A[i]]++

For j=2 to k

C[j]=C[j]+C[j-1]

For j=n down to 1

B[C[A[j]]]=A[j]C[A[j]]--

k כאשר Θ(n+ k) היא הסיבוכיות כי נמצא הנ״ל, האלגוריתם סיבוכיות את נחשב אםקבוע. הוא

הוא האלו האיברים שלי האינדקסים אם אז i < j וגם A[i] = A[j] אם – יציב מיון.m < l ויתקיים ישמר הסדר אז בהתאמה, m, l

Radix Sort מיון 12.0.3

:(r כלשהו (בבסיס ספרות k היותר לכל ע״י לייצוג הניתן שלם מספר הם במערך איבר כל אםבבסיס כלומר בשימוש, שלא הספרות לייצוג באפסים נשתמש (כאשר A[j] = d1d2 . . . drהאיברים כל את נמיין .( 002 נכתוב ספרות 3 עם 2 המספר את לייצג נרצה אם [הרגיל] 10ביותר. לגבוהה עד (האחדות) ביותר הנמוכה מהספרה נלך כאשר אחרת ספירה לפי פעם כל

Radix Sort 23 אלגוריתםRadixSort(A,k):-

for i=1 to k

CountingSort(A) on digit i

קבועים). הם kו־ r (כי Θ(n) היא האלגוריתם של הסיבוכיות

Bucket Sort מיון 12.0.4

. [0, 1) בקטע שווה בצורה מפולגים המערך איברי כלבתוך איבר כל את ונמקם \([0, 0.1), [0.1, 0.2), . . .) שווים לחלקים [0, 1) הטווח חילוק

מקושרת. רשימה מכיל אשר הקטע

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

48

Page 49: סיכום הרצאות + תירגולים

16.03.2010 – 3 תרגול 13

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

אותן. לציין אשתדל אני במצגת,

49