1 of 35

Data Structures – Recitation 10

Shay Golan

and Matan Kraus

1

2 of 35

תכנון (/תכנות) דינמי�Dynamic Programming

2

3 of 35

הקדמה

  • פרדיגמה - פָּרָדִיגְמָה היא תבנית מחשבה במסגרת של תחום מדעי או בהקשר אפיסטמולוגי דומה.
  • בתכנון אלגוריתמים, פרדיגמה היא דרך, שיטה מסוימת שמתארת הרבה אלגוריתמים שונים, ויכולה להיות שימושית לפתרון בעיות רבות.

  • נדבר הקורס על שתי פרדיגמות בתכנון אלגוריתמים:
    • הפרד ומשול
    • תכנות דינמי
    • אלגו' חמדניים – תלמדו בע"ה באלגוריתמים 1.

3

4 of 35

לאיזה בעיות נשתמש בתכנון דינמי?

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

4

5 of 35

תכנון דינמי

  • במקום לחשב מחדש כל פעם את הקריאות הרקורסיביות נחשב את הפונקציה על כל קלט פעם אחת בלבד.
  • שתי צורות חישוב סטנדרטיות:
    • בחישוב "מלמעלה למטה" - בשיטת התזכור (Memo[r]ization)
    • בחישוב "מלמטה למעלה".

5

6 of 35

סד"פ תכנון דינמי

6

7 of 35

בעיית תרמיל הגב בשלמים

7

8 of 35

שעת סיפור

  •  

8

9 of 35

בעיית תרמיל הגב

  •  

9

10 of 35

10

11 of 35

פתרון נאיבי

  •  

11

12 of 35

נסיון פתרון (כושל)

  • ניקח כל פעם את החפץ ששוה הכי הרבה כסף לק"ג חומר.
  • לא עובד. דוגמה נגדית – תיק שיכול לסחוב עד 100 ק"ג ושני חפצים:
    • אחד שוקל 51 ק"ג ושווה 51 ש"ח.
    • השני שוקל 100 קילו ושווה 70 ש"ח.
  • האלגוריתם ייקח את החפץ ששוקל 51 ק"ג, ויסיים עם 51 ש"ח, כשניתן להרוויח 70 ש"ח.

12

13 of 35

פתרון רקורסיבי

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

13

14 of 35

פתרון רקורסיבי

  •  

14

15 of 35

פתרון רקורסיבי

  •  

15

16 of 35

פתרון רקורסיבי

  •  

16

17 of 35

הוכחת הנוסחה הרקורסיבית

  •  

17

18 of 35

הוכחה

  •  

18

19 of 35

הוכחה

  •  

19

20 of 35

הוכחה

  •  

20

ה"ה

21 of 35

הוכחה

  •  

21

ה"ה

22 of 35

זמן ריצה

  •  

22

23 of 35

מימוש יעיל – תכנון דינמי

  •  

23

B

b

1

0

0

1

2

j

n

 

 

24 of 35

מימוש יעיל – תכנון דינמי

  •  

24

 

25 of 35

שחזור

  •  

25

26 of 35

סיבוכיות מקום

  •  

26

27 of 35

הערה על פסאודו פולינומיות

  •  

27

28 of 35

בעץMIS בעיית

MIS=Maximum Independent Set

קבוצה בלתי תלויה גדולה ביותר

28

29 of 35

שעת סיפור 2

  •  

29

4

3

3

4

1

5

2

4

2

1

30 of 35

בעיית המסיבה (MIS בעץ)

  •  

30

4

3

3

4

1

5

2

4

2

1

2+4+5+2+3+4=20

31 of 35

פתרון נאיבי

  •  

31

32 of 35

פתרון רקורסיבי

  •  

32

33 of 35

פתרון רקורסיבי

  •  

33

34 of 35

פתרון רקורסיבי

  •  

34

35 of 35

זמן ריצה

  •  

35