מבני נתונים ואלגוריתמים - מחברת קורס/שיעורי בית 2/שאלות
הבהרה בנוגע לשימוש בלשון זכר: כדי למנוע סרבול מיותר, וכמקובל בשפה העברית, ננקטת לעתים לשון זכר בהתייחסות אל כלל הגולשות והגולשים ובמתן שמות לערכים. אנא קבלו זאת בהבנה.
שימו לב: *נא להגיש רק את שאלות 1-5.
|
1
עריכההפונקציה נתונה על ידי הנוסחה. .
אנא הוכח .
רמז נסה להוכיח זאת באותו אופן בו הוכחנו . כלומר:
|
2
עריכהא'
עריכהאנא מצא חסמים עליונים ותחתונים (כלומר, מסוג ו ) טובים ככל האפשר לפונקציה בכל אחד מהסעיפים הבאים. ( מתארת את זמן הריצה של אלגוריתם כלשהו.)
- .
- .
- , כאשר הוא קבוע כלשהו.
ב'
עריכהבנוסחת הנסיגה , מתארת את זמן הריצה של אלגוריתם כלשהו. אנא פתור את הנוסחה.
3
עריכהמתארת את זמן הריצה של אלגוריתם כלשהו. אנא הוכח שאם אז .
כדאי לדעת: נצטרך את פתרונה של נוסחת נסיגה זו בבעיית "דג הסלמון". |
4
עריכהלהלן פסוודו-קוד לפונקציה Foo
, המקבלת מספר שלם לא-שלילי ומחזירה מספר שלם:
Foo(n)
1 if n == 0
2 return 0
3 return n % 2 + Foo( ⌊n / 2⌋ )
אנא הסבר מה עושה הפונקציה (בלווי נימוק), ונתח את סיבוכיותה.
5
עריכהA[1, ..., n]
הוא מערך של מספרים שונים זה מזה. נאמר ש הוא היפוך אם אך
A[i] > A[j]
.
- במערך
[2, 3, 8, 6, 1]
יש 5 היפוכים. אנא רשום אותם. - אנא מצא אלגוריתם יעיל למציאת מספר ההיפוכים במערך.
דוגמה: נניח שיזינו לאלגוריתם שתכתוב את המערך בדוגמה של הסעיף הראשון. הפלט שהאלגוריתם שלך אמור להוציא הוא המספר 5. |
רמז תוכל אולי לשנות את מיון מיזוג. הוסף משתנים גלובליים ופונקציות עזר כרצונך, אם הדבר יעזור לך. |
6
עריכההפונקציה Alg
מוגדרת כך:
Alg(A, i, j)
1 if j <= i + 1
2 return
3 q = Sqrt(j - i + 1) # q = ⌊(j - i + 1)^(1/2)⌋
4 for k in [0, ..., q - 1]
5 Alg(A, i + k * q, i + (k + 1) * (q - 1))
6 Proc(A, i, j)
היא משתמשת בשתי הפונקציות הבאות:
- הפונקציה
Sqrt(n)
מחזירה את השורש הריבועי של מעוגל כלפי מטה. היא פועלת בזמן . - הפונקציה
Proc
היא פונקציה כלשהי המקיימת שזמן ריצתProc(A, i, j)
הוא .
מהו זמן הריצה של Alg(A, 1, n)
?
7
עריכהנתונה מטריצה בת עמודות ו שורות. כל כניסה במטריצה היא 0 או 1, ולכן כל שורה מתארת מספר בינרי בעל ביטים. השורות אינן מסודרות בסדר ידוע, אך ידוע שאין שתי שורות זהות. מכאן נובע שחסרה שורה להשלמת כל המספרים האפשריים בעלי ביטים.
דוגמה: עבור , ייתכן שהשורה הראשונה היא המערך |
אנא תאר אלגוריתם המקבל מטריצה כזו, ומדפיס את השורה החסרה. נסה להגיע לאלגוריתם שסיבוכיותו .
רמז נסה להפוך את הבעיה לבעיה קטנה בחצי (בערך) בזמן לינארי. |
8
עריכהאנא הוכחה את המשפט הבא:
משפט: פתרון
|
9
עריכהמתארת את זמן הריצה של אלגוריתם כלשהו, והיא פתרונה של נוסחת הנסיגה . בנוסחה זו, מספר שלם גדול ממש מ1, מספר גדול ממש מ1, ו היא פונקציה המקיימת , עבור שלם גדול ממש מ1. אנא הוכח .