מבני נתונים ואלגוריתמים - מחברת קורס/מבחן סופי מועד ב' סמסטר ב' 2007 - שאלות
הבהרה בנוגע לשימוש בלשון זכר: כדי למנוע סרבול מיותר, וכמקובל בשפה העברית, ננקטת לעתים לשון זכר בהתייחסות אל כלל הגולשות והגולשים ובמתן שמות לערכים. אנא קבלו זאת בהבנה.
הנחיות
|
שאלה 1
עריכה(~24 נקודות)
אנא כתוב אלגוריתם יעיל המקבל כקלט מערך A
של מספרים שלמים חיוביים, ומספר שלם חיובי t
כלשהו, ומוציא כפלט True
או False
בהתאם לשאלה האם קיימת תת-קבוצה של הערכים בA
שסכום איבריה הוא בדיוק t
.
דוגמה: נניח שהמערך הוא , ו . התשובה היא |
אנא הבע סיבוכיות תשובתך במונחי ו .
שאלה 2
עריכה(~24 נקודות)
נתון גרף לא-מכוון וקשיר , וכן טבלת עלויות לקשתות Weights
. ידוע שאין שתי קשתות בעלות אותו המשקל:
לכל שתי קשתות ו , בהכרח Weights[e1] ≠ Weights[e2]
.
אנא הוכח או הפרך את הטענה הבאה: לגרף קיים עץ פורש מינימום יחידי.
שאלה 3
עריכה(~24 נקודות)
נתונה מטריצה בת עמודות ו שורות. כל כניסה במטריצה היא 0 או 1, ולכן כל שורה מתארת מספר בינרי בעל ביטים. השורות אינן מסודרות בסדר ידוע, אך ידוע שאין שתי שורות זהות. מכאן נובע שחסרה שורה להשלמת כל המספרים האפשריים בעלי ביטים.
דוגמה: עבור , ייתכן שהשורה הראשונה היא המערך |
אנא תאר אלגוריתם המקבל מטריצה כזו, ומדפיס את השורה החסרה. נסה להגיע לאלגוריתם שסיבוכיותו .
רמז נסה להפוך את הבעיה לבעיה קטנה בחצי (בערך) בזמן לינארי. |
שאלה 4
עריכה(~24 נקודות)
באפליקציה מסויימת, יש צורך במבנה נתונים התומך בפעולות Insert(pq, v)
, Delete-Min(pq)
, וMin(pq)
. משמעות פעולות אלו היא בדיוק זו של תור קדימויות - מדובר במבנה נתונים המשתמש באיזושהי השוואה כדי לספק את האיבר הקטן בכל עת.
- ידוע שבאפליקציה זו, מספר הפעולות הצפוי מסוג
Delete-Min(pq)
וMin(pq)
הוא זניח יחסית למספר הפעולות הצפוי מסוגInsert(pq, v)
. אנא הצע מימוש כך שInsert(pq, v)
יהיה יעיל ככל האפשר. מה סיבוכיות שתי הפעולות האחרות במימוש שהצעת? - האם ייתכן מימוש לתור קדימויות בו הן
Insert(pq, v)
והןDelete-Min(pq)
יעבדו בזמן ?
שימו לב: #בסעיף הראשון, עליך למצוא יעיל ככל האפשר לInsert(pq, v) . אין צורך למצוא מימוש יעיל במיוחד לשתי הפעולות האחרות.
|
שאלה 5
עריכה(~14 נקודות)
במסיבה כלשהי יש אנשים; חלקם לחץ ידיים זה עם זה. אנא הוכח שמספר האנשים שלחצו ידיים עם מספר אי-זוגי של אנשים - הוא זוגי.
דוגמה: נניח שבמסיבה יש שלשה אנשים: 1, 2, ו3, ורק 1 ו2 לחצו ידיים זה עם זה. יש שני אנשים שלחצו ידיים עם אדם אחד; אכן יש מספר זוגי (שניים) של אנשים שלחצו ידיים עם מספר אי-זוגי (אחת) של אנשים. |
רמז צייר גרף שבו כל אדם הוא צומת. מה יקרה אם תמחק צומת כלשהו והקשתות היוצאות ממנו? |