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

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

“Constants Don’t Matter!”

מצגות קשורות


מצגת בנושא: "“Constants Don’t Matter!”"— תמליל מצגת:

1 “Constants Don’t Matter!”
תרגול 2 “Constants Don’t Matter!”

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

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

4 Algorithm Analysis lim 𝑛→∞ 𝑠𝑢𝑝 𝑓(𝑛) 𝑔(𝑛) <∞
𝑓(𝑛) = 𝑂(𝑔(𝑛)) ∃ 𝑐>0 and 𝑛0>0 such that: 0≤𝑓(𝑛)≤𝑐𝑔(𝑛)  ∀ 𝑛≥𝑛0 lim 𝑛→∞ 𝑠𝑢𝑝 𝑓(𝑛) 𝑔(𝑛) <∞ 𝑓(𝑛) = Ω(𝑔(𝑛)) ∃ 𝑐>0 and 𝑛 0 >0 such that: 0≤𝑐𝑔(𝑛)≤𝑓(𝑛)  ∀ 𝑛≥𝑛0 lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) >0 𝑓(𝑛) = Θ(𝑔(𝑛)) ∃ 𝑐1, 𝑐2>0 and 𝑛0>0 s.t.: 0≤𝑐1𝑔 𝑛 ≤𝑓 𝑛 ≤𝑐2𝑔 𝑛 ∀ 𝑛≥𝑛0 0< lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) ≤

5 Algorithm Analysis lim 𝑛→∞ 𝑠𝑢𝑝 𝑓(𝑛) 𝑔(𝑛) <∞
𝑓(𝑛) = 𝑂(𝑔(𝑛)) There exist c > 0 and n0 > 0 such that: 0 ≤ f(n) ≤ cg(n)     for each n ≥ n0 lim 𝑛→∞ 𝑠𝑢𝑝 𝑓(𝑛) 𝑔(𝑛) <∞ 𝑓(𝑛) = Ω(𝑔(𝑛)) There exist c > 0 and n0 > 0 such that: 0 ≤ cg(n) ≤ f(n)     for each n ≥ n0 lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) >0 𝑓(𝑛) = Θ(𝑔(𝑛)) There exist c1, c2 > 0 and n0 > 0 such that: 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n)     for each n ≥ n0 0< lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) ≤

6 Algorithm Analysis lim 𝑛→∞ 𝑠𝑢𝑝 𝑓(𝑛) 𝑔(𝑛) <∞
𝑓(𝑛) = 𝑂(𝑔(𝑛)) There exist c > 0 and n0 > 0 such that: 0 ≤ f(n) ≤ cg(n)     for each n ≥ n0 lim 𝑛→∞ 𝑠𝑢𝑝 𝑓(𝑛) 𝑔(𝑛) <∞ 𝑓(𝑛) = Ω(𝑔(𝑛)) There exist c > 0 and n0 > 0 such that: 0 ≤ cg(n) ≤ f(n)     for each n ≥ n0 lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) >0 𝑓(𝑛) = Θ(𝑔(𝑛)) There exist c1, c2 > 0 and n0 > 0 such that: 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n)     for each n ≥ n0 0< lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) ≤

7 Algorithm Analysis lim 𝑛→∞ 𝑠𝑢𝑝 𝑓(𝑛) 𝑔(𝑛) <∞
𝑓(𝑛) = 𝑂(𝑔(𝑛)) There exist c > 0 and n0 > 0 such that: 0 ≤ f(n) ≤ cg(n)     for each n ≥ n0 lim 𝑛→∞ 𝑠𝑢𝑝 𝑓(𝑛) 𝑔(𝑛) <∞ 𝑓(𝑛) = Ω(𝑔(𝑛)) There exist c > 0 and n0 > 0 such that: 0 ≤ cg(n) ≤ f(n)     for each n ≥ n0 lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) >0 𝑓(𝑛) = Θ(𝑔(𝑛)) There exist c1, c2 > 0 and n0 > 0 such that: 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n)     for each n ≥ n0 0< lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) ≤

