1 of 114

Data Structures – Recitation 7

Shay Golan

1

2 of 114

ערימות בינאריות

2

3 of 114

פעולות נדרשות�תור עדיפויות - Priority Queue

  • נרצה מבנה נתונים התומך בפעולות:
    • (בנייה)
    • הכנסה עם עדיפות
    • הוצאת מינימום
    • החזרת המינימום ללא הוצאה (״הצצה״)

3

4 of 114

תכונת הערימה

  •  

4

5 of 114

תכונת הערימה

5

80

25

20

30

22

5

12

11

6 of 114

ערימה בינארית

  • ערימה בינארית היא עץ בינארי כמעט שלם המקיים את תכונת הערימה.
  • תזכורת: עץ בינארי כמעט שלם הוא עץ בינארי בו כל הרמות מלאות, פרט לרמה האחרונה שכל קודקודיה נמצאים ברצף מהמיקום השמאלי ביותר עד לנקודה כלשהי.

6

7 of 114

ערימה בינארית

7

80

45

20

8

15

12

5

70

21

33

7

90

8 of 114

מימוש ערימה בינארית

  • מכיוון שהעץ כמעט שלם – ניתן לייצוג במערך, ללא אחסון מצביעים. המעבר מאב לבן או מבן לאב נעשה בחישוב אריתמטי.

8

9 of 114

מימוש ערימה בינארית

9

80

45

20

8

15

12

5

70

21

33

7

90

90

80

70

20

45

33

21

5

12

8

15

7

1

2

3

4

5

6

7

8

9

10

11

12

10 of 114

Heapify

  • פעולת Heapify, מקבלת עץ בינארי ״כמעט ערימה״ – ההפרה היחידה של תכונת הערימה יכולה להיות ביחס בין המפתח בשורש למפתחות בבניו.
  • התיקון: באמצעות ״חילחול״ הערך לרמתו הנכונה.

10

11 of 114

Heapify

11

80

45

20

8

15

12

5

70

21

33

7

30

12 of 114

Heapify

12

30

45

20

8

15

12

5

70

21

33

7

80

13 of 114

Heapify

13

45

30

20

8

15

12

5

70

21

33

7

80

14 of 114

Heapify

14

45

30

20

8

15

12

5

70

21

33

7

80

15 of 114

הגדלת ערך (ובדומה גם הכנסה)

  • ״פעפוע״ כלפי מעלה.

15

16 of 114

הגדלת ערך

16

45

30

20

8

15

12

5

70

21

33

7

80

17 of 114

הגדלת ערך

17

45

30

20

8

15

50

5

70

21

33

7

80

18 of 114

הגדלת ערך

18

45

30

50

8

15

20

5

70

21

33

7

80

19 of 114

הגדלת ערך

19

50

30

45

8

15

20

5

70

21

33

7

80

20 of 114

הגדלת ערך

20

50

30

45

8

15

20

5

70

21

33

7

80

21 of 114

פעולות על ערימה בינארית

  •  

21

22 of 114

ערימת min-max

22

23 of 114

שאלה - ערימת MinMax

  •  

23

24 of 114

תשובה

  • נבנה ערימת מינימום וערימת מקסימום.
  • כל איבר יכנס לשתי הערימות, ויחזיק מצביעים דו כיווניים בין העותקים של האיבר בשתי הערימות.
  • בעת הוצאת מינימום/מקסימום – הוצאה מהערימה התואמת קלה. הוצאה מהערימה השנייה תיעשה בעזרת שימוש במצביע.

24

25 of 114

תשובה

25

50

30

45

8

15

20

5

70

21

33

7

80

7

8

21

20

15

30

45

33

80

50

70

5

ערמת מקסימום

ערמת מינימום

26 of 114

ערימת חציון

26

27 of 114

שאלה – ערימת חציון

  •  

27

28 of 114

תשובה – ערימת חציון

  •  

28

29 of 114

תשובה ערימת חציון

  •  

29

30 of 114

מימוש הפעולות – ערימת חציון

  •  

