המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

תרגול 7 B-Trees Probability intro152 26.01.2020.

מצגות קשורות


מצגת בנושא: "תרגול 7 B-Trees Probability intro152 26.01.2020."— תמליל מצגת:

1 תרגול 7 B-Trees Probability intro152

2 מוטיבציה מבנה הזיכרון: מהיר איטי intro152

3 עץ B - תכונות t = the minimal rank of a B-Tree (דרגת המינימום). Each node except the root, has at least t-1 keys and at most 2t-1 keys All the leaves are in the same level (= the height of the tree, h) If X is an inner node with nx keys (K1,…Knx) in ascending order, then X has nx+1 children (C1,…Cnx+1) If ki is the i'th key in X, then all keys of Ci are smaller than ki, and all keys of Ci+1 are larger than ki Each node x has the following fields: nx - the number of keys in X leaf(X) - true if x is a leaf and false otherwise intro152

4 עץ B תמיד דוחפים את העץ כלפי מעלה intro152

5 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z קודקוד מלא (3=2t-1 קודקודים) – צריך לפצל A B C intro152

6 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z קודקוד מלא (4=2t קודקודים) – צריך לפצל A A B C B C intro152

7 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z מסלול הכנסת קודקוד חדש B A C D intro152

8 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z מסלול הכנסת קודקוד חדש B קודקוד מלא – צריך לפצל A C D G intro152

9 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z מסלול הכנסת קודקוד חדש B קודקוד מלא – צריך לפצל D A C G intro152

10 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z מסלול הכנסת קודקוד חדש B D A C G H intro152

11 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z מסלול הכנסת קודקוד חדש קודקוד מלא – צריך לפצל B D A C G H K intro152

12 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z מסלול הכנסת קודקוד חדש קודקוד מלא – צריך לפצל B D H A C G G H K K intro152

13 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z קודקוד מלא – צריך לפצל מסלול הכנסת קודקוד חדש B D H A C G K M intro152

14 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z קודקוד מלא – צריך לפצל מסלול הכנסת קודקוד חדש D A C B G K M H intro152

15 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z קודקוד מלא – צריך לפצל מסלול הכנסת קודקוד חדש D A C B H K K M R M G R intro152

16 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z מסלול הכנסת קודקוד חדש D A C B H M K G R W intro152

17 שאלה 1 הכניסו את האיברים הבאים לפי הסדר לעץ B עם t=2 (העץ ריק בהתחלה): A, B, C, D, G, H, K, M, R, W, Z D A C B H M K G R W Z intro152

18 שאלה 2 כעת, מחקו מהעץ את G, ולאחר מכן את M D A C B H M K G R W Z
intro152

19 מחיקה מעץ B Delete(k) (Intuition)
Go down from the root to a node containing k while making manipulations on the tree to ensure that the current node X (except the root node) on the search path has at least t keys (the ancestor of X may have only t-1 keys after the manipulations on X). Thus, when the Delete function gets to a node containing k, the node will have at least t keys. intro152

20 מחיקה מעץ B Delete (Node X, Key k)
Delete(k) Algorithm Delete (Node X, Key k) If node X has less than t keys (t-1 keys): a. if node X has a sibling Y with t keys: lend one key from it (key k goes to the father node of X and Y, replaces key k' such that X and Y are its child pointers and the key k' is added to X). b. node X has both siblings with only t-1 keys: merge X and one of its siblings Y, while adding the key k from the father node as a median key (X and Y are child pointers of k), into new node W, remove k and pointers to X and Y from the father node, add pointer to the newly created node W to the father node of X and Y. intro152