8 Algorithm Analysis שימו לב:
𝑓(𝑛) = 𝑂(𝑔(𝑛)) There exist c > 0 and n0 > 0 such that: 0 ≤ f(n) ≤ cg(n)     for each n ≥ n0 lim 𝑛→∞ 𝑠𝑢𝑝 𝑓(𝑛) 𝑔(𝑛) <∞ 𝑓(𝑛) = Ω(𝑔(𝑛)) There exist c > 0 and n0 > 0 such that: 0 ≤ cg(n) ≤ f(n)     for each n ≥ n0 lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) >0 𝑓(𝑛) = Θ(𝑔(𝑛)) There exist c1, c2 > 0 and n0 > 0 such that: 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n)     for each n ≥ n0 0< lim inf 𝑛→∞ 𝑓(𝑛) 𝑔(𝑛) ≤ שימו לב: פונקציות המתארת זמן ריצה הינן אי-שליליות אסימפטוטית, כלומר הן אי-שליליות עבור n גדול מספיק. במהלך הקורס בד"כ נתייחס לפונקציות מסוג זה.

9 דוגמאות בסיסיות Prove: 100 ∗ 𝑛 + 12 = Θ(𝑛) פתרון:
There exist c1, c2 > 0 and n0 > 0 such that: 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n)     for each n ≥ n0 Prove: 100 ∗ 𝑛 + 12 = Θ(𝑛) פתרון: ראשית כל, נזהה כי 𝑓 𝑛 =100∗𝑛+12 , 𝑔 𝑛 =𝑛. עלינו לחפש 𝑐 1 , 𝑐 2 שיעמדו בתנאים למעלה. עבור 𝑐 1 : 𝑐 1 𝑛≤100𝑛+12 ונרצה שזה יהיה נכון לכל 𝑛. אז נבחר 𝑐 1 =1 ואז זה יעבוד לכל 𝑛. עבור 𝑐 2 : 100𝑛+12≤ 𝑐 2 𝑛 נחלק ב𝑛 ונקבל 𝑐 2 ≥ 𝑛 , נבחר 𝒄 𝟐 =𝟏𝟎𝟒 ונקבל כי המשוואה נכונה לכל 𝒏≥𝟑.

10 דוגמאות בסיסיות Prove: 𝑛 3 + 𝑛 2 +𝑛=𝑶 𝑛 3 . 𝑛 3 + 𝑛 2 +𝑛≤𝑐 𝑛 3
פתרון: 𝑛 3 + 𝑛 2 +𝑛≤𝑐 𝑛 3 𝒄=𝟐, 𝑡𝑟𝑢𝑒 𝑓𝑜𝑟 𝒆𝒗𝒆𝒓𝒚 𝒏≥𝟐 עבור 𝑶 𝑛 4 . מה יהיה C? מה יהיה 𝑛 0 ? עבור 𝑶 𝑛 2 . מה יהיה C? מה יהיה 𝑛 0 ? מה קורה עם ערכים אחרים של C? C=1 C=1/2

11 Log כשנאמר log 𝑏 𝑥 הכוונה היא למצוא את 𝑦 כך ש: 𝑥= 𝑏 𝑦 קצת חוקי log:

12 Log כשנאמר log 𝑏 𝑥 הכוונה היא למצוא את 𝑦 כך ש: 𝑥= 𝑏 𝑦 קצת חוקי log:
דוגמאות: log 2 8 =3 log 3 27=3

13 שאלה 1 הוכח כי log 𝑛 log 𝑛 =Ω 𝑛 3 2 𝑐 𝑛 =

14 שאלה 1 הוכח כי log 𝑛 log 𝑛 =Ω 𝑛 3 2 𝑐 𝑛 3 2 =𝑐 2 log 𝑛 3 2

15 שאלה 1 הוכח כי log 𝑛 log 𝑛 =Ω 𝑛 3 2
חוקי חזקות

16 שאלה 1 מה ישתנה אם נחליף את 3 2 ב10? הוכח כי log 𝑛 log 𝑛 =Ω 𝑛 3 2
מה ישתנה אם נחליף את ב10? הוכח כי log 𝑛 log 𝑛 =Ω 𝑛 3 2 𝑐 𝑛 =𝑐 2 log 𝑛 =𝑐 log 𝑛 ≤ log 𝑛 log 𝑛 𝑎 log 𝑎 𝑏 =𝑏 תמיד n > קבוע חוקי חזקות cn3/2 ≤ (log n)log n c = 1 n0 = 8

17 שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 )

