Presentation is loading. Please wait.

Presentation is loading. Please wait.

שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה.

Similar presentations


Presentation on theme: "שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה."— Presentation transcript:

1 שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה קבוע ולא תלוי בכמות הדלק שממלאים. בהנחה שמחיר המילוי זהה בכל תחנות הדלק, תארו אלגוריתם שמחשב את העלות המינימאלית של נסיעה מ ל (עלות נסיעה מוגדרת להיות סכום מחירי מילוי הדלק במהלך הנסיעה.) תארו אלגוריתם לבעיה הממושקלת שבה מחיר מילוי הדלק משתנה בין התחנות. אפשר להניח שקיימת סדרת עצירות חוקית דוגמא 100 מטר אפשרות 1: מחיר - 5 אפשרות 1: מחיר - 4

2 פתרון נניח שהסדרה היא סדרה חוקית של עצירות בגודל מינימלי. נשים לב שאז גם הסיפא שלה היא סדרה חוקית בגודל מינימלי כאשר הפעם המסלול מתחיל ב לכן, אם נוכל למצוא את העצירה הראשונה, נשאר עם אותה בעיה עבור קלט קטן יותר. טענה: יהי m האינדקס המקסימלי כך ש , אז קיימת סדרת עצירות חוקית באורך מינימלי, כך שהעצירה הראשונה תהיה ב הוכחה: נסמן ב סדרת עצירות חוקית באורך מינימלי, אז ולכן נניח ש j הוא האינדקס הראשון בסדרה כך ש , אז הסדרה תהיה סדרת עצירות חוקית כי וגם שאר העצירות חוקיות בגלל שהן היו חוקיות בסדרה המקורית. לבסוף, בגלל ש אז j הוא לפחות 2 ולכן אורך הסדרה הוא לכל היותר i , כלומר אורכה הוא מינימלי.

3 אלגוריתם אתחל רשימה T עם כל עוד אם אם החזר שאין רשימת עצירות חוקית אחרת, הוסף את לסוף הרשימה T אחרת הוסף את לרשימה T החזר את T סיבוכיות: אתחול האלגוריתם לוקח זמן קבוע ואילו הלולאה מתבצעת פעמים, כאשר כל איטרציה מתבצעת בזמן ולכן סה"כ מקבלים סיבוכיות זמן של נשים לב שהנחנו שקיבלנו את נקודות העצירה מסודרות.

4 הבעיה הממושקלת: בנוסף לנקודות העצירה, נתונים לנו מחירים כאשר המחיר הוא המחיר של מילוי הדלק בתחנה עבור המטרה היא למצוא את התת סדרה המקיימת לכל והערך שלה הוא מינימלי (לא מחשיבים את התחנה האחרונה לצורך מילוי דלק). נשים לב שמחפשים מינימום עבור סכום של מספרים. בנוסף, רוצים שהתחנות בסדרת עצירות יובילו מהתחנה הראשונה לתחנה בעיה זו מאוד דומה לבעיית מציאת מסלול קל ביותר, ולכן נחפש רדוקציה של הבעיה הזאת, לבעיית מציאת מסלול קל ביותר בין שני צמתים. פתרון:

5 נתחיל ע"י הגדרת הגרף G כך שהצמתים שלו יהיו התחנות במסלול.
הבעיה הממושקלת: נתחיל ע"י הגדרת הגרף G כך שהצמתים שלו יהיו התחנות במסלול. הקשתות בגרף יהוו את התנאי שהתחנות (המתאימות לשני צמתים) במרחק של לכל היותר 100. את המשקלות על הקשתות ניתן בהתאם למחיר שנצטרך לשלם בתחנה. דוגמא: 50 100 120 140 230 10 20 15 30

6 הבעיה הממושקלת: עתה נוכל לפתור בעיה זו ע"י אלגוריתם למציאת מסלול קצר ביותר. מאחר והמשקלות חיוביים, אז ע"י דייקסטרא נמצא מסלול קצר ביותר בסיבוכיות האם ניתן לפתור בסיבוכיות טובה יותר? נשים לב שכל צומת יכול להיות מעודכן רק ע"י צמתים שנמצאים לפניו בסדר הלינארי. בעצם נתון לנו סידור טופולוגי של הצמתים ולכן נוכל להשתמש בסידור הזה על מנת להגיע לסיבוכיות טובה יותר.

7 אלגוריתם לכל צומת v בצע עבור ועד מצא מתוך את הצומת כך ש מינימלי החזר את סיבוכיות: אתחול האלגוריתם נעשה בסיבוכיות לכל צומת הפעולה 3.1 מתבצעת פעמים. הפעולה 3.2 מתבצעת סה"כ סיבוכיות היא כאשר במקרה הכללי ביותר, יכול להיות ש ולכן הסיבוכיות היא במקרה זה הסיבוכיות לא יותר טובה מזו של דייקסטרא, אבל אם אז אלגוריתם זה יעיל יותר.