21 מחיקה מעץ B Delete (Node X, Key k)
Delete(k) Algorithm Delete (Node X, Key k) 2. if k is in X and X is an internal node: a. if the child node Y that precedes k in X has at least t keys: -k'=Max(Y) //find maximal key k' in subtree rooted in Y -Delete(Y, k') -replace k with k' in X b. symmetrically, if the child node Z that follows k in X has at least t keys: -k'=Min(Z) //find minimal key k' in subtree rooted in Z -Delete(Z, k') c. both Y and Z have t-1 keys -merge Y, k and Z into one node W -delete k from X and pointers to Y and Z and add instead pointer to W -Delete(W,k) intro152

22 מחיקה מעץ B Delete (Node X, Key k)
Delete(k) Algorithm Delete (Node X, Key k) 3. else if k is in X and X is a leaf node: -delete k from X -return 4. else // k is not in X -find child node Yi+1 of X such that keyi(X)<k<keyi+1(X) // the pointer between keyi(X) and keyi+1(X) points to Yi+1 -Delete (Yi+1, k) intro152

23 שאלה 2 כעת, מחקו מהעץ את G, ולאחר מכן את M D A C B H M K G R W Z
intro152

24 שאלה 2 מחיקת G D A C B H M K G R W Z
זהו השורש, לכן אין חשיבות לגודלו (אם זה לא היה השורש היינו צריכים לבצע את 1 כיוון שיש פחות מt=2 מפתחות). G לא נמצא כאן, לכן נבצע את 4. D A C B H M K G R W Z intro152

25 שאלה 2 מחיקת G D A C B H M K G R W Z יש מספיק מפתחות בקודקוד.
intro152

26 שאלה 2 מחיקת G D A C B H M K G R W Z
יש פחות מt=2 מפתחות. כיוון שאי-אפשר להלוות מהאחים השכנים, נבצע איחוד עם האח הימני. A C B H M K G R W Z intro152

27 שאלה 2 מחיקת G D A C B H M K G R W Z
יש פחות מt=2 מפתחות. כיוון שאי-אפשר להלוות מהאחים השכנים, נבצע איחוד עם האח הימני. A C B H M K G R W Z intro152

28 שאלה 2 מחיקת G D A C B M G H K R W Z
intro152

29 שאלה 2 מחיקת G D A C B M H K R W Z intro152

30 שאלה 2 מחיקת M D A C B M H K R W Z זהו השורש, לכן אין חשיבות לגודלו.
G לא נמצא כאן, לכן נבצע את 4. D A C B M H K R W Z intro152

31 שאלה 2 מחיקת M D A C B M H K R W Z
יש פחות מt=2 מפתחות. כיוון שאי-אפשר להלוות מהאחים השכנים, נבצע איחוד עם האח השמאלי. D A C B M H K R W Z intro152

32 שאלה 2 מחיקת M D B M A C H K R W Z
יש פחות מt=2 מפתחות. כיוון שאי-אפשר להלוות מהאחים השכנים, נבצע איחוד עם האח השמאלי. D B M A C H K R W Z intro152

33 שאלה 2 מחיקת M B D M A C H K R W Z
intro152

34 שאלה 2 מחיקת M M נמצא בקודקוד, וזהו קודקוד פנימי. לכן נבצע 2. כיוון שבבן השמאלי (של M) יש מספיק מפתחות, נבצע את (2a) (תמיד ננסה קודם לקחת מצד שמאל) B D כעת ממשיכים באופן רקורסיבי למחיקת K מכאן A C H K R W Z intro152

35 שאלה 2 מחיקת M(כעת, מחיקת K) B D K A C H K R W Z
יש בקודקוד מספיק מפתחות. זהו עלה ו K נמצא, לכן נבצע את 3 (מחיקה פשוטה) B D K A C H K R W Z intro152

36 שאלה 2 מחיקת M(כעת, מחיקת K) B D K A C H R W Z intro152

37 עוד דוגמאות למחיקות t=3 Delete(2) (case 3) מחיקה פשוטה 56 2 31 7 43 9
52 12 29 15 22 69 56 31 7 43 9 52 12 29 15 22 69 intro152

38 עוד דוגמאות למחיקות t=3 Delete(52) (case (2c)) איחוד הבנים 56 31 7 43
9 52 12 29 15 22 69 69 31 7 43 9 56 12 29 15 22 intro152

39 עוד דוגמאות למחיקות t=3 Delete(15) (case (1a) and then case 3) 69 31 7
43 9 56 12 29 15 22 12 31 7 9 15 22 29 43 56 69 intro152

40 שאלה 3 נתונים שני עצי B, T1 וT2, שניהם עם t=2. נתון בנוסף שכל הערכים בעץ T1 קטנים ממש מכל הערכים בעץ T2. הציעו אלגוריתם יעיל לאיחוד שני העצים לעץ B יחיד. intro152

41 שאלה 3 פתרון: ראשית נחשב את גבהי העצים בזמן O(h(T1)+h(T2))
k← min T 2 + max T נייצר שורש חדש עם הערך k T1 יהיה הבן השמאלי וT2 הבן הימני כעת נבצע מחיקה של k k T1 T2 intro152

42 שאלה 3 פתרון: ראשית נחשב את גבהי העצים בזמן O(h(T1)+h(T2))
מקרה 2: h(T1)>h(T2) ( המקרה h(T1)<h(T2) באופן סימטרי) k← min T 2 + max T נרד בעץ T1 ימינה, תוך כדי פיצול קודקודים מלאים (כמו בהכנסה) עד לקודקוד y בגובה h(T2)+1 כיוון שפיצלנו, הקודקוד y אינו מלא. נוסיף לו את k, וT2 יהיה הבן הימני החדש של y. T1 y1 y2 T2 intro152

43 שאלה 3 פתרון: ראשית נחשב את גבהי העצים בזמן O(h(T1)+h(T2))
מקרה 2: h(T1)>h(T2) ( המקרה h(T1)<h(T2) באופן סימטרי) k← min T 2 + max T נרד בעץ T1 ימינה, תוך כדי פיצול קודקודים מלאים (כמו בהכנסה) עד לקודקוד y בגובה h(T2)+1 כיוון שפיצלנו, הקודקוד y אינו מלא. נוסיף לו את k, וT2 יהיה הבן הימני החדש של y. כעת נבצע מחיקה של k T1 y1 y2 k T2 intro152

44 שאלה 4 נתון שT הינו עץ B עם (105+1) מפתחות, וכן שמספר המפתחות המקסימלי בקודקוד הינו 17. לכמה קריאות לכל היותר נדרש על מנת למצוא מפתח נתון כלשהו? פתרון 1: מספר המפתחות המקסימלי בקודוקוד הוא 17 ⇐ 17=2t-1 ⇐ t=9. לכל קודקוד, פרט אולי לשורש, יש לפחות t-1)) מפתחות, ולפחות t בנים. מספר הקודקודים המינימלי בעומק 1 הינו 2 (לשורש לפחות 2 בנים) מספר הקודקודים המינימלי בעומק 2 הינו 2*t מספר הקודקודים המינימלי בעומק 3 הינו 2*t*t ... מספר הקודקודים המינימלי בעומק h(T) הינו 2*th(T)-1 מספר המפתחות בעץ = מספר המפתחות בשורש + מספר המפתחות בעומק 1 + מספר המפתחות בעומק מספר המפתחות בעומק h(T). intro152