18 שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 ) טריק חשוב:
log 𝑛! = log 1∗2∗3∗…∗𝑛 = log 1 + …+ log 𝑛 = 𝑖=1 𝑛 log 𝑖 log 1 + …+ log 𝑛 = 𝑖=1 𝑛 log 𝑖 log 𝑎∗𝑏 = log 𝑎 + log 𝑏

19 חסם ע"י האיבר הגדול ביותר
שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 ) log 𝑛! = log 1∗2∗3∗…∗𝑛 = log 1 + …+ log 𝑛 = 𝑖=1 𝑛 log 𝑖 צד ראשון: 𝑖=1 𝑛 log 𝑖 ≤𝑛 log 𝑛 חסם ע"י האיבר הגדול ביותר

20 חסם ע"י האיבר הגדול ביותר
שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 ) log 𝑛! = log 1∗2∗3∗…∗𝑛 = log 1 + …+ log 𝑛 = 𝑖=1 𝑛 log 𝑖 צד ראשון: 𝑖=1 𝑛 log 𝑖 ≤𝑛 log 𝑛 ⇒ log 𝑛! =𝑂 𝑛 𝑙𝑜𝑔𝑛 חסם ע"י האיבר הגדול ביותר

21 שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 ) נסתכל על חצי מהאיברים צד שני:

22 שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 ) נסתכל על חצי מהאיברים
צד שני: 𝑖=1 𝑛 log 𝑖 ≥ 𝑖= 𝑛 2 𝑛 log 𝑖 ≥ 𝑛 2 log 𝑛 2 נסתכל על חצי מהאיברים חסם האיבר הנמוך

23 שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 ) נסתכל על חצי מהאיברים
צד שני: 𝑖=1 𝑛 log 𝑖 ≥ 𝑖= 𝑛 2 𝑛 log 𝑖 ≥ 𝑛 2 log 𝑛 2 ≥ 𝑛 2 log 𝑛 − log 2 = נסתכל על חצי מהאיברים חסם האיבר הנמוך חוקי לוג

24 שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 ) נסתכל על חצי מהאיברים
צד שני: 𝑖=1 𝑛 log 𝑖 ≥ 𝑖= 𝑛 2 𝑛 log 𝑖 ≥ 𝑛 2 log 𝑛 2 ≥ 𝑛 2 log 𝑛 − log 2 = 𝑛 2 log 𝑛 − 𝑛 2 נסתכל על חצי מהאיברים חסם האיבר הנמוך חוקי לוג

25 שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 ) נסתכל על חצי מהאיברים
צד שני: 𝑖=1 𝑛 log 𝑖 ≥ 𝑖= 𝑛 2 𝑛 log 𝑖 ≥ 𝑛 2 log 𝑛 2 ≥ 𝑛 2 log 𝑛 − log 2 = 𝑛 2 log 𝑛 − 𝑛 2 ≥ ∗ 𝑐𝑛 𝑙𝑜𝑔𝑛 נסתכל על חצי מהאיברים חסם האיבר הנמוך חוקי לוג 1 2 log 𝑛 − 1 2 ≥𝑐 log 𝑛 ⇒ 𝑛 2 log 𝑛 − 𝑛 2 ≥𝑐𝑛 log 𝑛

26 שאלה 2 הוכח כי: log 𝑛! = 𝛩(𝑛 log 𝑛 ) c = 0.25 n0 = 8
צד שני: 𝑖=1 𝑛 log 𝑖 ≥ 𝑖= 𝑛 2 𝑛 log 𝑖 ≥ 𝑛 2 log 𝑛 2 ≥ 𝑛 2 log 𝑛 − log 2 = 𝑛 2 log 𝑛 − 𝑛 2 ≥ ∗ 𝑐𝑛 𝑙𝑜𝑔𝑛⇒ log n! =Ω 𝑛 log 𝑛 נסתכל על חצי מהאיברים חסם האיבר הנמוך חוקי לוג 1 2 log 𝑛 − 1 2 ≥𝑐 log 𝑛 ⇒ 𝑛 2 log 𝑛 − 𝑛 2 ≥𝑐𝑛 log 𝑛 c = 0.25 n0 = 8

27 שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!))
ראינו בשאלה הקודמת כי log n! =𝜃 𝑛 log 𝑛