8 וריאציה של השאלה נניח שנתון עתה שמחיר התדלוק בכל תחנה תלוי בכמות הדלק שמתדלקים. כלומר, אם צריך לתדלק ליטרים, בתחנה אז משלמים שקלים. בנוסף, בכל תחנה צריך למלא את מיכל הדלק עד הסוף, כולל בתחנה האחרונה. מה יהיה המחיר המינימאלי אם לכל תחנה (כמו בשאלה הראשונה)? מה יהיה המחיר המינימאלי עבור שונים (כמו בשאלה השנייה)? מה קורה אם מורידים את התנאי שצריך למלא את המיכל לגמרי בכל תחנה?

9 נתון גרף G סופי, פשוט ומכוון אשר כל קשת בו צבועה בכחול או אדום.
שאלה 2 נתון גרף G סופי, פשוט ומכוון אשר כל קשת בו צבועה בכחול או אדום. הציעו אלגוריתם יעיל ככל שתוכלו, שבהינתן צמת s מחליט לכל צמת v בגרף האם יש מסלול (לא בהכרח פשוט) מ-s ל-v שמכיל לכל היותר שלוש קשתות אדומות. הציעו אלגוריתם יעיל ככל שתוכלו שבהינתן צמת s מחליט לכל צמת v בגרף האם יש מסלול (לא בהכרח פשוט) מ-s ל-v שלכל היותר שליש מהקשתות בו אדומות. כלומר, קיים מסלול שמכיל k קשתות כך שלכל היותר k/3 מתוכן אדומות. ניתן להניח שאפשר להגיע מ s לכל צומת אחר בגרף. רמז: הציבו משקלים מתאימים בקשתות שאלה 2 שאלה דומה לזו ראיתם בשיעורי בית. עבור שאלה 2, ישנו פתרון המשתמש בהכפלת הגרף כמו בשאלה הראשונה. במקום זאת נשתמש בשיטה שונה על מנת לפתור בעיה זו.

10 ננסה לכתוב את התנאי הזה כמו למעלה ונקבל
שאלה 2 נשים לב תחילה, שעבור מסלול , ניתן לרשום את האורך שלו ע"י המטרה שלנו היא למצוא האם קיים מסלול כך ש ננסה לכתוב את התנאי הזה כמו למעלה ונקבל לכן, אם ניתן משקלות לקשתות כך שמשקל קשת אדומה יהיה ועבור קשת כחולה המשקל יהיה , אז נקבל שהמסלול מכיל לכל היותר שליש קשתות אדומות אמ"מ את הבעיה הזאת נוכל לפתור באמצעות אלגוריתם למציאת מסלול במשקל מינימאלי. אם המסלול המינימאלי הוא ממשקל לכל היותר אפס, אז קיים מסלול עם לכל היותר שליש קשתות אדומות. מצד שני אם קיים מסלול עם לכל היותר שליש קשתות אדומות, אז המשקל שלו יהיה לכל היותר אפס, ולכן גם המסלול המינימאלי יהיה לכל היותר אפס.

11 לכן נוכל למצוא ב את אורך המסלול הקצר ביותר מ לכל צומת אחר.
שאלה 2 מאחר ויש קשתות עם משקלים שליליים, נצטרך להריץ את אלגוריתם בלמן פורד על מנת למצוא מסלול קצר ביותר. לכן נוכל למצוא ב את אורך המסלול הקצר ביותר מ לכל צומת אחר. אבל... אלגוריתם בלמן פורד נכון רק אם אין מעגלים שליליים בגרף. איך ניתן לשנות את האלגוריתם כדי שנוכל להשתמש בו בבעיה זו? נשים לב שמעגלים שליליים הם "טובים" עבור הבעיה שלנו. נצטרך, אם כך, למצוא את כל הצמתים שקיים מסלול אליהם שעובר דרך מעגל במשקל שלילי. לצמתים כאלו בהכרח יהיה מסלול (לא בהכרח פשוט) עם משקל שלילי, ולכן קיים מסלול עם פחות משליש קשתות אדומות. צמתים שלא קיים מסלול עבורם העובר דרך מעגל במשקל שלילי, אז פונקצית המרחק עבורם מוגדרת היטב

