Professional Documents
Culture Documents
מבחן א'
שאלה 1
( הקיפו את התשובה הנכונה לגבי כל אחת מהטענות ) הוכיחו או הפריכו כל אחד מבין הסעיפים הבאים :
.1אם באלגוריתם של קרוסקל ,ממיינים את הקשתות בסדר יורד ולא בסדר עולה ,אז מתקבל עץ פורש מקסימלי.
1
.3אם בגרף מכוון הופכים כל קדקוד uלקשת , uinuoutומחברים כל קשת שנכנסה אל , uאל , uinוכל קשת
שיצאה מ , u -מוציאים מ , uout -אז מסלול המילטון בגרף המקורי גורר קיום מסלול אוילר בגרף החדש .
.4אם בגרף מכוון הופכים כל קדקוד uלקשת , uinuoutומחברים כל קשת שנכנסה ,אל uאל , uinוכל קשת
שיצאה מ , u -מוציאים מ , uout -אז מסלול אוילר בגרף החדש גורר קיום מסלול המילטון בגרף המקורי .
2
שאלה 2
נתון גרף מכוון ) , G = (V,Eקדקודים s,tבגרף ופונקצית משקל ממשית על קשתותיו . w : E ℝ
תארו אלגוריתם יעיל ,המוצא את גרף כל המסלולים הקלים ביותר מ s -ל , t -שמספר קשתותיהם אי-זוגי.
הוכיחו נכונות האלגוריתם וחשבו את סבוכיותו .
3
שאלה 3
נתון גרף לא מכוון פשוט וקשיר ) , G = (V,Eומשקלים ממשיים w : V ℝעל הקדקודים.
תארו אלגוריתם יעיל ,המוצא עץ פורש , Tהמביא למינימום את ), vV d'(v)w(v
הוכיחו נכונותו וחשבו את סבוכיותו . כאשר ) d'(vהיא דרגת vבעץ . T
4
שאלה 4
נתונה רשת זרימה ) G = (V,Eעם קיבולים , +c : E ℝמקור sובור , tוקשת ) e = (u,vברשת.
תארו אלגוריתם יעיל ,הקובע האם כל זרימה מקסימלית ברשת ,קובעת על eזרימה חיובית.
הוכיחו את נכונות האלגוריתם וחשבו את סבוכיותו.
שאלה 5
תארו אלגוריתם תכנות דינאמי ,המקבל את מספר האיברים nשל הקבוצה }, A = {1,2,….,n
וקובע מהו מספר תת-הקבוצות של , Aשאינן מכילות אף זוג מספרים עוקבים .
הוכיחו את נכונות האלגוריתם וחשבו את סבוכיותו.
5
6
מבחן ב'
שאלה 1
( הקיפו את התשובה הנכונה לגבי כל אחת מהטענות ) הוכיחו או הפריכו כל אחד מבין הסעיפים הבאים :
.1קיים עפ"מ שאינו כולל את הקשת הכבדה ביותר של מעגל נתון .
.2כל עפ"מ אינו כולל את הקשת הכבדה ביותר של מעגל נתון .
7
שאלה 2
נתון טקסט המכיל את התוים a,b,cבלבד .ידוע ש a -מופיע 10פעמים בטקסט b ,מופיע 8פעמים בטקסט ,ו c -מופיע
3פעמים בטקסט .
.1כמה קודי הופמן שונים יכולים להתקבל על ידי הפעלת אלגוריתם הופמן על קובץ זה ?
קודי הופמן שונים. __________4 תשובה :יכולים להתקבל
.3מהו נפח הטקסט המקודד שיתקבל על ידי הפעלת אלגוריתם הופמן על הטקסט ?
( בחרו אחת משתי האפשרויות הבאות וסמנו אותה ב. - תשובה :
אם בחרתם באפשרות הראשונה ,השלימו את החסר )
ביטים ______32 □ נפח הטקסט המקודד זהה לכל אחד מקודי הופמן וערכו
□ נפח הטקסט המקודד שונה לכל אחד מקודי הופמן
.4אם ידוע שהטקסט המקודד מכיל 19פעמים את הביט , 1איך נראה הקוד שהתקבל על ידי הפעלת אלגוריתם
הופמן ?
תשובה :
____a = __0 __b = __11 c = __10 קוד הופמן שהתקבל במקרה זה הוא :
8
שאלה 3
נתון גרף מכוון ) G=(V,Eולכל קשת eזוג משקלים () ,)a(e),b(eשערכו ( )1-,0( ,)0,0או (.)1,0-
תארו אלגוריתם יעיל ככל האפשר ,הבודק אם קיים ב G -מעגל (לא בהכרח פשוט) ,
כך שסכום רכיבי ה a -שלו שלילי וגם סכום רכיבי ה b -שלו שלילי.
הוכיחו את נכונות האלגוריתם וחשבו את סבוכיותו.
9
שאלה 4
נתון גרף מכוון ) , G = (V,Eופונקצית משקל ממשית על קשתותיו , w : E ℝוכן נתון קדקוד . sV
שנו את אלגוריתם בלמן-פורד ,כך שיציב -על כל קדקוד של , Vשהמרחק מ s -אליו איננו חסום מלמטה
( כלומר ,שלא קיים מסלול קל ביותר מ s -אליו ) .
הוכיחו את נכונות האלגוריתם וחשבו את סבוכיותו.
שאלה 5
10
נתונה רשת זרימה עם קיבולים שלמים ופונקצית זרימה מקסימלית fברשת .נניח שמקטינים את הקיבול
של קשת מסוימת ( )u,vב.1-
תארו אלגוריתם יעיל ככל האפשר שמחשב את הזרימה המקסימלית ברשת החדשה.
הוכיחו את נכונות האלגוריתם וחשבו את סבוכיותו.
11
מבחן ג'
שאלה 1
לכל אחד מהסעיפים הבאים ,הקיפו את התשובה הנכונה בדפי התשובון :
.1אם נשתמש במחסנית במקום בתור ,כדי לממש את אלגוריתם , BFSאז הרמות שיקבע BFSעל קדקודי הגרף ,
כבר לא ייצגו בהכרח את אורכי המסלולים הקצרים ביותר מקדקוד ההתחלה אל קדקודי הגרף .
.2קיימות בעיות שניתן לפותרן באמצעות , DFSאבל ניתן לפותרן גם באמצעות . BFS
.3האלגוריתם למיון טופולוגי של גרף מכוון חסר מעגלים מכוונים ,הוא אלגוריתם אופטימלי .
.4מטריצת השכנויות ליישום גרף לא מכוון היא בהכרח מטריצה סימטרית .
.5לגרף מכוון בן nקדקודים יש מסלול אוילר ,המהוה מסלול פשוט ,אם ורק אם הגרף הוא . Pn
תשובה :כל הקביעות נכונות .
שאלה 2
.1מפעילים את אלגוריתם הופמן על תוים ששכיחותם יוצרת את הסידרה הבאה
. 10 , 5 , 5 , 3 , 2 , 2 , 2 , 1מהו נפח הטקסט המקודד ? תשובה82 :
12
התייחסו אל העץ הנתון הבא בסעיפים ג' ,ד' :
13
.3הפעילו את אלגוריתם DFSעל הגרף הנתון ,החל מהקדקוד .7
בכל פעם שצריך לבחור קדקוד במהלך ריצת ה , DFS -בחרו בקדקוד השמאלי ביותר האפשרי .
רשמו בתוך הקדקוד את מספר ההגעה שלו ,ומחוץ לקדקוד את מספר הסיום שלו .
.4חשבו את הקוטר של העץ הנתון ,והציגו מסלול בעץ שאורכו כאורך הקוטר של העץ .
תשובה 6 :קשתות או 7קדקודים
14
שאלה 3
הפעילו את אלגוריתם התכנות דינאמי לכפל מטריצות ,כדי לחשב כיצד להכפיל את המטריצות הבאות ,
מלאו את טבלאות החישובים , T , Pשהוגדרו על ידי האלגוריתם , תוך שימוש במספר מינימלי של פעולות .
והציגו את הסדר המומלץ להכפלת המטריצות ( באמצעות הקפת פעולת הכפל בין המטריצות בסוגריים ) .
. A35 A52 A21 A13 המטריצות שיש לכפול הן מהסדר הבא:
15
שאלה 4
נתון גרף מכוון ) , G = (V,Eקדקודים s,tבגרף ,ופונקצית משקלים חיובית על קשתותיו . +w : E ℝ
קשת x yנקראת "שימושית" ,אם קיים מסלול קל ביותר מ s -אל , yשקשתו האחרונה היא . x y
.1הוכיחו שמסלול מ s -אל tמכיל רק קשתות שימושיות אם ורק אם הוא מסלול קל ביותר מ s -אל . t
16
.2תארו אלגוריתם יעיל למציאת כל הקשתות השימושיות של הגרף Gהנתון .
17
שאלה 5
נתון גרף לא מכוון קשיר ופשוט ) , G = (V,Eשכל אחת מקשתותיו צבועה בכחול או בלבן או באדום .
תארו אלגוריתם יעיל ,למציאת עץ פורש ,המכיל את כל הקשתות הלבנות ,ומספר מקסימלי של קשתות כחולות ,
הוכיחו את נכונות האלגוריתם וחשבו את סבוכיותו . אם קיים עץ כזה .
18
שאלה 6
נתונה רשת זרימה ) G = (V,Eעם מקור sבור tופונקצית קיבולים חיובית cעל הקשתות .
נאמר שקיימת זרימה "על ריק" בגודל fברשת ,אם הזרימה fמקיימת ). f = fin(s) = fout(s
תארו אלגוריתם יעיל למציאת הזרימה המקסימלית שניתן להזרים "על ריק" ברשת . G
הוכיחו את נכונות האלגוריתם וחשבו את סבוכיותו .
מבחן ד'
19
שאלה 1
לכל אחד מהסעיפים הבאים ,הקיפו את התשובה הנכונה בדפי התשובון ,ונמקו :
.1נתון גרף לא מכוון ,וקדקודים s,u,vבגרף .במהלך ריצת BFSעל הגרף החל מקדקוד , s
הקדקוד uהפך להיות ההורה של הקדקוד vבעץ ה. BFS -
(סמנו אותה בדף התשובון ונמקו) : איזו מהטענות הבאות היא הטענה הנכונה :
.1תיתכן הרצת BFSעל הגרף החל מקדקוד , vשבה u,vאינם סמוכים בעץ BFSזה .
.2תיתכן הרצת BFSעל הגרף החל מקדקוד , sשבה u,vאינם סמוכים בעץ BFSזה.
.3תיתכן הרצת BFSעל הגרף החל מקדקוד , uשבה הרמה של vגדולה מ. 1 -
.4אף אחת מהטענות הקודמות איננה נכונה .
.2נתון גרף לא מכוון וקשיר ,וקדקוד sבגרף .במהלך ריצת DFSעל הגרף החל מקדקוד , s
מתקבל עץ פורש ,שבו לקדקוד , u , usיש בדיוק 2ילדים . v1,v2
(סמנו אותה בדף התשובון ונמקו) : איזו מהטענות הבאות היא הטענה הנכונה :
20
שאלה 2
נתון גרף לא מכוון ,קשיר ופשוט ,ופונקציה משקלים ממשית על קשתותיו .
הוכיחו או הפריכו כל אחד מהסעיפים הבאים :
.1אלגוריתם פרים עלול לא למצוא עץ פורש מינימלי אם חלק מקשתות הגרף שליליות .
.2אם לגרף אין גשרים ,אז הסרת עץ פורש מינימלי מהגרף ,לא תנתק אותו .
.3אם vקדקוד כלשהו ו e -הקשת הקלה ביותר הסמוכה אל , vאז יש עץ פורש מינימלי המכיל את . e
21
.4אם vקדקוד כלשהו ו e -הקשת הקלה ביותר הסמוכה אל , vאז כל עץ פורש מינימלי בהכרח מכיל את . e
שאלה 3
.1נתונים שלושה גרפי אוילר לא מכוונים ,שזרים זה לזה , G1, G2, G3 ,
ונתונים שלושה קדקודים . xG1 , yG2 , zG3 עם מעגלי אוילר H1, H2, H3בהתאמה ,
כמו כן הוסיפו 3קשתות (. )z,x( , )y,z( , )x,y
הציגו מעגל אוילר של } ). G1 G2 G3 { (x,y) , (y,z) , (z,x
הערה :ניתן להעזר בהגדרה הבאה H(u) :יסמן טיול על מעגל אוילר ,המתחיל ומסתיים בקדקוד uשל .H
22
באמצעות בנית משולש פסקל . .2חשבו את
.3נתון גרף מכוון חסר מעגלים מכוונים ) G = (V,Eשבו מספר הקדקודים הוא . n
הציגו פונקציה הפיכה } , f : V {1,2,3,….,nכך שלכל קשת ( )x,yבגרף יתקיים ). f(x) < f(y
23
.4מפעילים את אלגוריתם הופמן על התוים , a , b , cששכיחותם בהתאמה היא . 7 , 5 , 11
מהו הקוד של כל אחת מהאותיות ,אם ידוע שמספר המופעים של הביט 0בטקסט המקודד ,
הוא המינימלי האפשרי ?
24
שאלה 4
נתון גרף מכוון ) , G = (V,Eקדקודים s,tבגרף ,ופונקצית משקלים חיובית על קשתותיו . +w : E ℝ
בנוסף ,כל קשת צבועה באדום או בכחול .
תארו אלגוריתם יעיל למציאת המסלול הקל ביותר מ s -לכל קדקוד ,העובר דרך קשת אדומה אחת לפחות .
25
שאלה 5
נתונה רשת זרימה ) G = (V,Eעם מקור sבור , tופונקצית קיבולים חיובית cעל הקשתות ,
ונתונה קבוצה }. X V \ {s,t
תארו אלגוריתם יעיל לבדיקה האם קיימת זרימה מקסימלית ,שלא עוברת דרך אף אחד מקדקודי . X
הוכיחו את נכונות האלגוריתם וחשבו את סבוכיותו .
שאלה 6
26
נתונות nנקודות על הישר הממשי .
תארו אלגוריתם יעיל לכיסוי הנקודות באמצעות מספר מינימלי של קטעי יחידה (כלומר קטעים סגורים באורך . )1
הוכיחו את נכונות האלגוריתם וחשבו את סבוכיותו .
27
מבחן ה'
שאלה 1
נתון גרף לא מכוון לאו דוקא קשיר ,שבו דרגת כל קדקוד היא 2בדיוק.
תארו אלגוריתם יעיל הבודק אם קיים מעגל המילטון בגרף.
הוכיחו את נכונותו וחשבו את סבוכיותו.
פתרון 1
האלגוריתם :נפעיל את האלגוריתם לבדיקה האם הגרף קשיר .
נכונות :גרף לא מכוון שכל דרגותיו 2הוא אוסף של מעגלים פשוטים ,
לכן יש לו מעגל המילטון אם ורק אם הוא מעגל יחיד ,
כלומר במקרה זה ,גרף קשיר .
סבוכיות. (E+V) = (V+V) = (V) :
שאלה 2
א .נתון האלגוריתם הבא על גרף מכוון :
.1נפעיל DFSמקדקוד כלשהו ,ונקבל רשימת זמני סיום יורדת.
.2נפעיל DFSנוסף על הגרף לפי סדר רשימת זמני הסיום היורדת שקיבלנו בסעיף הקודם.
הוכיחו בקצרה . מה מייצג מספר עצי ה DFS-השני ? ( הקיפו את התשובה הנכונה ) .
א .את מספר המקורות בגרף העל של רכיבי קשירות חזקה.
ב .את מספר הבורות בגרף העל של רכיבי קשירות חזקה.
ג .את מספר רכיבי הקשירות החזקה בגרף.
ד .את מספר רכיבי הקשירות החזקה בגרף ההפוך.
ה .אף אחת מארבע האפשרויות .
תשובה:
א .את מספר המקורות בגרף העל של רכיבי קשירות חזקה.
ב .את מספר הבורות בגרף העל של רכיבי קשירות חזקה.
ג .את מספר רכיבי הקשירות החזקה בגרף.
ד .את מספר רכיבי הקשירות החזקה בגרף ההפוך.
ה .אף אחת מארבע האפשרויות .
28
.3נתון סולם בעל nשלבים .הצבע מטפס על הסולם ,בצעדים של 2שלבים או 3שלבים בכל פעם.
תארו אלגוריתם יעיל הבודק בכמה דרכים הוא יכול לטפס על הסולם כדי להגיע מהריצפה אל פיסגת הסולם.
פתרון:
נחשב את התשובה ) f(nבאמצעות אלגוריתם התכנות דינאמי הבא :
)f(n) = f(n-2) + f(n-3 n>0
f(0) = 1
f(n) = 0 n<0
אלגוריתם התכנות דינאמי ישתמש במערך וזמן הריצה לכן ). (n
שאלה 3
נתון גרף לא מכוון קשיר עם פונקצית משקל ממשית על קשתותיו.
.1תארו אלגוריתם יעיל למציאת עץ פורש מינימלי ,בעל מספר מינימלי של קשתות שליליות.
הוכיחו את נכונות האלגוריתם ,ורשמו את סבוכיותו.
פתרון
.האלגוריתם :נמצא עץ פורש מינימלי באמצעות פרים או קרוסקל
.נכונות :הוכחנו שלכל העפ"מים אותה סדרת משקלים ,לכן לכולם אותו מספר של קשתות שליליות
סבוכיות. O(ElogV) :
ב .תארו אלגוריתם יעיל למציאת עץ פורש מינימלי ,בעל מספר מינימלי של קשתות שליליות ,בהנחה שנתון גם עץ פורש
מינימלי Tשל הגרף.
הוכיחו את נכונות האלגוריתם ,ורשמו את סבוכיותו.
פתרון
האלגוריתם :נחזיר את . T
נכונות :כי Tהוא עץ פורש מינימלי.
סבוכיות . (1) :
שאלה 4
תארו אלגוריתם יעיל למציאת זווג מקסימלי בגרף כמעט דו-צדדי.
(להזכירכם ,גרף כמעט דו-צדדי הוא גרף דו-צדדי או גרף שהסרת קשת אחת ממנו הופכת אותו לדו-צדדי).
הוכיחו את נכונותו וחשבו את סבוכיותו.
29
פתרון
האלגוריתם:
.1נפעיל את האלגוריתמים שלמדנו לבדיקה האם הגרף הוא דו-צדדי או למציאת הקשת שהסרתה תהפוך אותו
לדו-צדדי.
.2אם הגרף הוא דו-צדדי ,נפעיל את האלגוריתם למציאת זווג מקסימלי בגרף כמעט דו-צדדי.
.3אחרת :
נמצא זווג ראשון כך: .4
נסמן ב e -את הקשת שהסרתה תהפוך את הגרף לדן-צדדי . .5
נסיר את eמהגרף . .6
נמצא זווג מקסימלי בגרף הדן-צדדי הנותר . .7
נמצא זווג שני כך: .8
נסיר מ G -את כל הקשתות הסמוכות לקדקודי הקצה של ( eכולל . ) e .9
נמצא זווג מקסימלי בגרף הדו-צדדי הנותר . .10
נוסיף לזווג את . e .11
.12נחזיר את הזווג הגדול מבין 2הזווגים שמצאנו .
נכונות :מצאנו את הזווג המקסימלי שלא כולל את eואת הזווג המקסימלי שכן כולל את , e
לכן התשובה היא הגדול מביניהם .
סבוכיות:
מציאת הקשת ,שהסרתה הופכת את הגרף לדן-צדדי ,לוקחת זמן ). (EV -
מציאת זווג מקסימלי לוקח זמן ). O(EV -
לכן הסבוכיות היא ). O(EV
שאלה 5
נתון גרף מכוון ולו משקל שלילי ממשי נתון על כל קשת ,ונתון קדקוד sבגרף.
תארו אלגוריתם יעיל למציאת המסלול הארוך ביותר מ s -לכל קדקוד אחר בגרף.
הוכיחו את נכונותו וחשבו את סבוכיותו.
פתרון
האלגוריתם :נכפיל כל קשת פי 1-ונפעיל את דייקסטרה .
נכונות :יתקבל גרף שכל משקליו חיוביים .מסלול בו הוא קל ביותר אם ורק אם במשקלים המקוריים הוא כבד ביותר .
סבוכיות O(ElogV) :כשל דייקסטרה .
שאלה 6
נתון גרף לא מכוון וקשיר ) . G = (V,Eתארו אלגוריתם יעיל הבודק אם קיים מסלול פשוט העובר דרך כל גשרי הגרף.
הוכיחו את נכונותו וחשבו את סבוכיותו.
30
פתרון :
האלגוריתם:
)O(E+V .1נפעיל את האלגוריתם למציאת כל גשרי הגרף
.2נסיר את הגשרים מ G -לקבלת הגרף . 'G
.3נבנה גרף חדש Hשקדקודיו הם גשרי , Gוקשת בין כל 2גשרים הסמוכים לאותו רכיב קשירות של . 'G
.4יש מסלול פשוט העובר דרך כל גשרי הגרף של Gאם ורק אם Hהוא מסלול פשוט .
נכונות :במסלול פשוט של , Gהעובר דרך כל גשרי הגרף ,אם נחליף כל קטע בין 2גשרים ,בקשת אחת ,וכל גשר
בקדקוד ,יתקבל בדיוק הגרף . Hלכן יש ב G -מבלול כנדרש אם ורק אם Hהוא מסלול פשוט .
סבוכיות :כל שלב באלגוריתם לוקח זמן ) (E+Vולכן ). (E+V
סבוכיות O(ElogV) :כשל דייקסטרה .
שאלה 7
תארו אלגוריתם יעיל למציאת מספר נתון גרף מכוון ,פונקצית משקל חיובית ממש על קשתותיו ,וקדקוד sבגרף.
המסלולים הקצרים ביותר מ s -ל , t -לאחר שבוצע אלגוריתם דייקסטרה מ.s -
פתרון
האלגוריתם:
.1נמצא את גרף המק"בים מ s -ל. t -
.2נחשב את מספר המק"בים ) ,M(vמ s -לכל קדקוד , vתוך כדי מעבר על הקדקודים בגרף המק"בים ,שכבה
אחר שכבה ,באופן הבא :
M(s) = 0 .1
vÎV ,לכל קדקוד uש v -הוא שכנו בגרף המק"בים (כלומר לכל )M(v) = åM(u .2
ברור שכל הקדקודים uהללו ימצאו קיימת הקשת uàvבגרף המק"בים).
בשכבה שלפני , vולכן נח לחשב ערכים אלה מתוך הגרף ההפוך לגרף המק"בים ,בסדר
שכבות יורד.
אז סבוכיות :מכיוון שהאלגוריתם כולל שני חלקים לינאריים (מציאת גרף המק"בים ומעבר על הגרף ההפוך לו) ,
סיבוכיותו לינארית ( ) , ) O(E+Vלמרות שמספר המסלולים האפשריים מ s-לכל קדקוד עלול להיות אקספוננציאלי!
31