30

31 of 114

מימוש הפעולות – ערימת חציון

  •  

31

32 of 114

תשובה

32

12

2

7

10

15

22

27

35

45

20

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

25

5

5

מספר האיברים בכל ערימה

33 of 114

תשובה

33

12

2

7

10

15

22

27

35

45

20

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

25

5

6

מספר האיברים בכל ערימה

34 of 114

תשובה

34

12

2

7

10

15

22

27

35

25

20

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

45

5

6

מספר האיברים בכל ערימה

35 of 114

תשובה

35

12

2

7

10

15

22

27

35

25

20

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

45

5

6

21

מספר האיברים בכל ערימה

36 of 114

תשובה

36

12

2

7

10

15

22

27

35

25

20

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

45

5

6

21

מספר האיברים בכל ערימה

37 of 114

תשובה

37

12

2

7

10

15

22

27

35

25

45

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

20

5

5

21

מספר האיברים בכל ערימה

38 of 114

תשובה

38

12

2

7

10

15

45

27

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

20

5

21

5

מספר האיברים בכל ערימה

39 of 114

תשובה

39

12

2

7

10

15

27

45

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

20

5

21

5

מספר האיברים בכל ערימה

40 of 114

תשובה

40

12

2

7

10

15

27

45

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

20

6

21

5

מספר האיברים בכל ערימה

41 of 114

תשובה

41

12

2

7

20

15

27

45

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

10

6

21

5

מספר האיברים בכל ערימה

42 of 114

תשובה

42

12

2

7

15

20

27

45

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

10

6

21

5

מספר האיברים בכל ערימה

43 of 114

תשובה

43

12

2

7

15

20

27

45

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

10

6

6

21

מספר האיברים בכל ערימה

44 of 114

תשובה

44

12

2

7

15

20

27

45

35

21

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

10

6

6

25

מספר האיברים בכל ערימה

45 of 114

תשובה

45

12

2

7

15

20

27

45

35

22

21

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

10

6

6

25

מספר האיברים בכל ערימה

46 of 114

מימוש הפעולות – ערימת חציון

  •  

46

47 of 114

הוצאת חציון

47

12

2

7

15

20

27

45

35

22

21

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

10

6

6

25

מספר האיברים בכל ערימה

48 of 114

הוצאת חציון

48

12

2

7

15

20

27

45

35

22

25

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

10

6

5

מספר האיברים בכל ערימה

49 of 114

הוצאת חציון

49

12

2

7

15

20

27

45

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

10

6

5

מספר האיברים בכל ערימה

50 of 114

הוצאת חציון

50

12

2

7

15

10

27

45

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

20

6

5

מספר האיברים בכל ערימה

51 of 114

הוצאת חציון

51

12

2

7

10

15

27

45

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

20

6

5

מספר האיברים בכל ערימה

52 of 114

הוצאת חציון

52

12

2

7

10

15

27

45

35

25

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

20

6

5

מספר האיברים בכל ערימה

53 of 114

הוצאת חציון

53

12

2

7

10

15

27

45

35

20

22

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

25

6

5

מספר האיברים בכל ערימה

54 of 114

הוצאת חציון

54

12

2

7

10

15

27

45

35

22

20

ערמת מקסימום

ערמת מינימום

(מצויירת הפוך)

25

6

5

מספר האיברים בכל ערימה

55 of 114

איבר k-בגודלו ממערכים ממוינים

55

56 of 114

 

  •  

56

57 of 114

 

  • נעזר בערימת מינימום בגודל m.
  • תחילה נבנה אותה עם m �האיברים שבתחילת המערכים.
  • עבור i=1 עד k-1.
    • הוצא את האיבר המינימלי
    • הכנס את האיבר הבא במערך של�האיבר שיצא
  • החזר את האיבר המינימלי

57

12

20

22

28

45

49

55

101

107

200

65

90

5

7

13

16

8

14

15

87

19

24

29

33

85

88

91

99

58 of 114

 

  •  

58

12

20

22

28

45

49

55

65

90

