אלגוריתמים - Algorithms
Transcription
אלגוריתמים - Algorithms
אלגוריתמים תרגיל בית 5 להגשה עד 18ליוני הנחיה כללית :בכל שאלה בה אתם מציגים אלגוריתם ,יש להוכיח נכונות ולנתח את זמן הריצה .ניתן להסתמך על טענות שהוכחו בכיתה. Sל k -חלקים זרים כאשר 1 .1 < k < n .1נסמן } S = {1, 2, . . . , nותהיינה } {A1 , . . . , Ak } , {B1 , . . . , Bkשתי חלוקות של תארו אלגוריתם יעיל לחישוב תת־קבוצה T ⊂ Sבת kאיברים החותכת את כל 2kהקבוצות )אם קיימת כזו(; כלומר, לכל 1 ≤ i ≤ nמתקיים ∅ =.Bi ∩ T 6= ∅ ,Ai ∩ T 6 .2נתון גרף לא מכוון ) .G = (V, Eתארו אלגוריתם יעיל המכוון את קשתות הגרף כך שלכל צומת דרגת יציאה לפחות 3 )או מודיע שלא ניתן לעשות זאת(. .3נתונים גרף קשיר ולא מכוון ) ,G = (V, Eפונקצית משקל ,w : E → Rקשת ,e ∈ Eומספר שלם .k > 0תארו אלגוריתם יעיל ככל האפשר שיקבע האם ניתן להסיר מן הגרף לכל היותר kקשתות ,כך שהקשת eתהיה שייכת לעץ פורש מינימלי של הגרף שיתקבל. רמז :מומלץ להשתמש באלגוריתם שראינו באחד מהתירגולים בנושא זרימה. .4שי ואילן מחליטים לפרוש בשיא מחיי האקדמיה ולנסות להפיק סרט קולנוע .בידם רשימה } A = {a1 , a2 , ..., an של שחקנים אשר מוכנים להשתתף בסרט .שחקן aiדורש שכר piעבור השתתפותו בסרט .בנוסף ,ישנה קבוצה } B = {b1 , b2 , ..., bmשל משקיעים המעוניינים להשקיע בסרט .משקיע bjמוכן להשקיע בסרט מימון בשווי ,qjאבל רק בתנאי שכל השחקנים האהובים עליו ישתתפו בסרט .נסמן ב Aj ⊆ A-את קבוצת השחקנים האהובים על משקיע .bjתארו אלגוריתם ליהוק יעיל שימצא בחירת שחקנים ומשקיעים המניבה רווח הפקה )קרי :סך המימון שהתקבל פחות עלויות השכר לשחקנים שהועסקו( מירבי. רמז :הגדירו רשת זרימה והרהרו במשמעות קיבול החתך המינימלי. .5נתון מערך של מספרים ממשיים a1 , a2 , ..., anומספר טבעי -d .d ≤ nחלוקה של המערך הינה חלוקה שלו ל d-מקטעים רציפים לא ריקים .נגדיר את המחיר של מקטע כסכום איבריו והמחיר של חלוקה כמחיר המקסימלי של מקטע שלה. תארו אלגוריתם יעיל אשר מוצא -dחלוקה עם מחיר מינימלי. .6שני שחקנים נבונים A 2 ,ו ,B-משחקים במשחק הבא :נתונה סדרה של nמספרים שלמים מסודרים בשורה משמאל לימין. השחקנים משחקים לסירוגין כשכל אחד בתורו לוקח את המספר הימני ביותר או את המספר השמאלי ביותר .השחקן Aמשחק ראשון .לאחר שנלקחו כל המספרים מחושב ערך המשחק להיות סכום המספרים ששחקן Aבחר פחות סכום המספרים ש B-בחר .מטרת שחקן Aהיא שערך המשחק יהא גדול ככל הניתן ומטרת שחקן Bהיא שערך המשחק יהיה נמוך ככל הניתן .תארו אלגוריתם יעיל שיחשב ,בהינתן סדרה באורך ,nאת ערך המשחק. דוגמא :אם הסדרה היא 6, 3, 3, 8, 2, 1אזי הערך הוא .7 = 6 − 3 − 3 + 8 − 2 + 1 .7בקפיטריה של אקו יש nמגשי אוכל ריקים .נתון כי מגש iהוא באורך liוברוחב .wiניתן למקם את מגש iמעל מגש j אם li ≤ ljוגם .wi ≤ wjעל כל מגש ניתן להניח ישירות רק מגש אחד )כלומר אסור למגש להכיל שני מגשים ישירות עליו ,זה לצד זה( .ניתן לסובב מגש ב־ 90מעלות על מנת שנוכל למקם אותו על מגש אחר ,אך כל המגשים צריכים להיות מקבילים לצירים )כלומר ,אסור לשים מגשים באלכסון ,ולכן סיבוב שקול להחלפה בין האורך והרוחב( .ניתן להניח כי {li , wj }ni=1הם מספרים ממשיים חיוביים שונים .תארו אלגוריתם יעיל המחשב ערימה גדולה ככל האפשר של מגשים הניתנים למיקום אחד על השני. 1במילים אחרות ki=1 Ai = ki=1 Bi = S ,ולכל .Ai ∩ Aj = Bi ∩ Bj = ∅ ,1 ≤ i < j ≤ k 2כלומר ,משחקים אופטימלית תוך צפייה מראש של מהלכיו הסבירים של השחקן האחר. S S .8נתונים nמטבעות ,כולם שווי משקל פרט לאחד שהוא כבד יותר .החנווני במכולת גובה מחיר ) p (sעבור כל שימוש במאזניים שלו לשקילת sמטבעות כלשהם מול sמטבעות אחרים )כאשר שקילה מודיעה לנו איזה צד יותר כבד ,או קובעת שלשתי הקבוצות אותו משקל( .ניתן להניח כי pפונקציה חיובית מונוטונית לא יורדת. )א( תארו אלגוריתם יעיל ככל האפשר המקבל את המחירון pומחשב את העלות המינימלית של מציאת המטבע הכבד. )ב( שפרו את האלגוריתם כך שיחזיר גם את אוסף השקילות המתאים לעלות זו. הערה :שימו לב כי כל שקילה מתבצעת לאחר שידועות תוצאות השקילות הקודמות.