28 1<2 2=1∗2<2∗2=4 6=1∗2∗3<2∗2∗2=8 24=1∗2∗3∗4>2∗2∗2∗2=16
שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!)) ראינו בשאלה הקודמת כי log n! =𝜃 𝑛 log 𝑛 𝑙𝑜𝑔𝑛 ! = 𝑙𝑜𝑔𝑛 𝑙𝑜𝑔𝑛 −1 ! טריק נוסף: עבור 𝑘≥4 מתקיים כי 𝑘!> 2 𝑘 הסבר: 1<2 2=1∗2<2∗2=4 6=1∗2∗3<2∗2∗2=8 24=1∗2∗3∗4>2∗2∗2∗2=16

29 שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!))
טריק נוסף: עבור 𝑘≥4 מתקיים כי 𝑘!> 2 𝑘 שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!)) ראינו בשאלה הקודמת כי log n! =𝜃 𝑛 log 𝑛 log 𝑛 ! = log 𝑛 log 𝑛 −1 !> log 𝑛 ∙ 2 log 𝑛 −1 לפי הטריק

30 שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!)) לפי הטריק
טריק נוסף: עבור 𝑘≥4 מתקיים כי 𝑘!> 2 𝑘 שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!)) ראינו בשאלה הקודמת כי log n! =𝜃 𝑛 log 𝑛 log 𝑛 ! = log 𝑛 log 𝑛 −1 !> log 𝑛 ∙ 2 log 𝑛 −1 = log 𝑛 ⋅ 2 log 𝑛 ⋅ 2 −1 לפי הטריק

31 שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!)) לפי הטריק
טריק נוסף: עבור 𝑘≥4 מתקיים כי 𝑘!> 2 𝑘 שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!)) ראינו בשאלה הקודמת כי log n! =𝜃 𝑛 log 𝑛 log 𝑛 ! = log 𝑛 log 𝑛 −1 !> log 𝑛 ∙ 2 log 𝑛 −1 = log 𝑛 ⋅ 2 log 𝑛 ⋅ 2 −1 = log 𝑛 𝑛 2 לפי הטריק

32 שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!)) c = 1/4 n0 = 32 (תלוי בטריק*)
טריק נוסף: עבור 𝑘≥4 מתקיים כי 𝑘!> 2 𝑘 שאלה 3 הוכח כי:(log⁡𝑛)! = Ω (log⁡(𝑛!)) ראינו בשאלה הקודמת כי log n! =𝜃 𝑛 log 𝑛 log 𝑛 ! = log 𝑛 log 𝑛 −1 !> log 𝑛 ∙ 2 log 𝑛 −1 = log 𝑛 ⋅ 2 log 𝑛 2 −1 = log 𝑛 𝑛 2 ≥ 𝑐∙𝑛 log 𝑛 לפי הטריק c = 1/4 n0 = 32  (תלוי בטריק*)

33 שאלה 4 תנו דוגמא לשתי פונ' 𝑔,𝑓 כך ש: לא מתקיים כי 𝑔 𝑛 =𝑂 𝑓 𝑛
וגם לא מתקיים 𝑔 𝑛 =Ω 𝑓 𝑛 פתרון : 𝑓 𝑛 =𝑛 𝑔 𝑛 = 𝑛 2 𝑛%2= 𝑛%2=1 ds192-ps02

34 שאלה 4 עלינו להוכיח את שני התנאים: 𝒈 𝒏 ≠ 𝑶(𝒇(𝒏))
נניח בשלילה שקיים קבוע 𝑐 כך ש𝒈 𝑛 ≤𝑐𝑛 עבור כל 𝑛≥ 𝑛 0 . לכל 𝑛 זוגי מתקיים 𝑔 𝑛 = 𝑛 2 𝑛 2 ≤𝑐𝑛⇒𝑛≤𝑐 לכל 𝑛 0 שנבחר, קיים 𝑛 מספיק גדול כך ש𝑛>𝑐 . סתירה! 𝒈 𝒏 ≠ Ω 𝒇 𝒏 נניח בשלילה שקיים קבוע 𝑐 כך ש𝒈 𝑛 ≥𝑐𝑛 עבור כל 𝑛≥ 𝑛 0 . לכל 𝑛 אי-זוגי מתקיים 𝑔 𝑛 =1 1≥𝑐𝑛⇒ 1 𝑐 ≥𝑛 לכל 𝑛 0 שנבחר, קיים 𝑛 מספיק גדול כך ש 𝑛> 1 𝑐 . סתירה! ds192-ps02