5

7

13

16

8

14

15

87

19

24

29

33

85

88

91

99

101

107

200

59 of 114

מיזוג ערימות בינאריות

59

60 of 114

שאלה - מיזוג

  •  

60

61 of 114

תשובה

  •  

61

62 of 114

ערימות בינומיות

(מבוסס בחלקו על שקפים של רני הוד)

62

63 of 114

מוטיבציה

  • נרצה מבנ"ת יעיל כמו ערימה בינארית, שתומך גם במיזוג יעיל

63

ערימה בינארית

מטרה

הכנסה

החזרת מינימום

הוצאת מינימום

הקטנת מפתח

בניית ערימה

מיזוג

64 of 114

עץ בינומי

  •  

64

65 of 114

עצים בינומיים

65

 

66 of 114

עצים בינומיים

66

 

 

67 of 114

עצים בינומיים

67

 

 

 

68 of 114

עצים בינומיים

68

 

 

 

 

69 of 114

עצים בינומיים

69

 

 

 

 

 

70 of 114

תכונות של עצים בינומיים

  •  

70

71 of 114

תכונה 1

  •  

71

72 of 114

תכונה 2

  •  

72

73 of 114

תכונה 3

  •  

73

74 of 114

תכונה 4

  •  

74

75 of 114

ערימה בינומית

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

75

76 of 114

ערימה בינומית

  •  

76

77 of 114

דוגמה

  •  

77

21

 

46

35

 

75

65

50

47

49

36

80

12

 

78 of 114

ייצוג

  •  

78

21

 

46

35

 

75

65

50

47

49

36

80

12

 

79 of 114

פעולת Link

  • פעולת Link מקבלת שני שורשים של עצים מאותה דרגה ומחברת לעץ אחד – השורש יבחר לפי הערך הקטן.

79

75

65

50

12

38

35

42

15

80 of 114

פעולת Link

  • פעולת Link מקבלת שני שורשים של עצים מאותה דרגה ומחברת לעץ אחד – השורש יבחר לפי הערך הקטן.

80

75

65

50

12

38

35

42

15

81 of 114

פעולת Link

  • פעולת Link מקבלת שני שורשים של עצים מאותה דרגה ומחברת לעץ אחד – השורש יבחר לפי הערך הקטן.

81

75

65

50

12

38

35

42

15

82 of 114

פעולות של ערימה בינומית

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

82

83 of 114

פעולות - מיזוג

  • הפעולה הבסיסית על ערימה בינומית היא פעולת המיזוג בין שתי ערימות (שאין בהם ערכים חוזרים).
  • מתבצעת בדומה לחיבור מספרים בינאריים

83

Q1:

B0

B1

B3

Q2:

B0

B2

B3

B1

B2

B3

B3

B4

84 of 114

מיזוג - דוגמה

84

21

 

46

35

 

75

65

50

47

49

36

80

12

 

23

 

 

95

83

53

48

96

41

77

40

 

32

25

17

10

Q1:

B0

B1

B3

Q2:

B0

B2

B3

Q1:

Q2:

85 of 114

מיזוג - דוגמה

85

21

 

46

35

 

75

65

50

47

49

36

80

12

 

23

 

95

83

53

48

96

41

77

40

 

32

25

17

10

Q1:

Q2:

Q1:

B0

B1

B3

Q2:

B0

B2

B3

B1

86 of 114

מיזוג - דוגמה

86

21

 

46

35

75

65

50

47

49

36

80

12

 

23

 

95

83

53

48

96

41

77

40

 

32

25

17

10

Q1:

Q2:

Q1:

B0

B1

B3

Q2:

B0

B2

B3

B1

B2

87 of 114

מיזוג - דוגמה

87

75

65

50

47

49

36

80

12

 

95

83

53

48

96

41

77

40

 

32

25

17

10

Q1:

Q2:

21

46

35

23

 

 

Q1:

B0

B1

B3

Q2:

B0

B2

B3

B1

B2

B3

88 of 114

מיזוג - דוגמה

88

21

