אלגוריתמים - Algorithms
Transcription
אלגוריתמים - Algorithms
אלגוריתמים תרגיל בית 4 להגשה עד 23במאי הנחיה כללית :בכל שאלה בה אתם מציגים אלגוריתם ,יש להוכיח נכונות ולנתח את זמן הריצה .ניתן להסתמך על טענות שהוכחו בכיתה. ∈ ) (u, vונסמן בm- .1נתונים גרף מכוון ) G = (V, Eוהסגור הטרנזיטיבי שלו ) ∗ .G∗ = (V, Eיהיו u, v ∈ Vכך ש/ E - את מספר הקשתות שנוספו ל G∗ -כתוצאה מהוספת הקשת ) (u, vל.G- )א( בנו דוגמא לגרף Gעבורו ) .m = Ω(|V |2 )ב( תארו אלגוריתם יעיל )כתלות ב (|E ∗ | ,|V | ,m-לעדכון ∗.G .2נתון גרף מכוון ) G = (V, Eעל קבוצת הצמתים } V = {1, 2, . . . , nעם פונקציית משקל w : E → Rוידוע שאין בG- מעגלים שליליים ביחס ל .w-תארו אלגוריתם יעיל שמחשב ,לכל ,1 ≤ i < j ≤ nאת משקל המסלול הקל ביותר j i מבין המסלולים שלא עוברים באף אחד מבין הצמתים }.{j + 1, j + 2, . . . , n )כמובן שאם לזוג i, jמסוים קבוצת המסלולים הנ"ל ריקה ,לא צריך לחשב מסלול זה( .3בצעו שינוי באלגוריתם למציאת מק"בים המבוסס על כפל מטריצות ,כך שהוא יהפוך לאלגוריתם למציאת אורך המעגל השלילי הקצר ביותר )ביחס למס' הקשתות( בגרף .אין צורך למצוא את קשתות המעגל .תארו את סיבוכיות האלגוריתם ונתחו את נכונותו )כמו תמיד ,אין צורך לחזור על הוכחות שנלמדו בשיעור(. .4נתונים גרף מכוון ) ,G = (V, Eפונקצית משקל אי־שלילית w : E → R+וזוג צמתים .x, y ∈ Vתארו אלגוריתם u יעיל שמחשב לכל זוג צמתים u, v ∈ Vאת משקל המסלול הקל ביותר מבין המסלולים )הלאו דווקא פשוטים( v שעוברים דרך xו/או דרך .y אדומה 1 .5נתון גרף לא מכוון ) G = (V, Eעם פונקצית אורך .l : E → R+גרף זה מייצג את מפת כבישי הארץ .חיפושית יוצאת מצומת s ∈ Vלכיוון צומת t ∈ Vעם מיכל דלק מלא ,המספיק לנסיעה למרחק .Lבחלק מצמתי הגרף,U ⊆ V , ישנן תחנות דלק .תארו אלגוריתם יעיל ביותר לחישוב מסלול קצר ביותר בין sל t-כך שהמכונית לא נתקעת )קרי :לא נוסעת יותר ממרחק Lללא תדלוק(. .6נתון מערך של מספרים ממשיים a1 , a2 , ..., anומספר טבעי -d .d ≤ nחלוקה של המערך הינה חלוקה שלו ל d-מקטעים רציפים לא ריקים .נגדיר את המחיר של מקטע כסכום איבריו והמחיר של חלוקה כמחיר המקסימלי של מקטע שלה. תארו אלגוריתם יעיל אשר מוצא -dחלוקה עם מחיר מינימלי. .7שני שחקנים נבונים A 2 ,ו ,B-משחקים במשחק הבא :נתונה סדרה של nמספרים שלמים מסודרים בשורה משמאל לימין. השחקנים משחקים לסירוגין כשכל אחד בתורו לוקח את המספר הימני ביותר או את המספר השמאלי ביותר .השחקן Aמשחק ראשון .לאחר שנלקחו כל המספרים מחושב ערך המשחק להיות סכום המספרים ששחקן Aבחר פחות סכום המספרים ש B-בחר .מטרת שחקן Aהיא שערך המשחק יהא גדול ככל הניתן ומטרת שחקן Bהיא שערך המשחק יהיה נמוך ככל הניתן .תארו אלגוריתם יעיל שיחשב ,בהינתן סדרה באורך ,nאת ערך המשחק. דוגמא :אם הסדרה היא 6, 3, 3, 8, 2, 1אזי הערך הוא .7 = 6 − 3 − 3 + 8 − 2 + 1 .8בקפיטריה של אקו יש nמגשי אוכל ריקים .נתון כי מגש iהוא באורך liוברוחב .wiניתן למקם את מגש iמעל מגש j אם li ≤ ljוגם .wi ≤ wjעל כל מגש ניתן להניח ישירות רק מגש אחד )כלומר אסור למגש להכיל שני מגשים ישירות עליו ,זה לצד זה( .ניתן לסובב מגש ב־ 90מעלות על מנת שנוכל למקם אותו על מגש אחר ,אך כל המגשים צריכים להיות מקבילים לצירים )כלומר ,אסור לשים מגשים באלכסון ,ולכן סיבוב שקול להחלפה בין האורך והרוחב( .ניתן להניח כי 1הרכב ,לא החרק. 2כלומר ,משחקים אופטימלית תוך צפייה מראש של מהלכיו הסבירים של השחקן האחר. {li , wj }ni=1הם מספרים ממשיים חיוביים שונים .תארו אלגוריתם יעיל המחשב ערימה גדולה ככל האפשר של מגשים הניתנים למיקום אחד על השני. .9נתון עץ לא מכוון עם משקלים אי־שליליים על הקשתות .תארו אלגוריתם יעיל למציאת זיווג )כלומר :קבוצת קשתות שאין לאף שתיים מהן קצה משותף( בעל משקל מקסימלי בעץ .מספר הקשתות בזיווג אינו נדרש להיות מקסימלי.