1 / 51

תרגול 7

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

tress
Télécharger la présentation

תרגול 7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. עץ B

  3. עץ B

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  18. מחיקה מעץ B

  19. מחיקה מעץ B

  20. מחיקה מעץ B

  21. מחיקה מעץ B

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

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

  24. שאלה 2 • מחיקת G יש מספיק מפתחות בקודקוד. G אינו נמצא, לכן נבצע את 4. D B H M A C K R W Z G

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

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

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

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

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

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

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

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

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

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

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

  36. 12 29 52 7 9 2 15 22 31 43 56 69 12 29 52 7 9 15 22 31 43 56 69 עוד דוגמאות למחיקות • t=3 • Delete(2) (case 3)

  37. 12 29 7 9 15 22 31 43 56 69 12 29 52 7 9 15 22 31 43 56 69 עוד דוגמאות למחיקות • t=3 • Delete(52) (case (2c))

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

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

  40. שאלה 3 פתרון: ראשית נחשב את גבהי העצים בזמן O(h(T1)+h(T2)) מקרה 1:h(T1)=h(T2) • נייצר שורש חדש עם הערך k • T1 יהיה הבן השמאלי וT2 הבן הימני • כעת נבצע מחיקה של k נשים לב: מכיוון שt=2, תמיד מתקיימת ההגבלה של כמות מפתחות מינימלית. k T1 T2 היכן עלולה להיווצר בעיה באלגוריתם הנ"ל עבור t>2? האם ניתן להתגבר על הבעיה?

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

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

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

  44. שאלה 4 • נתון שT הינו עץ B עם (105+1) מפתחות, וכן שמספר המפתחות המקסימלי בקודקוד הינו 17. לכמה קריאות לכל היותר נדרש על מנת למצוא מפתח נתון כלשהו? פתרון 1, המשך: מספר המפתחות בעץ = מספר המפתחות בשורש + מספר המפתחות בעומק 1 + מספר המפתחות בעומק 2 + ... + מספר המפתחות בעומק h(T). לכן h(T) ≤ 4. כלומר, יש לכל היותר 5 קריאות (כולל השורש) מהזיכרון. מספר מפתחות מינימלי בשורש מספר המפתחות המינימלי בקודקוד מספר הקודקודים המינימלי ברמה

  45. שאלה 4 • נתון שT הינו עץ B עם (105+1) מפתחות, וכן שמספר המפתחות המקסימלי בקודקוד הינו 17. לכמה קריאות לכל היותר נדרש על מנת למצוא מפתח נתון כלשהו? פתרון 2: נשתמש בנוסחה שנלמדה בכיתה שאלה נוספת (אם יש זמן): מהו מספר הרמות המינימלי של העץ?

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

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

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

  49. הסתברות – שאלה 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 שווה. האם האלגוריתם חייב לעצור? מה ההסתברות שהאלגוריתם הנ"ל לא עוצר? מהו זמן העצירה בתוחלת (Expected running time) של האלגוריתם? תשובה: E[X]=1/2pq, אם נספר כל זוג הטלות כפעולה אחת.

  50. הסתברות – שאלה 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?

More Related