חידה לחימום באדמות חולדה-לד ישה רשת עפה של מחילות של חולדות .המחילות בויות מבורות המחוברים בייהם על-ידי קטעי-מחילה .בין כל שי בורות ישו לכל היותר קטע-מחילה ישיר אחד .תוה מפה של רשת קטעי-מחילה ,ובה לא-מעט מעגלים .או אומרים שיש מעגל כאשר קיימים שי בורות המחוברים בייהם בשי מסלולים )רצפים( זרים של קטעי-מחילה. הוחלט להצר את תועת החולדות ברשת ,על-ידי סתימת קטעי-מחילה. המטרה היא לסתום מספר מיימאלי של קטעי-מחילה אשר ייצור מצב שברשת לא יהיו מעגלים. עליכם לכתוב תכית שהקלט שלה הוא מפת קטעי-המחילה )והבורות שהם מחברים( ,והפלט שלה הוא המספר המיימאלי של קטעי-מחילה שיש לסתום כדי ליצור מצב שבו אין אף מעגל ברשת. התון הראשון בקלט הוא מספר הבורות ברשת ) ,(5 < N < 50אשר ממוספרים מ 1-עד .Nאחרי התון הראשון תוה רשימה של קטעי-מחילה ,אשר כל אחד מהם מתואר על-ידי זוג הבורות אותו הוא מחבר .הרשימה מסתיימת בזוג ) .(0,0כל בור מופיע ברשימה לפחות פעמיים .ייתכו בורות אשר אין בייהם מסלול של קטעי-מחילה. לדוגמא ,עבור הקלט הבא: 7122334411356675700 הפלט יהיה .3 1 מבי תוים ויעילות אלגוריתמים )(11.2.2015 .1מציאת רכיבים קשירים היטב )(Strongly Connected Components אחד היישומים של האלגוריתם לחיפוש לעומק הוא פירוק של גרף מכוון לרכיביו הקשירים היטב .כזכור ,עבור גרף מכוון ) ,G = (V,Eרכיב קשיר היטב )הקרא גם רכיב קשיר בחוזקה – רק"ח; ובאגלית קרא – SCC (Strongly Connected Componentזו קבוצת קודקודים U Vמקסימלית )גדולה ככל האפשר( כך שעבור כל זוג קודקודים uו v-ב ,U-קיים מסלול מכוון מ u-ל v-וגם מסלול מכוון מ v-ל .u-כלומר ,הקודקודים uוv- יתים להגעה הדדית. אם ריץ את DFSעל גרף מכוון ,אז ברור ששי קודקודים ששייכים לאותו רק"ח ) (SCCמצאים על אותו עץ עומק .מאידך ,ייתכו קודקודים השייכים לאותו עץ עומק ,אולם אמורים להשתייך לרק"חים שוים .לדוגמא: באיור ה"ל יתן לראות את מועדי הגילוי והסיום של קודקודים בגרף מכוון ,לאחר הרצת .DFSהקשתות המודגשות הן קשתות עץ )האלגוריתם בה שי עצי עומק( ,והאזורים המוצללים הם הרק"חים )יש ארבעה(. לכן ,הרצה אחת של DFSאיה מספיקה .איך קבל ,אם כך ,את הרק"חים? בה גרף הדומה ל ,G-פרט לכך שכיווי הקשתות המכווות הם הפוכים .גרף כזה יסומן GTויקרא הגרף המשוחלף ) (transposed graphשל .Gקבוצת הקודקודים שלו זהה לזו של ) Gכלומר ,זו הקבוצה ,(Vואילו קבוצת הקשתות שלו ,שתסומן ,ETמכילה קשת ) (u,vאם ורק אם הקשת ההפוכה ) (v,uמצאת ב) E-בקבוצת הקשתות של .(Gפורמלית ,רשום זאת כך , GT = (V, ET) :כאשר }. E T {(u, v) | (v, u) E לגרף הזה קוראים גרף משוחלף ,משום שיתן לקבל אותו על-ידי ביצוע פעולת שיחלוף ) (transposeעל מטריצת הסמיכויות )השכויות( המייצגת את הגרף. כעת ,ריץ את האלגוריתם DFSעל הגרף המשוחלף ,GTכאשר בכל פעם שאחו צריכים לבחור בין כמה קודקודים לבים )למשל :בלולאה בשורות 5-7ב DFS-או הלולאה בשורות 4-7ב ,(DFS-VISIT-במקום לבחור שרירותית ,בחר את הקודקוד הלבן שמועד הסיום שלו ) ,(finishedשקבע על-ידי הרצת DFSעל הגרף ,Gהוא הגבוה ביותר. עצי העומק המתקבלים כתוצאה מריצה זו של האלגוריתם ,מתאימים לרכיבי הקשירות בחוזקה של .G 2 אם תון לו גרף מכוון ) ,G = (V,Eאז לאחר שאו יודעים מיהם הרק"חים שלו ,יתן לבות את גרף הרכיבים ) (components graphשל .Gגרף זה יסומן ) , GSCC = (VSCC, ESCCכאשר VSCCמכילה קודקוד אחד עבור כל רכיב קשיר היטב ב ,G-ו ESCC-מכילה את הקשת ) (u,vאם מקודקוד ברכיב הקשיר היטב של Gהמתאים לu- קיימת קשת מכוות לקודקוד ברכיב הקשיר היטב של .vלדוגמא: שאלה בהיתן גרף מכוון ) ,G = (V,Eמהי סיבוכיות זמן הריצה של ביית גרף הרכיבים שלו )? GSCC = (VSCC, ESCC שאלה הוכיחו כי גרף רכיבים GSCCהוא תמיד גרף מכוון ללא מעגלים )בראשי תיבות :גמ"ל .באגלית מקובלות ראשי התיבות.(DAG – Directed Acyclic Graph : 3 .2פתרון משוואות סיגה ליאריות אי-הומוגיות למדו לפתור משוואת סיגה ליארית הומוגית: ) f (n) c1 f (n 1) c 2 f (n 2) c3 f (n 3) ... c k f (n k שראית גם כך: f (n) c1 f (n 1) c 2 f (n 2) c3 f (n 3) ... c k f (n k ) 0 כעת ,רצה ללמוד לפתור גם משוואות מהצורה הבאה: )f (n) c1 f (n 1) c 2 f (n 2) c3 f (n 3) ... c k f (n k ) g (n כאשר . g(n) ≠ 0משוואה כזו קרא משוואת סיגה ליארית אי-הומוגית. יש מספר דרכים לפתור משוואות סיגה כאלו .הדרך הראשוה היא פשוטה ,אך איה מתאימה לשימוש עבור כל משוואות הסיגה .בשיטה זו רושמים את וסחת הסיגה עבור ,nואז את וסחת הסיגה עבור .n-1מחסרים בין שתי המשוואות ,ומבצעים פעולות אלגבריות כדי לקבל משוואת סיגה ליארית הומוגית ,שאותה אחו כבר יודעים איך לפתור .שיטת פתרון זו מכוה לעיתים 'שיטת ההפרשים'. שאלה פתרו את וסחת הסיגה , T(n) = 2T(n-1) + 1עם תאי ההתחלה . T(1) = 1 , T(2) = 3 תשובה עביר אגפים: T(n) – 2T(n-1) = 1 ציב :n-1 T(n-1)-2T(n-2) = 1 חסר מהמשוואה הראשוה את המשוואה השייה ,וקבל: T(n) – 3T(n-1) + 2T(n-2) = 0 קיבלו משוואת סיגה ליארית הומוגית! פתור אותה בשיטה המוכרת: ציב iבמקום ) , T (iוקבל. n 3 n 1 2 n 2 0 : צמצם ב , n 2 -וקבל את המשוואה האופייית. 2 3 2 0 : פרק לגורמים , ( 1)( 2) 0 :כלומר – הפתרוות הם 1 1 :ו. 1 2 - לכן ,צורת הפתרון היא. T (n) A1 1n A2 2 n : כדי לחשב את ערכם של הקבועים A1 , A2שתמש בתאי ההתחלה. ציב n = 1וקבל , 1 A1 2 A2 :ציב n = 2וקבל3 A1 4 A2 : קיבלו מערכת של שתי משוואות בשי עלמים ,שפתרוה. A1 1, A2 1 : לכן ,הביטוי המפורש המתאר את וסחת הסיגה הואT (n) (1) 1n 1 2 n : כלומר , T (n) 2 n 1 :כפי שרציו להראות. שאלה את סעיף ד' של שאלה 3בבחיה החיצוית משת תשס"ב ) (2002פתרו בעבר בעזרת שיטת האיטרציה .פתרו אותו כעת באמצעות השיטה לפתרון וסחאות סיגה ליאריות אי-הומוגיות. 4
© Copyright 2024