תרגיל מס

‫מכללת אורט כפר‪-‬סבא‬
‫מב‪‬י ‪‬תו‪‬ים ויעילות אלגוריתמים‬
‫תרגיל מס' ‪20‬‬
‫פתרו את השאלות הבאות‪ .‬יש לסיים את התרגיל עד יום ד' )‪.(18.2‬‬
‫שאלה ‪1‬‬
‫א‪ .‬פתרו את שאלה ‪ 5‬מהבחי‪‬ה החיצו‪‬ית של ש‪‬ת תשס"ג )‪.(2003‬‬
‫ב‪ .‬מדוע באלגוריתם המרה מדובר רק על קשתות עץ )‪ (tree edges‬וקשתות אחורה ) ‪back‬‬
‫‪ ,(edges‬ולא על קשתות חוצות )‪ (cross edges‬וקשתות קדימה )‪?(forward edges‬‬
‫ג‪ .‬הסבירו מדוע סיבוכיות זמן הריצה של האלגוריתם המתואר בסעיף ג' היא )|‪.Θ(|V| + |E‬‬
‫שאלה ‪2‬‬
‫‪‬תון הגרף המכוון )‪ G = (V,E‬הבא‪:‬‬
‫א‪ .‬מצא את רכיבי הקשירות בחוזקה‬
‫)רק"חים( של הגרף‪ ,‬באמצעות‬
‫האלגוריתם ש‪‬למד בכיתה‪.‬‬
‫ב‪ .‬לאחר חישוב הרק"חים‪ ,‬תארו את גרף‬
‫הרכיבים )‪ .GSCC = (VSCC,ESCC‬גרף‬
‫כזה מכו‪‬ה גם 'גרף העל'‪.‬‬
‫)תשובה‪(http://math.eitan.ac.il/graph_theory/040_Strong/040_Strong_intro.htm :‬‬
‫שאלה ‪3‬‬
‫בתוך מב‪‬ה ‪‬תו‪‬ים מסוים מאוחס‪‬ים ‪ n‬איברים ולהם מפתחות שו‪‬ים )כל מפתח הוא מספר שלם‬
‫וחיובי(‪ ,‬ומעו‪‬יי‪‬ים לממש את הפעולה )‪ ,Select(k‬אשר מחזירה את האיבר בעל המפתח ה‪-k-‬י‬
‫בגודלו )לדוגמא‪ :‬הפעולה )‪ Select(1‬תחזיר את האיבר בעל המפתח הקטן ביותר‪Select(n) ,‬‬
‫תחזיר את האיבר בעל המפתח הגדול ביותר‪ ,‬וכו'(‪.‬‬
‫עבור כל אחד ממב‪‬י ה‪‬תו‪‬ים הבאים‪ ,‬הסבירו בקצרה כיצד ‪‬יתן לממש את הפעולה ביעילות‪,‬‬
‫ו‪‬תחו את סיבוכיות זמן הריצה של הפעולה ‪ Select‬לפי ‪) n‬מספר האיברים במב‪‬ה( ו‪) k-‬הפרמטר‬
‫של הפעולה ‪.(Select‬‬
‫א‪ .‬מערך ממוין‬
‫ב‪ .‬רשימה מקושרת ממוי‪‬ת‬
‫ג‪ .‬ערימת מי‪‬ימום‬
‫ד‪ .‬טבלת עירבול )‪(Hash Table‬‬
‫‪1‬‬
‫שאלה ‪4‬‬
‫‪‬תון גרף מכוון )‪ G = (V,E‬המיוצג על‪-‬ידי רשימת הסמיכויות הבאה‪:‬‬
‫א‪ .‬שרטט את הגרף‪.‬‬
‫ב‪ .‬הפעל את האלגוריתם חיפוש לעומק )‪ (DFS‬על הגרף ה‪‬תון‪ ,‬החל מהקודקוד ‪ .a‬בהפעלת‬
‫האלגוריתם חשב את ]‪ d[u‬ואת ]‪ ,f[u‬בעבור כל קודקוד ‪ ,u‬כאשר ]‪ d[u‬מציין את מועד‬
‫הגילוי של הקודקוד ‪ u‬בעת הסריקה‪ ,‬ו‪ f[u]-‬מציין את מועד סיום הטיפול בקודקוד ‪.u‬‬
‫כעת שרטט את עץ העומק )עץ ‪ (DFS‬שמתקבל לאחר הרצת האלגוריתם‪ ,‬ומלא את‬
‫הטבלה הבאה‪:‬‬
‫ג‪ .‬יהי )‪ GT = (V,ET‬הגרף המוחלף של הגרף המכוון ‪ G‬ה‪‬תון לעיל‪ .‬שים לב כי קשת מכוו‪‬ת‬
‫)‪ (a,b‬בגרף ‪ ,G‬הופכת להיות קשת מכוו‪‬ת )‪ (b,a‬בגרף ‪ .GT‬שרטט את הגרף ‪.GT‬‬
‫ד‪ .‬הפעל את האלגוריתם חיפוש לעומק )‪ (DFS‬על הגרף ‪ ,GT‬כאשר הלולאה הראשית‬
‫סורקת את קודקודי הגרף בסדר הבא‪ :‬הסדר ‪‬קבע לפי מועדי הסיום )]‪ (f[u‬בסדר יורד‪,‬‬
‫כאשר מועדי הסיום )]‪ (f[u‬חושבו בסעיף ב' עבור הגרף ‪ .G‬כלומר‪ ,‬בהתחלה האלגוריתם‬
‫מופעל על הגרף ‪ GT‬החל מהקודקוד בעל מועד הסיום הגדול ביותר‪ ,‬שחושב על‪-‬ידי ‪DFS‬‬
‫עבור הגרף ‪ G‬בסעיף ב'‪.‬‬
‫שרטט את יער העומק )יער ‪ (DFS‬המתקבל לאחר הפעלת האלגוריתם על הגרף ‪.GT‬‬
‫כזכור‪ ,‬יער עומק הוא אוסף של עצי עומק‪.‬‬
‫ה‪ .‬כמה רכיבי קשירות בחוזקה )רק"ח( ‪ Strongly Connected Components (SCC) -‬יש‬
‫בגרף המוחלף ‪?GT‬‬
‫ו‪ .‬הסק‪ :‬האם ל‪ G-‬ול‪ GT-‬יש בדיוק אותם רכיבי קשירות חזקה? מהו הקשר בין יער‬
‫העומק ש‪‬ב‪‬ה בסעיף ד'‪ ,‬לבין רכיבי הקשירות בחוזקה של הגרף ‪?G‬‬
‫‪2‬‬
‫שאלה ‪) 5‬ממבחן של משרד החי‪‬וך(‬
‫‪3‬‬
‫שאלה ‪) 6‬ממבחן של משרד החי‪‬וך(‬
‫‪4‬‬
‫שאלה ‪7‬‬
‫בשאלה ‪ 9‬בתרגיל ‪ 16‬ראי‪‬ו כיצד ‪‬יתן לכתוב אלגוריתם שזמן ריצתו )‪ (n‬המקבל ש‪‬י עצי ‪AVL‬‬
‫המכילים ‪ n‬איברים כל‪-‬אחד‪ ,‬ובו‪‬ה עץ ‪ AVL‬המכיל את איברי ש‪‬י העצים‪.‬‬
‫א‪ .‬האם ‪‬יתן לב‪‬ות אלגוריתם שזמן ריצתו )‪ , (n‬המקבל ‪ 3‬עצי ‪ ,AVL‬שבכל אחד מהם יש‬
‫‪ n‬איברים‪ ,‬ובו‪‬ה עץ ‪ AVL‬המכיל את איברי כל העצים? אם כן – תארו את האלגוריתם‪,‬‬
‫ואם לא – הסבירו מדוע אלגוריתם כזה לא ייתכן‪.‬‬
‫ב‪ .‬האם ‪‬יתן לב‪‬ות אלגוריתם שזמן ריצתו )‪ , (n‬המקבל ‪ k‬עצי ‪) AVL‬כאשר ‪ k‬הוא מספר‬
‫טבעי וקבוע‪ ,‬אשר אי‪‬ו תלוי ב‪ ,(n-‬שבכל אחד מהם יש ‪ n‬איברים‪ ,‬ובו‪‬ה עץ ‪ AVL‬המכיל‬
‫את איברי כל העצים? אם כן – תארו את האלגוריתם‪ ,‬ואם לא – הסבירו מדוע אלגוריתם‬
‫כזה לא ייתכן‪.‬‬
‫ג‪ .‬האם ‪‬יתן לב‪‬ות אלגוריתם שזמן ריצתו )‪ , (n‬המקבל ‪ n‬עצי ‪ ,AVL‬שבכל אחד מהם יש‬
‫‪ n‬איברים‪ ,‬ובו‪‬ה עץ ‪ AVL‬המכיל את איברי כל העצים? אם כן – תארו את האלגוריתם‪,‬‬
‫ואם לא – הסבירו מדוע אלגוריתם כזה לא ייתכן‪.‬‬
‫שאלה ‪8‬‬
‫פתרו את ‪‬וסחאות ה‪‬סיגה הלי‪‬אריות האי‪-‬הומוג‪‬יות הבאות‪ ,‬עם ת‪‬אי התחלה כרצו‪‬כם‪ ,‬בעזרת‬
‫שיטת ההפרשים‪:‬‬
‫א‪f(n) = f(n-1) + n .‬‬
‫ב‪f(n) = 2f(n-1) + n – 4 .‬‬
‫ג‪.‬‬
‫‪f(n) = 2f(n-1) + 3f(n-2) +3n‬‬
‫‪5‬‬
‫שאלה ‪9‬‬
‫א‪ .‬מספר האיברים המקסימלי בעץ בי‪‬ארי כמעט שלם שגובהו ‪ h‬הוא‪...‬‬
‫‪log2(h) .1‬‬
‫‪2h-1+1 .2‬‬
‫‪2h .3‬‬
‫‪2h+1-1 .4‬‬
‫ב‪ .‬האם תשובתכם לסעיף א' הייתה משת‪‬ה אם היי‪‬ו משמיטים את הדרישה שהעץ‬
‫הבי‪‬ארי יהיה כמעט שלם? ‪‬מקו את תשובתכם‪.‬‬
‫ג‪ .‬מספר האיברים המי‪‬ימלי בעץ בי‪‬ארי כמעט שלם שגובהו ‪ h‬הוא‪...‬‬
‫‪log2(h-1)+1 .1‬‬
‫‪2h-2+1 .2‬‬
‫‪2h-1 .3‬‬
‫‪2h .4‬‬
‫ד‪ .‬האם תשובתכם לסעיף ג' הייתה משת‪‬ה אם היי‪‬ו משמיטים את הדרישה שהעץ הבי‪‬ארי‬
‫יהיה כמעט שלם? ‪‬מקו את תשובתכם‪.‬‬
‫ה‪ .‬הגובה )‪ (height‬של ערימה בי‪‬ארית )‪ (binary heap‬בת ‪ n‬איברים הוא‪...‬‬
‫‪log 2 (n - 1)  1 .1‬‬
‫‪log 2 (n) .2‬‬
‫‪log 2 (n)  1 .3‬‬
‫‪ .4‬אף אחת מהתשובות אי‪‬ה ‪‬כו‪‬ה‪.‬‬
‫‪6‬‬