01/13 - Algorithms

‫מס' מחברת‪:‬‬
‫ת‪.‬ז‪:.‬‬
‫מבחן באלגוריתמים‬
‫סמסטר א' תשע"ג‪ ,‬מועד א'‬
‫תאריך‪ 31 :‬בינואר ‪2013‬‬
‫מרצה‪ :‬פרופ' מיכה שריר‬
‫מתרגלים‪ :‬רני הוד‪ ,‬שי ורדי‬
‫משך הבחינה‪ 3 :‬שעות‪.‬‬
‫חומר עזר מותר‪ :‬דף ‪ A4‬אחד‪ ,‬כתוב משני הצדדים‪.‬‬
‫במבחן ‪ 5‬שאלות‪ .‬יש לענות על כולן‪.‬‬
‫• תשובות נכונות ומלאות על ‪ 4‬מהשאלות יזכו אותך ב־‪ 90‬נקודות‪ ,‬ותשובות נכונות ומלאות על‬
‫כל השאלות ב־‪ 100‬נקודות‪.‬‬
‫• על התשובה לכל שאלה להופיע במסגרת המתאימה‪ .‬יש להשתדל לקצר בהסברים ולא לחרוג‬
‫מן המסגרות שהוקצו להם‪.‬‬
‫• מחברת הבחינה משמשת כטיוטא בלבד ולא תיבדק‪ ,‬אך יש להגישה עם המבחן‪.‬‬
‫• ודאו היטב את תשובתכם לפני כתיבתה בטופס המבחן‪ .‬בסוף הטופס מצורף זוג מסגרות נוסף‪,‬‬
‫לשימוש במקרי "חירום"‪.‬‬
‫• התשובה לכל שאלה העוסקת באלגוריתם צריכה להיות יעילה ככל האפשר‪ ,‬ומלווה בהסבר‬
‫מתאים‪.‬‬
‫• בכל השאלות המתייחסות לגרפים‪ ,‬אם לא מצוין אחרת‪ ,‬הכוונה לגרף פשוט )בלי לולאות ובלי‬
‫קשתות מקבילות(‪ .‬בנוסף‪ ,‬אם לא מצוין אחרת‪ ,‬כל גרף מיוצג ע"י רשימת שכנויות‪.‬‬
‫בהצלחה!‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫עמוד ‪ 1‬מתוך ‪9‬‬
‫מס' מחברת‪:‬‬
‫ת‪.‬ז‪:.‬‬
‫שאלה ‪1‬‬
‫נתון גרף לא מכוון )‪ .G = (V, E‬תארו אלגוריתם יעיל לחישוב קבוצת הצמתים ‪ U ⊆ V‬שנמצאים‬
‫על איזשהו מעגל פשוט ב‪.G-‬‬
‫)במילים אחרות‪ ,‬לכל ‪ u ∈ U‬יש מעגל פשוט כלשהו שעובר דרכו‪(.‬‬
‫יעילות‪:‬‬
‫אלגוריתם והסבר‪:‬‬
‫עמוד ‪ 2‬מתוך ‪9‬‬
‫מס' מחברת‪:‬‬
‫ת‪.‬ז‪:.‬‬
‫שאלה ‪2‬‬
‫נתון גרף מכוון )‪ G = (V, E‬על קבוצת הצמתים } ‪ V = {v1 , v2 , . . . , vn‬עם פונקציית משקל‬
‫‪ w : E → R‬וידוע שאין ב‪ G-‬מעגלים שליליים ביחס ל‪ .w-‬תארו אלגוריתם יעיל שמחשב‪ ,‬לכל‬
‫‪ ,1 ≤ i < j ≤ n‬את משקל המסלול הקל ביותר ‪ vi vj‬מבין המסלולים שלא עוברים באף אחד‬
‫מבין הצמתים } ‪.{vj+1 , vj+2 , . . . , vn‬‬
‫)כמובן שאם לזוג ‪ i, j‬מסוים קבוצת המסלולים הנ"ל ריקה‪ ,‬לא צריך לחשב מסלול זה‪(.‬‬
‫יעילות‪:‬‬
‫אלגוריתם והסבר‪:‬‬
‫עמוד ‪ 3‬מתוך ‪9‬‬
‫מס' מחברת‪:‬‬
‫ת‪.‬ז‪:.‬‬
‫שאלה ‪3‬‬
‫ע"י מטריצה ‪A ∈ Rm×n‬‬
‫נתונה‬
‫מערכת משוואות לינארית‪ n‬עם ‪ m‬משוואות ו‪ n-‬נעלמים המוגדרת ‬
‫‪m‬‬
‫¯‬
‫¯‬
‫ווקטור ‪ .b ∈ R‬נאמר שוקטור ‪ x¯ ∈ R‬הוא פתרון ‪-‬מקורב של המערכת ‪ A, b‬אם מתקיים‬
‫! ‬
‫‬
‫‪ m‬‬
‫‬
‫ = ‪x − ¯b i i=1‬‬
‫¯‪x − ¯b∞ = max A‬‬
‫¯‪. A‬‬
‫הראו כיצד ניתן להשתמש בתכנות לינארי כדי לחשב פתרון מקורב טוב ביותר )דהיינו‪- ,‬מקורב‬
‫עבור מינימלי(‪.‬‬
‫¯‬
‫)במילים אחרות‪ ,‬אנו רוצים שהסטייה המקסימלית של רכיבי ‪ A¯x‬מאיברי ‪ b‬המתאימים תהיה קטנה‬
‫ככל האפשר‪(.‬‬
‫הסבר‪:‬‬
‫עמוד ‪ 4‬מתוך ‪9‬‬
‫מס' מחברת‪:‬‬
‫ת‪.‬ז‪:.‬‬
‫שאלה ‪4‬‬
‫נתונה רשת זרימה )‪ G = (V, E‬עם קיבולים ‪ ,c : E → R+‬מקור ‪ s‬ובור ‪ .t‬תארו אלגוריתם יעיל‬
‫שמחשב‪ ,‬בהנתן זוג קשתות ‪ ,e1 , e2 ∈ E‬האם קיים חתך מינימלי ברשת שמכיל בדיוק אחת משתי‬
‫הקשתות ‪.e1 , e2‬‬
‫יעילות‪:‬‬
‫אלגוריתם והסבר‪:‬‬
‫עמוד ‪ 5‬מתוך ‪9‬‬
‫מס' מחברת‪:‬‬
‫ת‪.‬ז‪:.‬‬
‫שאלה ‪5‬‬
‫לקראת הבחירות בדמוקרטיה קטנה במערב התיכון‪ ,‬מתכנסים המועמדים של שתי הרשימות "אחדות־‬
‫משכננו" ו"התעסוקה" לצילום משותף‪ .‬כל רשימה מורכבת מ‪ n-‬מועמדים‪ ,‬נסמנם ‪a1 , a2 , . . . , an‬‬
‫ו‪ b1 , b2 , . . . , bn -‬בהתאמה ) ‪ a1‬הבכיר ביותר ו‪ an -‬הזוטר ביותר; כך גם ברשימה השנייה(‪ .‬בתמונה‬
‫יעמדו ‪ 2n‬המועמדים בשורה אחת‪ ,‬ויש לקבוע את הסדר שלהם בכפוף להנחיות הבאות‪:‬‬
‫• על־פי התקנון של מפלגת "אחדות־משכננו"‪ ,‬אסור לפרסם תמונה בה מועמד עומד מימין‬
‫למועמד בכיר ממנו )כלומר‪ a1 ,‬צריך לעמוד הכי מימין ו‪ an -‬הכי משמאל מבין ‪;(a1 , . . . , an‬‬
‫• על־פי התקנון של מפלגת "התעסוקה"‪ ,‬אסור לפרסם תמונה בה מועמד עומד משמאל למועמד‬
‫בכיר ממנו )כלומר‪ b1 ,‬צריכה לעמוד הכי משמאל ו‪ bn -‬הכי מימין מבין ‪;(b1 , . . . , bn‬‬
‫• לכל זוג סדור של מועמדים ‪) x, y‬לאו דווקא ממפלגות שונות( נתון סקר דעת קהל‪ ,‬הקובע‬
‫שאם ‪ x‬עומד בתמונה מייד לשמאלו של ‪ y‬אז )‪ L (x, y‬אנשים יעשו לה ‪ like‬בפייסבוק‪ .‬במילים‬
‫אחרות‪ ,‬עבור סדר ‪ c1 , c2 , . . . , c2n‬של המועמדים יתקבלו בסה"כ‬
‫) ‪L (c1 , c2 ) + L (c2 , c3 ) + · · · + L (c2n−1 , c2n‬‬
‫לייקים‪ .‬הטבלה ‪ L‬נתונה מראש‪.‬‬
‫תארו אלגוריתם יעיל שמחשב את סדר המועמדים כך שהתמונה תקבל מספר מירבי של לייקים‪.‬‬
‫משמעות לערכי האלכסון; יתרה מזאת‪,‬‬
‫הערה‪ :‬בהסתכלות על ‪ L‬כמטריצה ‪ ,2n × 2n‬שימו לב שאין‬
‫‬
‫‪Laa Lab‬‬
‫אם נפרק את ‪ L‬לארבעה בלוקים בגודל ‪ n × n‬כ"א‬
‫‪Lba Lbb‬‬
‫מעל האלכסון של ‪) Laa‬ובהתאמה‪ ,‬מתחת לאלכסון של ‪ (Lbb‬בגלל תקנוני המפלגות‪.‬‬
‫= ‪ L‬אז אין משמעות לערכים‬
‫‪‬‬
‫‪8‬‬
‫‪9‬‬
‫דוגמא‪ :‬עבור ‪ n = 2‬והקלט ‪‬‬
‫‪7‬‬
‫?‬
‫‪2‬‬
‫‪1‬‬
‫?‬
‫?‬
‫?‬
‫?‬
‫‪3‬‬
‫‪5‬‬
‫‪‬‬
‫?‬
‫‪‬‬
‫‬
‫‪6‬‬
‫‪ L = ‬יש ‪ 6 = 42‬אופציות‪:‬‬
‫‪4‬‬
‫‪0‬‬
‫‪a2 , a1 , b1 , b2 → 6 + 2 + 7‬‬
‫‪a2 , b1 , a1 , b2 → 1 + 4 + 8‬‬
‫‪b1 , a2 , a1 , b2 → 3 + 6 + 8‬‬
‫‪a2 , b1 , b2 , a1 → 1 + 7 + 0‬‬
‫‪b1 , a2 , b2 , a1 → 3 + 9 + 0‬‬
‫‪b1 , b2 , a2 , a1 → 7 + 5 + 6‬‬
‫והאופטימלית מביניהן היא האחרונה )עם ‪ 18‬לייקים(‪.‬‬
‫עמוד ‪ 6‬מתוך ‪9‬‬
‫מס' מחברת‪:‬‬
‫ת‪.‬ז‪:.‬‬
‫שאלה ‪) 5‬המשך(‬
‫יעילות‪:‬‬
‫אלגוריתם והסבר‪:‬‬
‫עמוד ‪ 7‬מתוך ‪9‬‬
‫ת‪.‬ז‪:.‬‬
‫מסגרת "חירום" לשאלה מספר‬
‫מס' מחברת‪:‬‬
‫‪ ,‬סעיף‬
‫‪:‬‬
‫עמוד ‪ 8‬מתוך ‪9‬‬
‫ת‪.‬ז‪:.‬‬
‫מסגרת "חירום" לשאלה מספר‬
‫מס' מחברת‪:‬‬
‫‪ ,‬סעיף‬
‫‪:‬‬
‫עמוד ‪ 9‬מתוך ‪9‬‬