You are on page 1of 25

‫ה פ ת ו ח ה‬ ‫‪ ‬ה א ו נ י ב ר ס י ט ה‬

‫‪20417‬‬
‫אלגוריתמים‬
‫חוברת הקורס סתיו ‪2023‬א‬

‫כתב‪ :‬ד"ר אסף נוסבוים‬

‫אוקטובר ‪ – 2022‬סמסטר סתיו – תשפ"ג‬

‫‪1‬‬
‫פנימי – לא להפצה‪.‬‬

‫‪ ‬כל הזכויות שמורות לאוניברסיטה הפתוחה‪.‬‬

‫‪2‬‬
‫תוכן העניינים‬

‫‪5‬‬ ‫אל הסטודנט‬


‫‪7‬‬ ‫‪ .1‬לוח זמנים ופעילויות‬
‫‪9‬‬ ‫‪ .2‬התנאים לקבלת נקודות זכות‬
‫‪11‬‬ ‫ממ"ן ‪11‬‬
‫‪13‬‬ ‫ממ"ן ‪12‬‬
‫‪15‬‬ ‫ממ"ן ‪13‬‬
‫‪19‬‬ ‫ממ"ן ‪14‬‬
‫‪23‬‬ ‫ממ"ן ‪15‬‬

‫‪3‬‬
4
‫אל הסטודנט‬

‫אני מקדם בברכה את הצטרפותך לקורס "אלגוריתמים"‪.‬‬

‫בחוברת זו תמצא את לוח זמנים ופעילויות‪ ,‬תנאים לקבלת נקודות זכות ומטלות‪ .‬תאריכי‬
‫המפגשים בקורס יישלחו בהמשך‪ .‬וודאו בבקשה שקראתם באתר הקורס את תאור המנהלות‪.‬‬

‫לקורס קיים אתר באינטרנט בו תמצאו חומרי למידה נוספים‪ .‬בנוסף‪ ,‬האתר מהווה עבורכם ערוץ‬
‫תקשורת עם צוות ההוראה ועם סטודנטים אחרים בקורס‪ .‬פרטים על למידה מתוקשבת ואתר‬
‫הקורס‪ ,‬תמצאו באתר שה"ם בכתובת‪ .http://telem.openu.ac.il :‬מידע על שירותי ספרייה‬
‫ומקורות מידע שהאוניברסיטה מעמידה לרשותכם‪ ,‬תמצאו באתר הספריה באינטרנט‬
‫‪ .www.openu.ac.il/Library‬ניתן לפנות אלי בשעות הקבלה הטלפונית (שתפורסם באתר החל‬
‫מפתיחת הסמסטר ‪ ,)09-7781222‬או במייל‪ .assaf.nussbaum@gmail.com :‬לצורך בירורים‬
‫אדמיניסטרטיביים נא לפנות לזמירה בטלפון‪.09-7781220 :‬‬

‫לתשומת לב הסטודנטים הלומדים בחו"ל‪:‬‬

‫למרות הריחוק הפיסי הגדול‪ ,‬נשתדל לשמור אתכם על קשרים הדוקים ולעמוד לרשותכם ככל‬
‫האפשר‪.‬‬
‫הפרטים החיוניים על הקורס נכללים בחוברת הקורס וכן באתר הקורס‪.‬‬
‫מומלץ מאד להשתמש באתר הקורס ובכל אמצעי העזר שבו וכמובן לפנות אלינו במידת הצורך‪.‬‬

‫אני מאחל לכם לימוד פורה ומהנה‪.‬‬

‫בברכה‪,‬‬

‫ד"ר אסף נוסבוים‬


‫מרכז הקורס‬

‫‪5‬‬
6
‫ופעילויות (‪2023/ 20417‬א)‬ ‫‪.‬לוח זמנים‬
‫תאריך אחרון‬ ‫מפגשי‬ ‫יחידת הלימוד‬ ‫תאריכי‬ ‫שבוע‬
‫להגשת המטלה‬ ‫ההנחיה‬ ‫המומלצת‬ ‫שבוע הלימוד‬ ‫הלימוד‬

‫‪28.10.2022-23.10.2022‬‬ ‫‪1‬‬
‫פרקים ‪1,2‬‬

‫‪04.11.2022-30.10.2022‬‬
‫פרק ‪3‬‬ ‫‪2‬‬

‫ממ"ן ‪11‬‬ ‫‪11.11.2022-6.11.2022‬‬ ‫‪3‬‬


‫"‬
‫‪11.11.2022‬‬

‫‪18.11.2022-13.11.2022‬‬ ‫‪4‬‬
‫פרק ‪4‬‬

‫ממ"ן ‪12‬‬ ‫‪25.11.2022-20.11.2022‬‬


‫"‬ ‫‪5‬‬
‫‪25.11.2022‬‬

‫‪02.12.2022-27.11.2022‬‬ ‫‪6‬‬

‫‪09.12.2022-04.12.2022‬‬ ‫‪7‬‬
‫פרק ‪5‬‬

‫ממ"ן ‪13‬‬ ‫‪16.12.2022-11.12.2022‬‬


‫"‬ ‫‪8‬‬
‫‪16.12.2022‬‬

‫* התאריכים המדויקים של המפגשים הקבוצתיים מופיעים ב"לוח מפגשים ומנחים"‪.‬‬

‫‪7‬‬
‫לוח זמנים ופעילויות ‪ -‬המשך‬
‫תאריך אחרון‬ ‫מפגשי‬ ‫יחידת הלימוד‬ ‫תאריכי‬ ‫שבוע‬
‫להגשת המטלה‬ ‫ההנחייה‬ ‫המומלצת‬ ‫שבוע הלימוד‬ ‫הלימוד‬

‫‪23.12.2022-18.12.2022‬‬ ‫‪9‬‬
‫פרק ‪6‬‬
‫(ב‪-‬ו חנוכה)‬

‫‪30.12.2022-25.12.2022‬‬
‫"‬ ‫‪10‬‬
‫(א‪-‬ב חנוכה)‬

‫ממ"ן ‪14‬‬ ‫‪06.01.2023-01.01.2023‬‬


‫"‬ ‫‪11‬‬
‫‪06.01.2023‬‬

‫פרק ‪7‬‬ ‫‪13.01.2023-08.01.2023‬‬ ‫‪12‬‬

‫"‬ ‫‪20.01.2023-15.01.2023‬‬ ‫‪13‬‬

‫ממ"ן ‪15‬‬ ‫‪27.01.2023-22.01.2023‬‬


‫"‬ ‫‪14‬‬
‫‪22.01.2023‬‬

‫מועדי בחינות הגמר יפורסמו בנפרד‬

‫* התאריכים המדויקים של המפגשים הקבוצתיים מופיעים ב"לוח מפגשים ומנחים"‪.‬‬

‫‪.‬‬