45 שאלה 4 נתון שT הינו עץ B עם (105+1) מפתחות, וכן שמספר המפתחות המקסימלי בקודקוד הינו 17. לכמה קריאות לכל היותר נדרש על מנת למצוא מפתח נתון כלשהו? פתרון 1, המשך: מספר המפתחות בעץ = מספר המפתחות בשורש + מספר המפתחות בעומק 1 + מספר המפתחות בעומק מספר המפתחות בעומק h(T). ≥1+8∗2+8∗2∗9+8∗2∗9∗9+…+8∗2∗ 9 ℎ 𝑇 −1 =1+8∗2∗ 1+9+…+ 9 ℎ 𝑇 −1 =1+8∗2∗ 9 ℎ 𝑇 −1 9−1 =1+2∗ (9 ℎ 𝑇 −1) ⇒ℎ 𝑇 ≤ log 9 (50001)≈4.92 לכן h(T) ≤ 4. כלומר, יש לכל היותר 5 קריאות (כולל השורש) מהזיכרון. מספר מפתחות מינימלי בשורש מספר המפתחות המינימלי בקודקוד מספר הקודקודים המינימלי ברמה intro152

46 שאלה 4 שאלה נוספת (אם יש זמן): מהו מספר הרמות המינימלי של העץ?
נתון שT הינו עץ B עם (105+1) מפתחות, וכן שמספר המפתחות המקסימלי בקודקוד הינו 17. לכמה קריאות לכל היותר נדרש על מנת למצוא מפתח נתון כלשהו? פתרון 2: נשתמש בנוסחה שנלמדה בכיתה ℎ 𝑇 ≤ log 𝑡 𝑛+1 2 = log ≈4.92 שאלה נוספת (אם יש זמן): מהו מספר הרמות המינימלי של העץ? intro152

47 שאלה 1 - הסתברות את עונה על מבחן סיבירי עם 30 שאלות, בו לכל שאלה 5 תשובות אפשריות. הציון של המבחן מחושב ע"י הנוסחה: Number of answers right – ¼(Number of answers wrong) על 20 שאלות את בטוחה שענית נכון ואילו ב10 השאלות שנותרו הצלחת לעשות אלימינציה ל2 תשובות שבטוח היו שגויות (בכל שאלה). אם ניחשת באופן רנדומלי מ3 התשובות שנותרו בכל שאלה, מהי תוחלת הציון שתקבלי (Expected grade)? פתרון: 20∗ − 1 4 ∗ 2 3 ∗10=21.666 intro152