35 שאלה 5 הוכח או הפרך: עבור כל 𝑓 𝑛 ו- 𝑔 𝑛 מתקיים:
עבור כל 𝑓 𝑛 ו- 𝑔 𝑛 מתקיים: 𝑓 𝑛 =𝑂 𝑔 𝑛 ⇒𝑔 𝑛 =Ω 𝑓 𝑛 עבור כל פונקציה 𝑓 𝑛 מתקיים: 𝑓 𝑛 =𝜃 𝑓 𝑛 2

36 שאלה 5 הוכח או הפרך: נכון. 𝑓 𝑛 =𝜃 𝑔 𝑛 ⇒ ? 𝑓 𝑛 =𝑂 𝑔 𝑛 ⇒𝑓 𝑛 ≤𝑐𝑔 𝑛
עבור כל 𝑓 𝑛 ו- 𝑔 𝑛 מתקיים: 𝑓 𝑛 =𝑂 𝑔 𝑛 ⇒𝑔 𝑛 =Ω 𝑓 𝑛 נכון. 𝑓 𝑛 =𝑂 𝑔 𝑛 ⇒𝑓 𝑛 ≤𝑐𝑔 𝑛 ⇒𝑔 𝑛 ≥ 1 𝑐 ∙𝑓 𝑛 ⇒𝑔 𝑛 =Ω 𝑓 𝑛 𝑓 𝑛 =𝜃 𝑔 𝑛 ⇒ ? התשובה: g(n)=theta(f(n))

37 שאלה 5 הוכח או הפרך: לא נכון: דוגמא נגדית:𝑓 𝑛 = 2 𝑛 .
עבור כל פונקציה 𝑓 𝑛 מתקיים: 𝑓 𝑛 =𝜃 𝑓 𝑛 2 לא נכון: דוגמא נגדית:𝑓 𝑛 = 2 𝑛 . נקבל כי 𝑓(𝑛) = 2 𝑛 ≠Θ 2 𝑛 2 =𝑓 𝑛 2 נוכיח כי 2 𝑛 ≠O 2 𝑛 2 : נניח שקיים קבוע 𝑐 כך ש 2 𝑛 ≤𝑐∙ 2 𝑛 2 עבור כל 𝑛> 𝑛 0 אזי נחלק ב 2 𝑛 2 ונקבל כי 2 𝑛 2 ≤𝑐 עבור כל 𝑛> 𝑛 0 לכן 𝑐 אינו יכול להיות קבוע.

38 שאלה 6 (בונוס) בהינתן שתי פונק' מונוטוניות עולות : 𝑓(𝑛):ℕ→ℕ , 𝑔(𝑛):ℕ→ℕ כך ש: 𝑓 𝑛 =𝛩(𝑔 𝑛 ). הוכח כי log 𝑓 𝑛 =𝛩 (log⁡(𝑔 𝑛 )) פתרון: מהנתון, קיימים 𝑐 1 , 𝑐 2 , 𝑛 0 >0 כך ש ∀𝑛≥ 𝑛 0 מתקיים כי: 0 ≤𝑐 1 ⋅𝑔 𝑛 ≤𝑓 𝑛 ≤ 𝑐 2 ⋅𝑔(𝑛) נרצה להראות כי קיימים 𝑐 1 ′ , 𝑐 2 ′ , 𝑛 0 ′ >0 כך שלכל 𝑛≥ 𝑛 0 מתקיים כי: 0≤ 𝑐 1 ′ ⋅ log 𝑔 𝑛 ≤ log 𝑓 𝑛 ≤ 𝑐 2 ′ ⋅ log 𝑔 𝑛 נתון כי הפונקציות מונוטוניות עולות, ולכן קיים 𝑛 ′ ∈ℕ כך ש 𝑓 𝑛 , 𝑔 𝑛 >0 עבור כל 𝑛 ≥𝑛′. אזי, לכל 𝑛 ≥𝑛′ מתקיים כי: 𝑓 𝑛 ≤ 𝑐 2 ⋅𝑔(𝑛)⇒log⁡(𝑓 𝑛 )≤ log⁡(𝑐 2 𝑔(𝑛))=log⁡( 𝑐 2 )+ log⁡(𝑔(𝑛)) ועבור 𝑛 מספיק גדול: log 𝑐 log 𝑔 𝑛 ≤2∗ log 𝑔 𝑛 כיוון ש- 𝑐 2 קבוע. באופן דומה - 0.5∗𝑙𝑜𝑔 𝑔 𝑛 ≤log c log g n ≤ log 𝑓 𝑛 עבור 𝑛 מספיק גדול.