‫‪8‬‬
‫‪ .3‬הנחיות כלליות להצגת אלגוריתמים כפתרון למטלה‬
‫חובה להוכיח נכונות בצורה מדויקת‪.‬‬ ‫א‪.‬‬
‫חובה להציג ניתוח מדויק של זמן הריצה‪.‬‬ ‫ב‪.‬‬
‫חובה להציג את האלגוריתם היעיל ביותר שהצלחתם לפתח‪.‬‬ ‫ג‪.‬‬
‫אם ניתן לפתור בעיה ביעילות באמצעות הפעלה‪/‬תיקון של אלגוריתם מוכר‪,‬‬ ‫ד‪.‬‬
‫יש להציג פתרון שכזה במקום לפתח אלגוריתם חדש לחלוטין‪.‬‬
‫אסור לפתור תרגילים של פרק מוקדם באמצעות אלגוריתם שנלמד בפרק מאוחר‪.‬‬ ‫ה‪.‬‬
‫להלן פרוט הפרקים המתורגלים בכל מטלה‪:‬‬

‫פרק בספר הלימוד‬ ‫ממ"ן‬

‫‪( 1,3‬שידוכים‪ ,‬קשירות בגרפים)‬ ‫‪11‬‬

‫‪( 4‬חמדנות – בדגש על מסלולים‪/‬עצים מזעריים)‬ ‫‪12‬‬

‫‪( 5‬הפרד ומשול – בדגש על התמרת פורייה)‬ ‫‪13‬‬

‫‪( 6‬תכנון דינאמי)‬ ‫‪14‬‬

‫‪( 7‬זרימה)‬ ‫‪15‬‬

‫ניקוד המטלות‬
‫בקורס חובת הגשה של ‪ 3‬מטלות מתוך ‪ .5‬ככל שמוגשות יותר מטלות‪ ,‬כך עולה משקל‬
‫המטלות בציון הסופי‪.‬‬
‫למען הלימוד‪ ,‬חשוב לפתור גם שאלות שאינכם מגישים לקבלת ציון‪.‬‬

‫לתשומת לבכם!‬
‫כדי לעודדכם להגיש לבדיקה מספר רב של מטלות הנהגנו את ההקלה שלהלן‪:‬‬
‫אם הגשתם מטלות מעל למשקל המינימלי הנדרש בקורס‪ ,‬המטלות בציון הנמוך ביותר‪,‬‬
‫שציוניהן נמוכים מציון הבחינה (עד שתי מטלות)‪ ,‬לא יילקחו בחשבון בעת שקלול הציון‬
‫הסופי‪ .‬זאת בתנאי שמטלות אלה אינן חלק מדרישות החובה בקורס ושהמשקל הצבור של‬
‫המטלות האחרות שהוגשו‪ ,‬מגיע למינימום הנדרש‪.‬‬
‫זכרו! ציון סופי מחושב רק לסטודנטים שעברו את בחינת הגמר בציון ‪ 60‬ומעלה והגישו‬
‫מטלות כנדרש באותו קורס‪.‬‬

‫‪ .4‬התנאים לקבלת נקודות זכות בקורס‬


‫א‪ .‬הגשת ‪ 3‬מטלות לפחות‪.‬‬
‫ב‪ .‬ציון של ‪ 60‬לפחות בבחינת גמר‪.‬‬
‫ג‪ .‬ציון סופי בקורס של ‪ 60‬נקודות לפחות‪.‬‬

