1 of 74

רקורסיות

צביקה ברגר

מרתון מבנה נתונים 2022

סיכום

צביקה ברגר

בס"ד

2 of 74

בס"ד

3 of 74

בס"ד

4 of 74

הפרד ומשול

בס"ד

5 of 74

מזה הפרד ומשול

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

  • בחלק מהאלגוריתמים יש גם שלב:

מזג – חבר את התוצאות של כל תתי הבעיות.

בס"ד

6 of 74

למה זה טוב?

  1. פתרון בעיות קשות – ניתן לקחת בעיה קשה ולפצל אותה לבעיות קטנות שיותר קל לפתור.
  2. יעילות האלגוריתמים – בדרך כלל בבעיות קשות סיבוכיות זמן ריצה טובה (nlogn)o.
  3. מקביליות – במימוש ניתן להריץ במקביל.

בס"ד

7 of 74

Divide and Conquer Algorithm

בס"ד

8 of 74

Divide and Conquer Algorithm

בס"ד

9 of 74

Merge Sort

הפרד – כל פעם תחלק את המערך לחצי.

ומשול – תמיין את החלק הקטן.

מזג – החזר את התשובה של כל תתי הבעיות.

בס"ד

10 of 74

הרעיון

בס"ד

11 of 74

בס"ד

12 of 74

ניתוח לשיעורין

בס"ד

13 of 74

בס"ד

14 of 74

מזה ניתוח לשיעורין

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

בס"ד

15 of 74

למה זה טוב?

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

בס"ד

16 of 74

ניתוח לשיעורין

בס"ד

17 of 74

שיטת הצבירה

בס"ד

18 of 74

שיטת החיובים

בס"ד

19 of 74

שיטת הפוטנציאל

בס"ד

20 of 74

רשימת דילוגים

בס"ד

21 of 74

Array vs List

בס"ד

22 of 74

Array vs List

בס"ד

23 of 74

List

  • Benefits:
    • Easy to insert & delete in O(1) time.
    • Don’t need to estimate total memory needed.
  • Drawbacks:
    • Hard to search in less than O(n) time.
    • Hard to jump to the middle
  • Skip Lists:
    • fix these drawbacks

בס"ד

24 of 74

skip list

בס"ד

  • Invented around 1990 by Bill Pugh.
  • Generalization of sorted linked lists – so simple to implement
  • Expected search time is O(log n).

25 of 74

Perfect skip list

בס"ד

26 of 74

Perfect skip list - find

בס"ד

27 of 74

Perfect skip list - find

בס"ד

28 of 74

Perfect skip list - insert

בס"ד

29 of 74

Perfect skip list - insert

בס"ד

30 of 74

Perfect skip list - delete

בס"ד

31 of 74

Perfect skip list - delete

בס"ד

32 of 74

עצי AVL

בס"ד

33 of 74

בס"ד

34 of 74

עצי AVL

בס"ד

35 of 74

עצים

בס"ד

36 of 74

עצים

בס"ד

37 of 74

B Tree

בס"ד

38 of 74

עצי B

בס"ד

39 of 74

עצים

בס"ד

40 of 74

עצים

בס"ד

41 of 74

עצים

בס"ד

42 of 74

Union Find

בס"ד

43 of 74

Union find

בס"ד

44 of 74

דוגמא שימוש

  • דוגמא לשימוש ב-union find היא חישוב רכיבי קשירות תחת הוספת קשתות לגרף.

הגרף מתחיל בלי קשתות (וכל קדקוד הוא רכיב קשירות).

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

בס"ד

45 of 74

עצים

בס"ד

46 of 74

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

בס"ד

47 of 74

ייעול 1

בס"ד

48 of 74

ייעול 1

בס"ד

49 of 74

ייעול 2

בס"ד

50 of 74

ייעול 2

בס"ד

51 of 74

ייעול 2

בס"ד

52 of 74

עצים

בס"ד

53 of 74

מימוש על ידי יער

בס"ד

54 of 74

כיווץ מסלולים

בס"ד

55 of 74

כיווץ מסלולים

בס"ד

56 of 74

Heap

בס"ד

57 of 74

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

בס"ד

58 of 74

עצים

בס"ד

59 of 74

עצים

בס"ד

60 of 74

תכנות דינאמי

בס"ד

61 of 74

מזה תכנות דינאמי?

  • תכנון דינאמי הוא שיטה לבניית אלגוריתם לפתרון בעיות שאינן ניתנות לפתרון יעיל בשיטת הפרד ומשול נאיבית.

ריצ'רד בלמן 1953.

בס"ד

62 of 74

עצים

בס"ד

63 of 74

פיבונאצ'י

  • מה הסיבוכיות זמן הריצה של הפונקציה הבאה?

בס"ד

64 of 74

פיבונאצ'י

בס"ד

65 of 74

פיבונאצ'י

בס"ד

66 of 74

פיבונאצ'י

בס"ד

67 of 74

פיבונאצ'י

  • מה סיבוכיות זמן הריצה של המימוש הזה של פיבונאצ'י?

בס"ד

68 of 74

פיבונאצ'י

  • מה סיבוכיות זמן הריצה של המימוש הזה של פיבונאצ'י?

בס"ד

69 of 74

מיונים

בס"ד

70 of 74

מיונים מוכרים

  • Bubble sort
  • Merge sort
  • Quick sort
  • Insertion sort
  • Heap sort

בס"ד

71 of 74

עצים

בס"ד

72 of 74

עצים

בס"ד

73 of 74

עצים

בס"ד

74 of 74

עצים

בס"ד