12 נסמן את צמתי המעגל ע"י (ומפשטות ) אז
סימון: נסמן ב את הפונקציה המחושבת ע"י אלגוריתם בלמן פורד באיטרציה ה i טענה 1: נתונה הרצה של בלמן פורד על גרף מכוון G. אם C מעגל במשקל שלילי פשוט, אז אם מבצעים n איטרציות נוספות של שיפורים על הקשתות, אז לכל צומת במעגל יתקיים ש הוכחה: נסמן את צמתי המעגל ע"י (ומפשטות ) אז

13 סימון: נסמן ב את כל הצמתים המקיימים
נשים לב שאם עבור צומת v לא קיים מסלול מ s העובר דרך מעגל עם משקל שלילי, אז פונקצית המרחק מוגדרת היטב ולכן נשארת קבועה עבור לכן אם אז בהכרח קיים מסלול מ s המגיע אליו ועובר במעגל שלילי. נגדיר עכשיו גרף חדש ע"י איחוד של הצמתים לצומת בודד נריץ BFS מצומת זה.

14 נניח ש נמצא בעץ הזה. לכן קיים , כך שיש מסלול , בגרף המקורי ממנו אל .
טענה 2: הצמתים בעץ שנוצר השונים מ הם בדיוק הצמתים ב שיש אליהם מסלול העובר במעגל ממשקל שלילי בגרף המקורי. הוכחה: נניח ש נמצא בעץ הזה. לכן קיים , כך שיש מסלול , בגרף המקורי ממנו אל . מאחר ו אז קיים w על מעגל שלילי ומסלול מ w אל u . לבסוף המשקל של w שונה מאינסוף ולכן קיים מסלול מ s אל w. שרשור המסלולים הללו יתן לנו מסלול מ s אל v העובר בצומת השייך למעגל שלילי. אם לעומת זאת v הוא צומת, אשר קיים מסלול מ s אליו העובר ב u השייך למעגל שלילי, אז ולכן קיים מסלול מ אל v בגרף החדש.

15 טענה 2: הצמתים בעץ שנוצר השונים מ הם בדיוק הצמתים ב שיש אליהם מסלול העובר במעגל ממשקל שלילי בגרף המקורי. V u U w מעגל במשקל שלילי S שימו לב שיכול להיות ש S שייך ל U

16 אלגוריתם: הרץ את אלגוריתם בלמן פורד במשך 2n איטרציות ומצא את
צור את הגרף הרץ BFS החל מהצומת אתחל את לכל צומת אם הצומת נמצא בעץ BFS או ב אז אחרת, אם אז החזר את סיבוכיות: הרצת בלמן פורד לוקחת (גם 2n איטרציות). יצירת הגרף החדש הרצת BFS הלולאה ב (5) מתבצעת לכן סה"כ סיבוכיות זמן ריצה תהיה