‫‪9‬‬
11
‫מטלת מנחה (ממ"ן) ‪11‬‬
‫‪ ,20417‬אלגוריתמים‬ ‫הקורס‪:‬‬
‫חומר הלימוד למטלה‪ :‬פרקים ‪ 1,3‬בספר‬
‫משקל המטלה‪4% :‬‬ ‫מספר השאלות‪4 :‬‬
‫מועד הגשה‪11.11.2022 :‬‬ ‫סמסטר‪2023 :‬א‬

‫יש להגיש תשובות לשלוש מבין השאלות ‪1,2,3,4‬‬

‫שאלה מס' ‪)33%( 1‬‬


‫בעיית השידוך היציב‪ .‬פתרו את שאלה ‪ 1.6‬בספר הקורס‪.‬‬

‫שאלה מס' ‪)33%( 2‬‬


‫הכוונת צלעות‪ .‬הציגו אלגוריתם שמכריע‪ ,‬בהנתן גרף לא מכוון ) ‪ , G  (V , E‬האם ניתן לכוון כל‬
‫אחת מהצלעות‪ ,‬כך שבגרף המכוון שמתקבל‪ ,‬דרגת הכניסה של כל קדקוד תהיה גדולה מאפס‪.‬‬
‫(לכל צלע ‪ {u, v}  E‬ניתן לבחור כיוון יחיד‪ (u , v) :‬או לחלופין ) ‪ .) (v, u‬כשהתשובה חיובית‪ ,‬על‬
‫האלגוריתם להחזיר הכוונה של הצלעות – המקיימת את הנדרש‪ .‬נדרשת תשובה קצרה ומדויקת‬
‫של עד ‪ 8‬משפטים‪.‬‬

‫שאלה מס' ‪)33%( 3‬‬


‫מסלולים מזעריים דרך קדקודים מועדפים‪ .‬נתון גרף מכוון ) ‪ , G  (V , E‬צמד קדקודים‬
‫‪ , s  t V‬ותת‪-‬קבוצה של קדקודים מועדפים ‪ , U  V‬המקיימת ‪   U  V‬וכן ‪. s, t U‬‬
‫לכל מסלול ‪ P‬בגרף נסמן ב‪ ( P) -‬את אורך המסלול (=מספר הצלעות במסלול)‪ ,‬וב‪ # P(U ) -‬את‬
‫מספרם של קדקודי ‪ U‬במסלול‪.‬‬

‫הציגו אלגוריתם למציאת מסלול מ‪ s -‬ל‪ , t -‬שמבקר ב‪ U -‬בדיוק פעמיים‪ ,‬ושאורכו מזערי מבין כל‬
‫המסלולים הללו‪ .‬כלומר‪ ,‬האלגוריתם נדרש להחזיר מסלול מ‪ s -‬ל‪ t -‬כך ש‪ , # P(U )  2 -‬וכך‬
‫שאם ישנם מסלולים נוספים ‪ P‬מ‪ s -‬ל‪ t -‬המקיימים ‪ , # P(U )  2‬אז )‪. ( P)  ( P‬‬

‫בשאלה זו מותרים מסלולים לא פשוטים‪ ,‬כלומר מותר למסלול לעבור דרך קדקוד מסוים‪ ,‬ואפילו‬
‫דרך צלע מסוימת יותר מפעם אחת‪ .‬למשל‪ ,‬נניח שהגרף הינו משולש מכוון ‪ s  t  v  s‬ללא‬
‫שום קדקוד או צלע נוספת‪ ,‬ושהקבוצה המועדפת הינה }‪ . U  {v‬אזי המסלול היחיד‪ ,‬ולכן גם‬
‫המזערי‪ ,‬שמקיים ‪ # P(U )  2‬הינו המסלול הלא פשוט ‪. s  t  v  s  t  v  s  t‬‬
‫הדרכה‪ :‬העזרו ברדוקציה לגרף אחר ‪. G‬‬

‫‪11‬‬
‫שאלה מס' ‪)33%( 4‬‬
‫בעיית הספיקות (‪ .)2-SAT‬הגדרות‪ :‬נוסחת ‪ k-CNF‬היא נוסחה מהצורה ‪,   1   2  ...   m‬‬

‫הינו אחד מהליטרלים‬ ‫‪zi , j‬‬ ‫) ‪ , i  ( zi ,1  zi ,2  ...  zi ,k‬וכל‬ ‫כשלכל פסוקית הצורה‬

‫‪ . x1 ,..., xn , x1 ,..., xn‬למשל ) ‪   ( x1  x2 )  ( x1  x3 )  (x1  x3 )  (x2  x3‬הינה‬


‫נוסחת ‪ 2-CNF‬עם ‪ k  2‬ליטרלים בכל פסוקית‪ n  3 ,‬משתנים‪ ,‬ו‪ m  4 -‬פסוקיות‪ .‬לעומתה‪,‬‬
‫) ‪   ( x1  x2  x3 )  ( x2  x4  x5‬הינה נוסחת ‪ 3-CNF‬עם ‪ k  3‬ליטרלים בכל‬

‫פסוקית‪ n  5 ,‬משתנים‪ ,‬ו‪ m  2 -‬פסוקיות‪ .‬השמה הינה פונקציה שמתאימה לכל משתנה ‪ xi‬ערך‬
‫"אמת" ‪ T‬או "שקר" ‪ . F‬בהינתן השמה מסוימת‪ ,‬אזי הליטרל ‪ xi‬מסופק אם ההשמה מקיימת‬
‫‪ , xi  T‬והליטרל ‪  xi‬מסופק אם ‪ . xi  F‬הפסוקית ) ‪ i  ( zi ,1  zi ,2  ...  zi ,k‬מסופקת‪,‬‬

‫אם לפחות אחד מהליטרלים שבה ‪ zi ,1, zi ,2 ,..., zi ,k‬מסופק‪ .‬הנוסחא כולה ‪  1  2  ...   m‬‬

‫מסופקת‪ ,‬אם כל הפסוקיות ‪ 1 ,..,  m‬מסופקות‪ .‬הנוסחא נקראת ספיקה‪ ,‬אם לפחות אחת מבין‬

‫‪ 2 n‬ההשמות האפשריות מספקת אותה‪.‬‬

‫הציגו אלגוריתם יעיל‪ ,‬שבהינתן נוסחה ‪ ‬בצורת ‪ 2-CNF‬מוצא לה השמה מספקת‪ ,‬ואם אין‬
‫השמה כזו ‪ -‬מדווח שהנוסחה איננה ספיקה‪ .‬הדרכה‪ :‬העזרו בגרף מכוון ‪ G‬שמותאם לנוסחה ‪. ‬‬

‫‪12‬‬
‫מטלת מנחה (ממ"ן) ‪12‬‬
‫‪ ,20417‬אלגוריתמים‬ ‫הקורס‪:‬‬
‫חומר הלימוד למטלה‪ :‬פרק ‪ 4‬בספר‬
‫משקל המטלה‪4% :‬‬ ‫מספר השאלות‪4 :‬‬
‫מועד הגשה‪25.11.2022 :‬‬ ‫סמסטר‪2023 :‬א‬

‫יש להגיש תשובות לשאלות ‪ 1,2,4‬בלבד‪ .‬שאלה ‪ 3‬היא לתרגול נוסף ואיננה להגשה‬

‫בכל השאלות בקורס אודות גרפים ממושקלים‪ :‬משקל=מחיר=אורך של מסלול מוגדר כסכום‬
‫משקלי הצלעות במסלול (ולא כמספרן של הצלעות במסלול)‪ .‬בהתאם לכך‪ ,‬המרחק מקדקוד א'‬
‫לקדקוד ב' מוגדר כמשקל המזערי של מסלול מ‪-‬א' ל‪-‬ב' (או כאינסוף אם אין בכלל מסלול כזה)‪.‬‬

‫שאלה מס' ‪)40%( 1‬‬


‫מסלולים כמעט מזעריים‪ .‬נתון גרף מכוון )‪ G  (V , E‬עם משקלים חיוביים ‪ w( e)  0‬לכל אחת‬
‫מהצלעות ‪ e  E‬ועם קדקוד מוצא ‪ . s‬נתון גם שלכל קדקוד ‪ v‬קיים מסלול ‪ Ps,v‬מ‪ s -‬ל‪v -‬‬

‫בגרף‪ .‬כרגיל‪ ,‬משקלו של מסלול מוגדר כסכום משקלי הצלעות )‪ , w( P)   w(e‬ומסלול ‪Ps,v‬‬
‫‪eP‬‬

‫נקרא מזערי אם מתקיים ) ‪ w( Ps,v )  w( Ps,v‬עבור כל מסלול אחר ‪ . Ps,v‬הגדרות חדשות‪ :‬מסלול‬

‫‪ Ps,v‬ייקרא כמעט מזערי‪ ,‬אם משקלו קטן ביותר מבין כל המסלולים הלא מזעריים מ‪ s -‬ל‪. v -‬‬

‫כלומר‪ ,‬אם ‪ w1  w2  ...  wk‬הינה רשימת כל המשקלים האפשריים של מסלולים מ‪ s -‬ל‪, v -‬‬
‫אז למסלול מזערי מתקיים ‪ w( Ps,v )  w1‬ולמסלול כמעט מזערי מתקיים ‪ . w( Ps,v )  w2‬צלע‬

‫‪ e  (u, v)  E‬תיקרא שימושית אם היא צלע אחרונה באיזשהו מסלול מזערי ‪. Ps,v‬‬

‫א‪ .‬הוכיחו שאם כל הצלעות ב‪ Ps,v -‬שימושיות‪ ,‬אז ‪ Ps,v‬מסלול מזערי‪.‬‬

‫ב‪ .‬הוכיחו שאם יש צלע לא שימושית ב‪( Ps,v -‬אחת או יותר)‪ ,‬אז ‪ Ps,v‬איננו מסלול מזערי‪.‬‬

‫הוכיחו שאם ‪ Ps,v‬מסלול כמעט מזערי אז מופיעה בו צלע לא שימושית אחת ויחידה‪.‬‬ ‫ג‪.‬‬

‫ד‪ .‬תהי ) ‪ e  (u1, u2‬הצלע הלא שימושית היחידה במסלול כמעט מזערי ‪ . Ps,v‬הוכיחו שהרישא‬
‫של ‪ Ps,v‬מ‪ s -‬ל‪ u1 -‬מהווה מסלול מזערי‪ ,‬וגם שהסיפא של ‪ Ps,v‬מ‪ u 2 -‬ל‪ v -‬מהווה מסלול‬
‫מזערי‪.‬‬
‫ה‪ .‬הציגו בעזרת הסעיפים הקודמים אלגוריתם למציאת מסלול כמעט מזערי מקדקוד מקור‬
‫נתון ‪ s‬לקדקוד יעד נתון ‪" , t‬בזמן" )| ‪( . (| E |  log | V‬בחישוב זמן הריצה מניחים שחיבור‪,‬‬
‫חיסור והשוואה של משקלי צלעות – כולן פעולות אלמנטריות שמתבצעות בזמן )‪.) (1‬‬

‫‪13‬‬
‫שאלה מס' ‪)40%( 2‬‬
‫תיקון עץ פורש שהושמטה ממנו צלע‪ .‬נתון עץ פורש מזערי ‪ T‬של גרף לא מכוון קשיר‬
‫) ‪ G  (V , E‬עם משקלים אי‪-‬שליליים ‪ c(e)  0‬לכל אחת מהצלעות ‪ . e  E‬תהי ‪ e* T‬צלע‬

‫בעץ‪ ,‬ויהי ‪ G  V , E‬הגרף‪ ,‬המתקבל מ‪ G -‬לאחר השמטתה של * ‪( e‬כלומר‪.) E   E \ {e*} ,‬‬


‫נתון כי ‪ G‬קשיר‪ .‬הציגו אלגוריתם שרץ "בזמן" )| ‪ O(| E‬ומתקן את ‪ , T‬כך שיתקבל ממנו עץ‬
‫פורש מזערי ‪ T ‬עבור ‪( . G‬הערות‪( :‬א) בדומה לאלגוריתמים חמדניים רבים עיקר הקושי (ולכן‬
‫גם מרבית הניקוד) הוא בהוכחת הנכונות ולא בניסוח האלגוריתם‪( .‬ב) במסגרת ניתוח זמן הריצה‪,‬‬
‫הניחו כי כל פעולה אלמנטרית על המשקלים‪ ,‬כמו חיבור או השוואה‪ ,‬מתבצעת בזמן )‪.) (1‬‬

‫שאלה מס' ‪( 3‬לא להגשה)‬


‫בעיית הספיקות (‪ – )3-SAT‬כשלון החמדנות‪ .‬הפורמט של נוסחת ‪ 3-CNF‬הוגדר כזכור במסגרת‬
‫ממ"ן ‪ .1‬נביט באלגוריתם החמדן הבא למציאת השמה מספקת לנוסחת ‪ 3-CNF‬שרירותית ‪. ‬‬
‫האלגוריתם סורק את כל המשתנים ‪ x1 ,..., xn‬בזה אחר זה‪ ,‬ולכל משתנה ‪ x i‬בוחר השמה‪,‬‬
‫שממקסמת את מספר הפסוקיות המסופקות החדשות‪( .‬למשל‪ ,‬כשהאלגוריתם מטפל במשתנה‬
‫‪ , x 2‬בוחנים רק את הפסוקיות שטרם סופקו ע"י ההשמה שנקבעה כבר למשתנה ‪ . x1‬אם ב‪5-‬‬
‫מהפסוקיות הללו מופיע הליטרל ‪ , x 2‬וב‪ 6-‬מהפסוקיות הללו מופיע הליטרל ‪ , x 2‬אז מציבים‬
‫‪ , x2  F‬משום שכך יסופקו ‪ 6‬פסוקיות חדשות במקום ‪ .)5‬הציגו נוסחת ‪ 3-CNF‬עליה‬
‫האלגוריתם החמדן נכשל‪ :‬הנוסחא ספיקה‪ ,‬אבל האלגוריתם מפיק כפלט השמה לא מספקת‪.‬‬

‫שאלה מס' ‪)20%( 4‬‬


‫קידוד הופמן‪ .‬עץ מושרש ‪ T‬נקרא בינארי לחלוטין אם לכל קדקוד שלו שאינו עלה יש שני בנים‪.‬‬
‫הוכיחו כי לכל עץ מושרש בינרי לחלוטין ‪ T‬בעל ‪ n‬עלים‪ ,‬קיימת סדרת שכיחויות ‪ f1 , f 2 ,..., f n‬כך‬
‫שאחד מעצי הופמן של הסדרה הוא ‪( . T‬הבהרה‪ :‬כזכור‪ ,‬השורש אף פעם אינו נחשב לעלה בעצים‬
‫מושרשים‪ .‬לכן הטענה חלה עבור ‪ n  2‬בלבד)‪.‬‬

‫‪14‬‬
‫מטלת מנחה (ממ"ן) ‪13‬‬
‫‪ ,20417‬אלגוריתמים‬ ‫הקורס‪:‬‬
‫חומר הלימוד למטלה‪ :‬פרק ‪ 5‬בספר‬
‫משקל המטלה‪4% :‬‬ ‫מספר השאלות‪4 :‬‬
‫מועד הגשה‪16.12.2022 :‬‬ ‫סמסטר‪2023 :‬א‬

‫יש להגיש תשובות לשאלה ‪ ,1‬ולשתיים מבין שלוש השאלות ‪.2,3,4‬‬

‫שאלה מס' ‪)30%( 1‬‬


‫הרצת ‪( .FFT‬בשאלה זו סעיף א' כן להגשה‪ ,‬וסעיף ב' לא להגשה)‪ .‬נביט בפולינום‬
‫‪ p( x )  x 3  2 x 2  3x  1‬שדרגתו קטנה מ‪ .4-‬רישמו את כל החישובים מעל שדה המרוכבים‬
‫(לרבות הקריאות הרקורסיביות) עבור‪:‬‬
‫(א) הרצת ‪ FFT‬מסדר ‪( 4‬הרצת ) ‪ ) FFT (, 4‬על מקדמי הפולינום‪.‬‬
‫(ב) הרצת ‪( INVERSE-FFT‬הרצת ) ‪ ) FFT (,(4 )1‬על הערכים שהתקבלו בסעיף א'‪.‬‬

‫שאלה מס' ‪)35%( 2‬‬


‫כפל מספרים שלמים בגישת ‪ :FFT‬כפל מספרים שלמים הינה בעיה אלגוריתמית בעלת חשיבות‬
‫מעשית עליונה‪ .‬לשם פשטות להלן נניח ששני המספרים המוכפלים שווי אורך (לשניהם ייצוג‬
‫בינארי של ‪ n‬ביטים)‪ ,‬וששניהם חיוביים‪ .‬בתרגיל זה יוצגו עיקר הרכיבים באחד האלגוריתמים‬
‫היעילים ביותר המוכרים כיום לכפל שלמים‪ :‬זמן הריצה שלו הוא ) ‪ (n log 2 n‬בלבד‪ .‬כזכור‪,‬‬

‫אלגוריתם הכפל של ‪ Karatsuba‬מבוסס על פיצול הספרות של כל קלט לשני בלוקים שווי גודל‪,‬‬
‫ורץ בזמן ) ‪ . ( n log 2 3‬הציגו אלגוריתם משופר‪ ,‬שמחלק כל קלט ל‪ (n / k ) -‬בלוקים בגודל ‪. k‬‬
‫היעזרו באלגוריתם ה‪ FFT-‬לפתרון תתי‪-‬הבעיות המתקבלות‪ .‬הניחו לשם פשטות (וללא הצדקה)‪,‬‬
‫כי ההכפלות שמתבצעות במהלך הקריאות הרקורסיביות אינן מגדילות את אורכם של המספרים‪,‬‬
‫ולכן ניתן לממש הכפלות אלו בצורה תמימה תוך ביצוע ) ‪ ( k 2‬פעולות על ביטים‪ .‬בחרו לבסוף‬
‫את גודלם של הבלוקים להיות ‪. k  log n‬‬

‫‪15‬‬
‫שאלה מס' ‪)35%( 3‬‬
‫כפל מטריצות ריבועיות )‪ .(Strassen‬כזכור‪ ,‬כפל של שתי מטריצות ריבועיות ‪ A, B‬מסדר ‪n  n‬‬
‫(מעל שדה שרירותי) מניב מטריצה ‪ C  A  B‬אף היא מסדר ‪ , n  n‬המוגדרת ע"י הכלל‬

‫‪. Ci , j ‬‬ ‫‪A‬‬


‫‪1k n‬‬
‫‪i ,k‬‬ ‫‪ Bk , j‬‬

‫לכן מימוש ישיר של כפל מטריצות כרוך ב‪ ( n 3 ) -‬פעולות אריתמטיות בסיסיות מעל השדה‬
‫הנדון (כפל‪/‬חיבור‪/‬חיסור)‪ ,‬ובפרט ב‪ ( n 3 ) -‬פעולות כפל‪ .‬בתרגיל זה נוכיח כי ניתן להכפיל‬
‫מטריצות ריבועיות באמצעות ) ‪ (n log 7 )  O(n 2.81‬פעולות אריתמטיות בסיסיות בלבד‪ .‬פרטי‬
‫‪2‬‬

‫‪n‬‬
‫‪2‬‬ ‫ההוכחה מובאים להלן‪ .‬נניח בה"כ כי ‪ n‬זוגי‪ .‬נפרק כל מטריצה ל‪ 4-‬תתי‪-‬מטריצות מסדר ‪ n2‬‬

‫‪a‬‬ ‫‪b‬‬ ‫‪e‬‬ ‫‪g‬‬ ‫‪r s‬‬


‫‪.A‬‬ ‫‪‬‬ ‫‪,B  ‬‬ ‫‪‬‬ ‫‪,C  ‬‬ ‫‪‬‬
‫‪c‬‬ ‫‪d‬‬ ‫‪f‬‬ ‫‪h‬‬ ‫‪ t u‬‬
‫וודאו (לא להגשה) כי מהגדרת כפל מטריצות מתקיים‪:‬‬

‫‪r  aeb f‬‬


‫‪s  a g bh‬‬
‫‪t  ce d  f‬‬
‫‪u  c g  d h‬‬
‫כעת נגדיר‪:‬‬
‫) ‪P1  a  ( g  h‬‬
‫‪P2  ( a  b)  h‬‬
‫‪P3  ( c  d )  e‬‬
‫)‪P4  d  ( f  e‬‬
‫) ‪P5  ( a  d )  ( e  h‬‬
‫) ‪P6  (b  d )  ( f  h‬‬
‫) ‪P7  ( a  c )  ( e  g‬‬

‫(ב) וודאו (לא להגשה) כי חישוב המטריצות ‪ , P1 ,..., P7‬כרוך ב‪ 7-‬פעולות כפל בלבד (וכן מספר‬
‫מצומצם של פעולות חיבור‪/‬חיסור) של מטריצות מסדר ‪. n2  n2‬‬
‫(ג) וודאו (לא להגשה) כי מתקיים‪:‬‬
‫‪s  P1  P2‬‬
‫‪t  P3  P4‬‬
‫‪r  P4  P5  P6  P2‬‬
‫‪u  P1  P5  P3  P7‬‬

‫(ד) הוכיחו (כן להגשה) כי מספר הפעולות האלמנטריות של האלגוריתם הוא ) ‪ (n log 2 7‬בלבד‪.‬‬

‫‪16‬‬
‫שאלה מס' ‪)35%( 4‬‬
‫חישוב כל הנגזרות של פולינום בנקודה‪ .‬מקובל לסמן ב‪ f ( k ) ( x ) -‬את הנגזרת מסדר ‪ k‬של‬
‫וכן‬ ‫)‪f (3) ( x)  f ( x‬‬ ‫)‪, f (2) ( x)  f ( x‬‬ ‫) ‪, f (1) ( x )  f ( x‬‬ ‫) ‪ . f ( x‬למשל‪,‬‬ ‫הפונקציה‬
‫) ‪ . f (0) ( x )  f ( x‬נתונים מקדמי הפולינום ‪ f ( x)  a0  a1x  a2 x2  ...  an xn‬ונתונה נקודה‬
‫מסוימת ‪ . x 0‬הציגו אלגוריתם לחישוב ערכי כל הנגזרות ) ‪ f (0) ( x0 ),..., f ( n ) ( x0‬באותה נקודה ‪, x 0‬‬
‫תוך ביצוע )‪ ( n log n‬פעולות אריתמטיות בסיסיות בלבד‪( .‬פעולה בסיסית = חיבור‪ ,‬חיסור‪ ,‬כפל‪,‬‬
‫חילוק או השוואה של מספרים)‪ .‬למשל לפולינום מדרגה ‪ n  4‬יש לחשב את הערכים הבאים‪:‬‬

‫‪f (0) ( x0 )  a0‬‬ ‫‪ a1  x0‬‬ ‫‪ a2  ( x0 )2‬‬ ‫‪ a3  ( x0 )3‬‬ ‫‪ a4  ( x0 )4‬‬
‫‪f (1) ( x0 ) ‬‬ ‫‪ a1‬‬ ‫‪2a2  x0‬‬ ‫‪3a3  ( x0 )2‬‬ ‫‪4a4  ( x0 )3‬‬
‫‪f (2) ( x0 ) ‬‬ ‫‪2 a2‬‬ ‫‪2  3a3  x0‬‬ ‫‪3  4a4  ( x0 )2‬‬
‫‪f (3) ( x0 ) ‬‬ ‫‪2  3a3‬‬ ‫) ‪2  3  4a4  ( x0‬‬
‫‪f (4) ( x0 ) ‬‬ ‫‪2  3  4 a4‬‬

‫נדרשת תשובה של ‪ 4-5‬שורות בלבד‪ .‬נדרשת תשובה שמבוססת על ‪ .FFT‬בפרט‪ ,‬לא יינתן ניקוד על‬
‫האלגוריתם הטריוויאלי שמחשב בנפרד כל אחד מבין ) ‪ ( n 2‬המחוברים‪ .‬העזרו בתשובתכם‬
‫בצמצום הסטנדרטי של עצרות‪:‬‬

‫‪m! 1  2  ...  ( m  1)  m‬‬


‫‪.‬‬ ‫‪‬‬ ‫‪ (  1)  (  2)  ...  ( m  1)  m‬‬
‫‪! 1  2  ...  (  1) ‬‬

‫‪17‬‬
‫מטלת מנחה (ממ"ן) ‪14‬‬
‫‪ ,20417‬אלגוריתמים‬ ‫הקורס‪:‬‬
‫חומר הלימוד למטלה‪ :‬פרק ‪ 6‬בספר‬
‫משקל המטלה‪4% :‬‬ ‫מספר השאלות‪4 :‬‬
‫מועד הגשה‪06.01.2023 :‬‬ ‫סמסטר‪2023 :‬א‬

‫יש להגיש תשובות לשלוש מבין ארבע השאלות ‪1,2,3,4‬‬

‫שאלה מס' ‪)33%( 1‬‬


‫מסלולים מזעריים בשריג‪ .‬נתון שריג ריבועי מסדר ‪ n  n‬עם מחירים אי‪-‬שליליים על קדקודים‪:‬‬
‫אברי השריג הם נקודות מהצורה ) ‪ (i, j‬כאשר ‪ , 1  i, j  n‬ולכל איבר מותאם מחיר ‪. c(i, j )  0‬‬
‫הקואורדינטה הראשונה ‪ i‬מייצגת מיקום אופקי (ימינה‪/‬שמאלה) בשריג‪ .‬לכן השכבה השמאלית‬
‫ביותר מורכבת מהנקודות בהן ‪ , i  1‬והשכבה הימנית ביותר מהנקודות בהן ‪. i  n‬‬
‫הקואורדינטה השנייה ‪ j‬מייצגת מיקום אנכי (מעלה‪/‬מטה)‪ .‬לכן השכבה התחתונה ביותר‬
‫מורכבת מהנקודות בהן ‪ , j  1‬והשכבה העליונה ביותר מהנקודות בהן ‪ . j  n‬בשריג מותרת‬
‫תנועה רק בצעדים מאחת משלוש הצורות הבאות‪ , (i, j )  (i  1, j  1) :‬או ) ‪(i, j )  (i  1, j‬‬
‫או )‪ , (i, j )  (i, j  1‬כלומר‪" ,‬ימינה ולמעלה" או "ימינה" או "למעלה"‪.‬‬

‫הציגו אלגוריתם שרץ בזמן ) ‪ (n 2‬למציאת מסלול במחיר מזערי מהפינה השמאלית התחתונה‬
‫לפינה הימנית העליונה‪ ,‬כשמחיר מסלול מוגדר כסכום מחירי הנקודות במסלול‪( .‬פעולות‬
‫אריתמטיות על המחירים‪ ,‬כמו חיבור‪ ,‬חיסור והשוואה‪ ,‬מתבצעות בזמן )‪.) (1‬‬

‫הגדרת המערך (‪ 5‬נק')‪____________________________________________________:‬‬

‫נוסחת הנסיגה (‪ 20‬נק')‪___________________________________________________:‬‬

‫אתחול המערך (‪ 3‬נק')‪____________________________________________________:‬‬

‫עדכון המערך לפי נוסחת הנסיגה (‪ 3‬נק')‪_______________________________________ :‬‬

‫____________________________________________________________________‬

‫יעילות (‪ 2‬נק')‪_________________________________________________________ :‬‬

‫‪18‬‬
‫שאלה מס' ‪)33%( 2‬‬
‫בחירת מלונות לאורך מסלול) ברצוננו לערוך מסע לאורכו של מסלול ישר מנקודת‪-‬התחלה ‪s‬‬
‫לנקודת‪-‬סיום ‪ . f‬נתונה רשימה ‪ p1  ...  pn‬של מיקומי‪-‬מלונות‪ ,‬כך שמלון ‪ i‬ממוקם בדיוק‬

‫‪ pi‬קילומטרים מתחילת‪-‬המסלול‪ .‬במהלך המסע לנים בכל לילה במלון אחר‪ .‬החופשה מוגבלת‬
‫בזמן‪ ,‬ולכן חייבים להשלים את המסע תוך לכל היותר ‪ t‬ימים ( ‪ t  n‬נתון)‪ .‬ידוע שכמות‪-‬המאמץ‪,‬‬
‫שנדרש ביום‪-‬הליכה הינה הריבוע ‪ d 2‬של המרחק ‪ , d‬שהולכים באותו יום‪ .‬ברצוננו לבחור את‬
‫נקודות‪-‬הלינה‪ ,‬כך שנמזער את סכום המאמצים בכל המסע‪.‬‬

‫הציגו אלגוריתם יעיל ככל האפשר לבעיה‪ ,‬שרץ בזמן פולינומי ביחס ל‪ t -‬וביחס ל‪ . n -‬נדרשת‬
‫תשובה שמבוססת על נוסחת‪-‬נסיגה בשיטה של תכנון‪-‬דינאמי‪.‬‬

‫מגדירים מערך שמשמעותו ____________________________________________(‪ 5‬נק')‬

‫נוסחת‪-‬הנסיגה עבור המערך הינה (נדרש הסבר קצר)_______________________________‬

‫_______________________________________________________________(‪ 22‬נק')‬

‫איך ממלאים את התאים במערך_________________________________________(‪ 3‬נק')‬

‫זמן הריצה (הסבר קצרצר)_____________________________________________(‪ 3‬נק')‬

‫‪19‬‬
‫שאלה מס' ‪)33%( 3‬‬
‫אינטרפולציה באמצעות תכנון דינאמי‪ :‬פולינום ממשי מדרגה קטנה מ‪ n -‬הינו ביטוי מהצורה‬
‫‪ . p( x)  a0  a1x  a2 x2  ...  an1x n1‬משפט נודע באלגברה קובע‪ ,‬כי פולינום שכזה נקבע‬
‫ביחידות לפי ערכו ב‪ n -‬מקורות שונים ‪ . xi‬למשל‪ ,‬כל קו ישר (כלומר פולינום מדרגה קטנה מ‪)2-‬‬

‫נקבע ביחידות ע"י ‪ 2‬נקודות דרכן הוא עובר‪ .‬באופן כללי‪ ,‬בהינתן ‪ n‬נקודות ) ‪( x1 , y1 ),...,( xn , yn‬‬
‫עבורן ‪ xi  x j‬לכל ‪ , i  j‬קיים פולינום אחד ויחיד ) ‪ p ( x‬מדרגה קטנה מ‪ n -‬המקיים‬

‫‪ . p( x1 )  y1 ,..., p ( xn )  yn‬פולינום זה נקרא פולינום האינטרפולציה של הנקודות הנתונות‪.‬‬

‫בבעיית‪-‬האינטרפולציה נתונות הנקודות ) ‪ ( x1 , y1 ),...,( xn , yn‬המקיימות ‪ , xi  x j‬וברצוננו לחשב‬

‫את המקדמים ‪ a0 ,..., an 1‬של פולינום‪-‬האינטרפולציה‪.‬‬

‫(א‪ 26 .‬נק') לכל ‪ i  j‬נסמן ב‪ pi , j -‬את פולינום האינטרפולציה של הנקודות ) ‪.( xi , yi ),...,( x j , y j‬‬

‫רשמו ‪ 3‬פולינומים פשוטים ) ‪ q( x ), r( x ), s( x‬מדרגה ‪ 0‬או ‪ ,1‬עבורם מתקיים‬

‫)‪q( x)  pi , j ( x)  r ( x)  pi1, j 1 ( x‬‬


‫‪(*) pi , j 1 ( x) ‬‬
‫)‪s ( x‬‬

‫הפולינומים ובדיקה שמתקיים (*)____________________________________________‬

‫____________________________________________________________________‬

‫____________________________________________________________________‬

‫(השאלה ממשיכה בעמוד הבא)‬

‫‪21‬‬
‫(ב‪ 7 .‬נק') הציגו אלגוריתם תכנון‪-‬דינאמי לבעיית‪-‬האינטרפולציה‪ ,‬המבוסס על נוסחת‪-‬הנסיגה‬
‫מסעיף (א)‪ .‬לשם פשטות‪ ,‬החשיבו פעולות אריתמטיות על מספרים כפעולות‪-‬אלמנטריות‪.‬‬

‫הגדרת המערך‪_________________________________________________________:‬‬

‫אתחול המערך‪_________________________________________________________:‬‬

‫עדכון המערך לפי נוסחת הנסיגה‪____________________________________________ :‬‬

‫____________________________________________________________________‬

‫____________________________________________________________________‬

‫יעילות‪_______________________________________________________________:‬‬

‫____________________________________________________________________‬

‫(ג‪ .‬לא להגשה וללא ניקוד)‪ .‬יהי ‪ . p( x )  x  2 x 2  3x 3  4 x 4‬הציבו ב‪ p ( x ) -‬את חמשת‬


‫הערכים ‪ , 2, 1,0,1,2‬והריצו את אלגוריתם האינטרפולציה מהסעיף הקודם על חמש הנקודות‬
‫שמתקבלות‪ .‬וודאו שהאלגוריתם אכן מניב כפלט את מקדמיו של ) ‪. p ( x‬‬

‫‪21‬‬
‫שאלה מס' ‪)33%( 4‬‬
‫נתון גרף מכוון ) ‪ G  (V , E‬עם משקלים אי‪-‬שליליים ‪ c(e)  0‬על הצלעות ‪ , e  E‬ונתון קדקוד‬
‫מסוים ‪ . r V‬הביטו באלגוריתם הבא‪:‬‬
‫‪ 0, v  r‬‬
‫‪. A[v ]  ‬‬ ‫(‪ )i‬מאתחלים מערך חד‪-‬ממדי ‪ A‬באמצעות הכלל‪:‬‬
‫‪, v  r‬‬
‫(‪ )ii‬לולאה חיצונית‪ :‬חוזרים שוב ושוב על הפעולה הבאה‪.‬‬
‫(‪ )1ii‬לולאה פנימית‪ :‬סורקים את הצלעות בסדר לקסיקוגרפי‪ .‬לכל ‪ e  (u, v )  E‬מבצעים‪:‬‬
‫אם )‪ A[v ]  A[u]  c(e‬אז מעדכנים )‪. A[v]  A[u]  c(e‬‬
‫(‪ )2ii‬אם בהרצה הנוכחית של כל הלולאה הפנימית לא בוצע אף עדכון‪,‬‬
‫אז האלגוריתם מסיים‪.‬‬

‫(א) רישמו מה מחשב האלגוריתם (אין צורך להוכיח נכונות)‪.‬‬

‫____________________________________________________________________‬

‫____________________________________________________________________‬

‫(ב) יהי )‪ B(n‬המספר המרבי של איטרציות שמתבצעות בלולאה החיצונית על גרפים בעלי ‪n‬‬

‫קדקודים‪ .‬חשבו את )‪ , B(n‬והציגו סדרת גרפים ‪ Gn‬עליהם מתבצעות בדיוק )‪ B(n‬איטרציות‪.‬‬

‫____________________________________________________________________‬

‫____________________________________________________________________‬

‫(ג) הציגו סדרת גרפים אחרת ‪ , Gn‬עבורם נכנסים ללולאה החיצונית פעמיים בלבד‪ ,‬וזאת למרות‬

‫שמספר הצלעות שלהם זהה לגרפים מהסעיף הקודם‪ ,‬כלומר | ) ‪ | E (Gn ) || E (Gn‬לכל ‪. n‬‬

‫____________________________________________________________________‬

‫____________________________________________________________________‬

‫‪22‬‬
‫מטלת מנחה (ממ"ן) ‪15‬‬
‫‪ ,20417‬אלגוריתמים‬ ‫הקורס‪:‬‬
‫חומר הלימוד למטלה‪ :‬פרק ‪ 7‬בספר‬
‫משקל המטלה‪4% :‬‬ ‫מספר השאלות‪4 :‬‬
‫מועד הגשה‪22.01.2023 :‬‬ ‫סמסטר‪2023 :‬א‬

‫יש להגיש תשובות לשלוש השאלות ‪ .1,2,3‬שאלות ‪ 4,5‬לתרגול נוסף ולא להגשה‪.‬‬

‫בכל רשתות הזרימה בקורס לא נכנסות צלעות למקור‪ ,‬ולא יוצאות צלעות מהיעד‪.‬‬

‫שאלה מס' ‪)33%( 1‬‬


‫צלעות שמוסרות‪ ,‬נוספות מחדש‪ ,‬ושוב מוסרות מהרשת השיורית‪ .‬הציגו דוגמא פשוטה של רשת‬
‫זרימה עם צלע ‪ , e‬שמקיימת את שתי התכונות הבאות‪( :‬א) במהלך הרצת ‪ Edmonds-Karp‬על‬
‫הרשת ישנן שתי איטרציות שונות‪ ,‬שבהן תוספת הזרימה דרך ‪ e‬זהה לקיבולת השיורית של ‪. e‬‬
‫(ב) הצלע ‪ e‬מחברת בגרף המקורי בין שני קדקודים‪ ,‬שמרחקם מהמקור ‪ s‬שונה‪ .‬שימו לב‬
‫שהדוגמא באיור ‪ 7.6‬בספר הקורס אינה עונה לדרישות השאלה‪( .‬הדוגמא מתארת הרצה של‬
‫‪ Ford-Fulkerson‬אבל לא של המימוש של ‪ .)Edmonds-Karp‬נדרשת רשת זרימה גדולה יותר‪.‬‬
‫נדרשת תשובה קצרה‪ :‬ציור של הרשת‪ ,‬והסבר של ‪ 2-3‬שורות בלבד)‪.‬‬

‫שאלה מס' ‪)33%( 2‬‬


‫זרימה מזערית כשקיבולות חוסמות מלרע את הזרימה הנדרשת‪ .‬כרגיל נתון גרף מכוון‬
‫) ‪ G  (V , E‬עם מקור ויעד ‪ s  t V‬ועם קיבולת אי‪-‬שלילית ‪ c(e)  0‬לכל צלע בגרף‪( .‬כאשר‬
‫‪ e  E‬אז )‪ c( e‬אינה מוגדרת‪ ,‬ומובטח שלכל זוג קדקודים ‪ , u  v‬לכל היותר אחת מבין הצלעות‬
‫‪ , f : E ‬המקיימת את חוק‬ ‫) ‪ ( v , u ) , (u, v‬נמצאת בגרף)‪ .‬כרגיל זרימה חוקית הינה פונקציה‬
‫לכל קדקוד ‪ . v  s, t‬אלא שהפעם‪ ,‬כל‬ ‫‪‬‬
‫‪( u ,v )E‬‬
‫‪f (u, v ) ‬‬ ‫‪‬‬
‫‪( v , w )E‬‬
‫שימור הזרימה ‪f (v, w)  0‬‬

‫קיבולת חוסמת את הזרימה דווקא מלמטה‪ :‬כלומר ‪ f‬נדרשת לקיים )‪ f ( e)  c( e‬לכל צלע‬
‫‪( e  E‬במקום )‪ .) f ( e)  c( e‬כל השאלות להלן מתייחסות לרשת המתוארת בפסקה האחרונה‪.‬‬
‫(א) הוכיחו שאם קיימת זרימה חוקית ברשת אז קיימת ברשת זרימה חוקית גדולה כרצוננו‪.‬‬
‫(ב) הציגו אלגוריתם למציאת זרימה חוקית (לאו דווקא מזערית) ברשת‪.‬‬
‫(ג) הציגו אלגוריתם למציאת זרימה חוקית מזערית ברשת‪.‬‬

‫‪23‬‬
‫שאלה מס' ‪)33%( 3‬‬
‫תיקון זרימה מרבית נתונה‪ .‬נתונה רשת זרימה‪ ,‬כלומר גרף מכוון ) ‪ G  (V , E‬עם מקור ויעד‬
‫‪ , s  t V‬ועם קיבולות שלמות ‪ c( e)  0‬לכל ‪ . e  E‬נתונה זרימה מרבית ‪ f‬ברשת‪,‬‬
‫שהתקבלה מהרצה של אלגוריתם ‪ ,Ford Fulkerson‬ונתונה צלע מסוימת ‪ . e*  E‬הציגו‬
‫אלגוריתמים בסיבוכיות ליניארית עבור כל אחת מהבעיות הבאות‪( .‬כדי לקצר את ניתוח היעילות‪,‬‬
‫הניחו שבכל הצלעות הקיבולות קטנות ולכן חיבור‪/‬חיסור‪/‬השוואה של קיבולת‪/‬זרימה הינן‬
‫פעולות אלמנטריות המתבצעות בזמן )‪.) (1‬‬
‫(א) מציאת זרימה מרבית ברשת‪ ,‬המתקבלת מהגדלת הקיבולת של * ‪ e‬ב‪.1-‬‬
‫(ב) מציאת זרימה מרבית ברשת‪ ,‬המתקבלת מהקטנת הקיבולת של * ‪ e‬ב‪.1-‬‬

‫שאלה מס' ‪( 4‬לא להגשה)‬


‫בעיית הספיקות‪ .‬הפורמט של נוסחת ‪ 3-CNF‬הוגדר כזכור במסגרת ממ"ן ‪ .1‬נתונה נוסחת ‪,3-CNF‬‬
‫שבה כל אחד מהמשתנים ‪ x1 ,..., xn‬מופיע בדיוק בשלוש פסוקיות שונות‪ ,‬וכל פסוקית כוללת‬
‫בדיוק שלושה משתנים שונים‪ .‬הוכיחו כי הנוסחה ספיקה‪ .‬הציגו עבור נוסחאות כאלו אלגוריתם‬
‫למציאת השמה מספקת‪ .‬הדרכה‪ :‬העזרו במשפט ‪.Hall‬‬

‫שאלה מס' ‪( 5‬לא להגשה)‬


‫אוב הפרדה‪ .‬הבעיה המקורית (רקע לשאלה)‪ :‬נתון קלט שמורכב מגרף לא מכוון ) ‪G  (V , E‬‬
‫וממספר ממשי ‪ . k  1‬לכל אורך השאלה ‪ S  V‬תסמן תת‪-‬קבוצה לא טריוויאלית של קדקודים‪,‬‬
‫כלומר ‪ .   S  V‬מעוניינים להגדיר משקלים אי‪-‬שליליים ‪ w(e)  0‬על הצלעות‪ .‬המשקלים‬
‫נקראים "חוקיים" אם לכל קבוצה ‪ , S‬סכום משקלי הצלעות שיוצאות מ‪ S -‬לעבר ‪ V \ S‬הינו‬
‫לפחות ‪ . k‬המטרה היא למצוא משקלים חוקיים עבורם סכום משקלי כלל הצלעות מזערי‪.‬‬

‫ידוע שניתן לפתור ביעילות את הבעיה המקורית הזו כל עוד נצליח להציג עבורה "אוב הפרדה"‪.‬‬
‫אוב הפרדה הינו אלגוריתם יעיל ‪ , A‬שבהינתן הצעת‪-‬פתרון לבעיה המקורית (כלומר בהינתן‬
‫רשימת משקלים ‪ ,) w(e)  0‬מקיים‪:‬‬
‫(א) אם המשקלים חוקיים – אז האלגוריתם ‪ A‬עונה "המשקלים חוקיים"‪.‬‬
‫(ב) אם המשקלים אינם חוקיים – אז האלגוריתם מוצא קבוצה מסוימת ‪ S ‬של קדקודים‪,‬‬
‫שביחס אליה המשקלים אינם חוקיים‪( .‬שימו לב שהאלגוריתם ‪ A‬חייב להיות יעיל‪ .‬לכן‬
‫אסור לו לבדוק בזו אחר זו את כל ‪ 2|V |  2‬תתי‪-‬הקבוצות האפשריות ‪.) S‬‬

‫השאלה ממשיכה בעמוד הבא‬

‫‪24‬‬
‫(נביט למשל‪ ,‬במקרה הפרטי שבו כל המשקלים }‪ w(e) {0,1‬ובנוסף ‪ . k  1‬אוב ההפרדה‬
‫הנדרש במקרה הפרטי מתקבל מהרצה של ‪ BFS/DFS‬על תת‪-‬הגרף ‪ G‬שכולל רק את הצלעות‬
‫שמשקלן ‪ . w(e)  1‬ואכן‪( :‬א) אם ‪ BFS/DFS‬מגלה ש‪ G -‬קשיר‪ ,‬אז מכל ‪ S‬יוצאת בגרף המקורי‬
‫‪ G‬לפחות צלע אחת עם משקל ‪ , w(e)  1‬והאוב יענה כנדרש שהמשקלים חוקיים‪( .‬ב) אם‬
‫בסריקת ‪ BFS/DFS‬מתגלה ש‪ G -‬איננו קשיר‪ ,‬אז בסריקה מוצאים גם את קבוצת הקדקודים ‪S ‬‬
‫ברכיב הקשירות של קדקוד ההתחלה של הסריקה‪ .‬בברור‪ ,‬לכל לצלע שיוצאת מ‪ S  -‬בגרף המקורי‬
‫‪ G‬יש משקל ‪ . w(e)  0‬האוב יחזיר את ‪ S ‬כקבוצה מסוימת שביחס אליה המשקלים אינם‬
‫חוקיים)‪.‬‬

‫השאלה ‪ :‬הציגו אוב הפרדה‪ ,‬כלומר אלגוריתם יעיל שמקיים (א‪,‬ב)‪ ,‬עבור המקרה הכללי שבו‬
‫‪ . k  1 , w(e)  0‬כל הרקע וההסברים המקדימים נתונים עבורכם ואין שום צורך להוכיחם‪.‬‬

‫‪25‬‬

You might also like