46

35

75

65

50

47

49

36

80

12

 

23

95

83

53

48

96

41

77

40

 

32

25

17

10

Q1:

Q2:

 

Q1:

B0

B1

B3

Q2:

B0

B2

B3

B1

B2

B3

89 of 114

מיזוג - דוגמה

89

21

46

35

75

65

50

47

49

36

80

12

 

23

95

83

53

48

96

41

77

40

 

32

25

17

10

Q1:

Q2:

Q1:

B0

B1

B3

Q2:

B0

B2

B3

B1

B2

B3

B3

B4

90 of 114

מיזוג - דוגמה

90

21

46

35

75

65

50

47

49

36

80

12

 

23

95

83

53

48

96

41

77

40

 

32

25

17

10

Q1:

Q2:

Q1:

B0

B1

B3

Q2:

B0

B2

B3

B1

B2

B3

B3

B4

91 of 114

זמן מיזוג

  •  

91

92 of 114

תחזוקת מינימום

  •  

92

93 of 114

תחזוקת מינימום

93

 

46

35

75

65

50

47

49

36

80

12

 

32

25

17

10

Q1:

B0

B1

B3

Q2:

B0

B2

B3

B1

B2

B3

B3

B4

23

21

95

83

53

48

96

41

77

40

94 of 114

הכנסת איבר

  •  

94

95 of 114

הכנסת איבר

95

 

46

35

75

65

50

47

49

36

80

12

 

32

25

17

10

23

21

95

83

53

48

96

41

77

40

13

96 of 114

הכנסת איבר

96

 

46

35

75

65

50

47

49

36

80

12

 

32

25

17

10

23

21

95

83

53

48

96

41

77

40

13

97 of 114

הוצאת מינימום

  •  

97

98 of 114

הוצאת מינימום

98

13

 

 

95

83

53

48

96

41

77

40

 

32

25

17

10

99 of 114

הוצאת מינימום

99

13

 

95

83

53

48

96

41

77

40

 

32

25

17

100 of 114

הוצאת מינימום

100

13

 

 

95

83

53

48

96

41

77

40

 

32

25

17

 

101 of 114

הוצאת מינימום

101

13

 

 

95

83

53

48

96

41

77

40

 

32

25

17

 

102 of 114

הוצאת מינימום

102

13

 

95

83

53

48

96

41

77

40

 

32

25

17

103 of 114

הוצאת מינימום

103

13

 

95

83

53

48

96

41

77

40

 

32

25

17

104 of 114

הקטנת מפתח

  •  

104

105 of 114

הקטנת מפתח

105

 

46

35

75

65

50

47

49

36

80

12

 

32

25

17

10

23

21

95

83

53

48

96

41

77

40

13

הקטן ל2

106 of 114

הקטנת מפתח

106

 

46

35

75

65

50

47

49

36

80

12

 

32

25

17

10

23

21

2

83

53

48

96

41

77

40

13

הקטן ל2

107 of 114

הקטנת מפתח

107

 

46

35

75

65

50

47

49

36

80

12

 

32

25

17

10

23

21

83

2

53

48

96

41

77

40

13

108 of 114

הקטנת מפתח

108

 

46

35

75

65

50

47

49

36

80

12

 

32

25

17

10

23

21

83

48

53

2

96

41

77

40

13

109 of 114

הקטנת מפתח

109

 

46

35

75

65

50

47

49

36

80

12

 

32

25

17

10

23

21

83

48

53

40

96

41

77

2

13

110 of 114

הקטנת מפתח

110

 

46

35

75

65

50

47

49

36

80

12

 

32

25

17

10

23

21

83

48

53

40

96

41

77

2

13

111 of 114

הגדלת מפתח

  •  

111

112 of 114

בנייה

  •  

112

113 of 114

בנייה

  •  

113

Q:

B0

B1

B2

114 of 114

סיכום

114

ערימה בינארית

מטרה

הכנסה

החזרת מינימום

הוצאת מינימום

הקטנת מפתח

בניית ערימה

מיזוג