17 שאלה 3: סעיף א: נתון האלגוריתם הבא למציאת עפ"מ: בחר צומת אקראי , הסר אותו ואת כל הקשתות הנוגעות בו מהגרף. - מצא עפ"מ (או עפמ"ים אם הגרף הנותר לא קשיר) לצמתים הנותרים באופן רקורסיבי. - חבר את הצומת לכל אחד מהעפ"מים שהתקבלו רקורסיבית באמצעות הקשת הקלה ביותר המחברת בין לעפ"מ. הוכח או הפרך: האלגוריתם הנ"ל תמיד מחזיר עפ"מ.

18 איפה יכולה להיות בעיה באלגוריתם?
לאחר שיצרנו את העפ"מים הנוספים בגרף המושרה ע"י , ישנה בדיוק קשת אחת המחברת כל עפ"מ כזה לצומת לכן, נרצה לבנות גרף עבורו לאחד העפ"מים הללו, חייבות להיות שתי קשתות לפחות המחוברות ל דוגמא: 10 1 10 10 1

19 שאלה 3: סעיף ב: נתון גרף פשוט לא מכוון , פונקצית משקל ועץ פורש מינימום לפי פונקצית המשקל הנ"ל. בנוסף נתונה קבוצת קשתות כלשהן שאינן ב- כך שעבור כל קשת בקבוצה Q מתקיים: במסלול בין ל- ב- יש קשת שמשקלה זהה למשקל (כלומר ). הוכח או הפרך: כל עץ פורש בגרף הינו עפ"מ.

20 תזכורת: אם נתון לנו עץ וקשת שאינה בעץ, ובנוסף נתון שקיימת קשת במסלול המחבר את ל כך ש אז הוא עץ ומתקיים ש לא! האם זה גורר שהטענה נכונה? ההבדל בין הטענה לתזכורת הוא שבתזכורת הוספנו בדיוק קשת אחת לעץ. יכול להיות שקיימות שתי קשתות כך שהקשת בעץ המתאימה להן היא אותה קשת דוגמא: 1 10 1 10

21 שאלה 3: סעיף ג: נתון גרף פשוט לא מכוון ופונקצית משקל בנוסף נתונה קשת הציעו אלגוריתם יעיל ככל שתוכלו המחשב את העץ הפורש במשקל מינימאלי המכיל את e. (כלומר עץ פורש במשקל הכי קטן מבין כל העצים הפורשים המכילים את e.) הוכיחו נכונות ונתחו סיבוכיות. פתרון: היינו רוצים להריץ את אחד מהאלגוריתמים למציאת עפ"מ שאנו כבר מכירים ולהכריח אותו לקחת את הקשת דרך ראשונה היא להקטין את המשקל של כך שהוא יהיה קטן מכל שאר המשקלות בגרף. נשים לב שזה משנה את משקל העפ"מ, אך זה לא ישנה את היחס בין שני עפ"מים המכילים את

22 נסמן . נגדיר פונקצית משקל חדשה הזהה ל בכל הקשתות פרט ל שם היא
נשים לב שבעזרת הפונקציה החדשה נקבל שהמשקל של הוא קטן ממש מכל שאר הקשתות ולכן נקבל את הטענה הבאה טענה 1: הקשת נמצאת בכל עפ"מ בפונקצית המשקל החדשה הוכחה: נבחר חתך כלשהו המכיל את הקשת. מאחר והמשקל שלה קטן ממש מכל המשקלות של שאר הקשתות, אז זה נכון בפרט לחתך הזה, ולכן לפי הכלל הכחול הקשת חייבת להיות בכל עפ"מ בפונקצית המשקל החדשה. טענה זו מראה שניתן להסתכל על עפ"מים בפונקצית המשקל החדשה. נראה עתה שהכיוון השני גם נכון, כלומר מספיק להסתכל רק על העפ"מים בפונקצית המשקל החדשה.

23 סימון: נסמן ב את קבוצת העצים הפורשים המכילים את הקשת .
טענה 2: אם הוא עץ פורש מינימלי בקבוצה , אז הוא עפ"מ בפונקצית המשקל החדשה. הוכחה: נניח ש T הוא עץ כנ"ל ונניח בשלילה שקיים עפ"מ בפונקצית המשקל החדשה, כך ש לפי הטענה הקודמת, מתקיים ש ולכן אבל גם ולכן מאחר ששני העצים מכילים את אז שניהם נמצאים ב ולכן ממינימליות של מתקיים ש וקיבלנו סתירה.

24 משתי הטענות הנ"ל מקבלים שעץ פורש במשקל מינימאלי המכיל את בפונקצית המשקל הרגילה, הוא עפ"מ בפונקצית המשקל החדשה. מצד שני, עפ"מ בפונקצית המשקל החדשה חייב להכיל את וע"י הסבר דומה לטענה הקודמת מקבלים שהוא במשקל מינימאלי מבין לכן בעית מציאת עפ"מ המכיל את עברה להיות בעיית מציאת עפ"מ בפונקצית המשקל החדשה. אלגוריתם: הגדר את פונקצית המשקל החדשה הרץ אלגוריתם למציאת עפ"מ T לפי פונקצית המשקל החדשה החזר את T סיבוכיות: ההגדרה של פונקצית המשקל החדשה, ניתן לעשות ב כי צריך לחפש את המשקל המינימלי. לאחר מכן ניתן להריץ את אלגוריתם Prim בזמן מכאן שסה"כ סיבוכיות זמן ריצה תהיה

25 שיטה שניה: ניצור גרף חדש ובו נאחד את שני הצמתים כך ש ונסמן את הצומת החדש ב . נריץ עתה אלגוריתם למציאת עפ"מ בגרף החדש כדי לקבל את ניצור עתה את העץ ע"י הרחבת הצומת חזרה לשני הצמתים המקוריים והוספת הקשת בינהם. נשים לב שבעצם שיטה זו היא מקרה פרטי של השיטה הקודמת. אם מריצים את אלגוריתם Kruskel אז באיטרציה הראשונה האלגוריתם יאחד את שני הצמתים לעץ בודד. אם מריצים את אלגוריתם Prim כאשר השורש של העץ נבחר להיות אחד מהצמתים הנ"ל, אז גם פה באיטרציה הראשונה, האלגוריתם יאחד את שני הצמתים לעץ. מכאן שהנכונות נובעת מנכונות השיטה הקודמת. סיבוכיות: כדי לאחד את שני הצמתים צריך ליצור את הגרף החדש, ואת זה ניתן לעשות ב לכן גם הפעם נקבל שהסיבוכיות תהיה סיבוכיות האלגוריתם למציאת עפ"מ.


Download ppt "שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה."

Similar presentations


Ads by Google