48 שאלה 2 - הסתברות יש לכם n קוביות, לכל קוביה n פנים. מהו הסיכוי שבהטלה של כל n הקוביות תקבלו 1,2,3,…,n ? (כלומר בדיוק קוביה אחת תיפול על 1, בדיוק קוביה אחת על 2 וכו') פתרון: ישנן סה"כ nn תוצאות אפשריות. מתוכן, ב n! מהאפשרויות כל קוביה מראה מספר שונה. זהומספר הפרמוטציות האפשריות. לכן ההסתברות הינה 𝑛! 𝑛 𝑛 לאן שואף ביטוי זה כאשר n שואף לאינסוף? intro152

49 הסתברות – שאלה 3 הציעו אלגוריתם (יעיל) לביצוע פרמוטציה רנדומלית על מערך נתון. פתרון: RandomeShuffle(A) n=length(A) for i=1 to n A[i] ← A[Random(i, n)] האלגוריתם מבצע פרמוטציה רנדומלית (כלומר, לכל אחת מ n! הפרמוטציות האפשריות יש הסתברות של 1 𝑛! שהאלגוריתם ייצר אותה.) שאלה: מהו זמן הריצה של האלגוריתם הנ"ל? תשובה: O(n) (בהנחה שRandom(i,n) מתבצע בO(1)) intro152

50 הסתברות – שאלה 4 הטילו את המטבע פעמיים
נתונה פרוצדורה flip_bias() המבצעת הטלת מטבע עם הטיה – כלומר ישנה הסתברות של p ל1 והסתברות (1-p) ל0. אולם, p אינו ידוע. הציעו כיצד ניתן להשתמש בflip_bias() כדי ליצור אלגוריתם flip_fair() המבצע הטלת מטבע הוגנת, כלומר נקבל 1 או 0 בהסברות שווה. (ללא שימוש באקראיות פרט לflip_bias()) פתרון (של פון נוימן): הטילו את המטבע פעמיים אם יצא פעמיים 0 או פעמיים 1 חזרו על שלב 1 אם יצא קודם 0 ואח"כ 1 החזירו 0 אם יצא קודם 1 ואח"כ 0 החזירו 1 הסבר: ההסתברות שבשתי הטלות יצא קודם 0 ואח"כ 1 היא (1-p)p, וההסתברות שבשתי הטלות יצא קודם 1 ואח"כ 0 היא p(1-p). כלומר ההסתברות שהאלגוריתם יחזיר 0 ו1 שווה. האם האלגוריתם חייב לעצור? מה ההסתברות שהאלגוריתם הנ"ל לא עוצר? intro152

51 הסתברות – שאלה 5 Let A[1,…,n] be an array of n distinct numbers. If i < j and A[i] > A[j] then the pair (i, j) is called an inversion of A. Suppose that the elements of A are a random permutation of (1,2,..,n). What is the expected number of inversions in A? intro152

52 הסתברות – שאלה 5 Solution:
Let 𝑋 𝑖𝑗 be an indicator random variable, for each 1≤𝑖, 𝑗≤𝑛, 𝑖<𝑗 . 𝑋 𝑖𝑗 = 1, 𝑖𝑓 𝐴 𝑖 >𝐴 𝑗 , 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 Define 𝑋= 𝑖=1 𝑛−1 𝑗=𝑖+1 𝑛 𝑋 𝑖𝑗 X is a random variable counting the number of inversions in A. Hence, the expected number of inversions of A is: 𝐸[𝑋] 𝐸 𝑋 =𝐸 𝑖=1 𝑛−1 𝑗=𝑖+1 𝑛 𝑋 𝑖𝑗 = 𝑖=1 𝑛−1 𝑗=𝑖+1 𝑛 𝐸 𝑋 𝑖𝑗 = 𝑖=1 𝑛−1 𝑗=𝑖+1 𝑛 1 2 We have Pr[ 𝑋 𝑖𝑗 =1]= 1 2 , because given two distinct random numbers from the {1,…n}, the probability that the first is bigger than the second is (Number of all pairs: n(n-1), number of the pairs ai, aj s.t. ai>aj is: n(n-1)/2 ). 𝐸 𝑋 = 𝑖=1 𝑛−1 𝑗=𝑖+1 𝑛 = 𝑛 = 𝑛 (𝑛−1) 4 [Note, we expect half of all the pairs to be inversions, i.e. Θ(n^2) pairs.] Question to think about at home: Given an array of integers A suggest an algorithm which finds in O(n log n) worst case (not expected) time the number of inversions in A. intro152


הורד את "ppt "תרגול 7 B-Trees Probability intro152 26.01.2020.

מצגות קשורות


מודעות Google