39 שאלה 7 בהינתן מערך ממויין A עם מספרים שלמים שונים
9 8 7 5 4 9−4=5 כלומר יש 5+1 מספרים בין 4 ל9. 5 הוא גודל המערך. לפי שובך היונים אם יש 6 מספרים ורק חמישה תאים – נשאר מספר שלא נמצא בתא.

40 שאלה 7 פתרון: נגדיר את הפונק' הבאה: SimpleCheck(A,left,right)
return (A[right] – A[left] < right-left) כדי לפתור את סעיף א' נבצע את ההרצה : SimpleCheck(A,1,n)

41 שאלה 7 בהינתן מערך ממויין A עם מספרים שלמים שונים
תאר אלגוריתם בזמן ריצה 𝑂 log 𝑛 אשר מוצא 𝑥 שכזה.

42 שאלה 7 פתרון: נגדיר את הפונק' הבאה: SolveB(A,left, right)
if (left+1=right) return 𝐴 left +1 𝑚← left+right /2 if (SimpleCheck(A,left,m) = true) return SolveB(A,left,m) else return SolveB(A,m, right) כדי לפתור את סעיף ב' נבצע את ההרצה : if (SimpleCheck(A,1,n) = false) Print "There is no such element in A" return SolveB(A,1,n)

43 שאלה 7 בהינתן מערך ממויין A עם מספרים שלמים שונים
תאר אלגוריתם בזמן ריצה 𝑂 log 𝑛 אשר מוצא 𝑥 שכזה. תאר אלגוריתם יעיל שבודק האם קיים אינדקס 𝑖 כך ש 𝐴 𝑖 =𝑖, 1≤𝑖≤𝑛 .

44 שאלה 7 דוגמא: נסתכל על אמצע המערך ונראה כי 𝐴[2]>2.
איפה יכול להיות 𝐴[𝑖]=𝑖? 4 3 2 1 Index 9 5 -1 Data

45 שאלה 7 דוגמא: נסתכל על אמצע המערך ונראה כי 𝐴[2]>2.
איפה יכול להיות 𝐴[𝑖]=𝑖? רק בצד שמאל! נמשיך רקורסיבית שמאלה. 4 3 2 1 Index 9 5 -1 Data

46 שאלה 7 דוגמא: נסתכל על אמצע המערך ונראה כי A[2]>2.
איפה יכול להיות A[i]=i? רק בצד שמאל! נמשיך רקורסיבית שמאלה. וכך הלאה 4 3 2 1 Index 9 5 -1 Data

47 מה זמן הריצה של הפונקציה במקרה הגרוע?
שאלה 7 פתרון: נגדיר את הפונק' הבאה: SolveC(A,left,right) if (right < left) return false 𝑚← left+right /2 if (A[m] = m) return true if (A[m] > m) return SolveC(A,left,m-1) else // if (A[m] < m) return SolveC(A,m+1, right) כדי לפתור את סעיף ג' נבצע את ההרצה : SolveC(A,1,n) מה זמן הריצה של הפונקציה במקרה הגרוע?

48 ביצים ביצים ביצים ביצים
יש ברשותכם שתי ביצים של דינוזאורית. אתם נמצאים בבניין גבוה בן N קומות. נרצה לדעת מהי M, הקומה הגבוהה ביותר שניתן לזרוק ממנה את הביצה מבלי שתישבר? ניתן לזרוק את הביצים כמה פעמים שרוצים מהחלון של איזה קומה שרוצים. (כל עוד היא לא נשברת) תארו אסטרטגיה למצוא את הקומה M.

49 ננסה בצורה בינארית?


הורד את "ppt "“Constants Don’t Matter!”

מצגות קשורות


מודעות Google