חומרי לימוד - מדעי המחשב
Transcription
חומרי לימוד - מדעי המחשב
י"ט/אייר/תשע"ה עץ בינארי של מחסניות סריקה -שאלה מבגרות תשע''ב ב .מהי סיבוכיות זמן הריצה של הפעולה שכתבת? הנח כי כל פעולות הממשק הבסיסיות של עץ בינארי הן בO(1) - 1 עץ בינארי של מחסניות סריקה -בגרות תשע''ב הפתרון – פעולת עזר לביצוע החישוב עבור מחסנית בודדת סכום שלושת הערכים העליונים במחסנית )public static int MaxTop3Stack(Stack<int> s { //מחזירה את סכום שלושת הערכים העליונים במחסנית אם קיימים ,אם יש פחות משלושה תחזיר הסכום של כולם ,אם המחסנית ריקה תחזיר .0הנחה -המחסנית אותחלה ;int sum = 0, count = 0 )while (!s.IsEmpty() && count < 3 { ;)(sum += s.Top ;count++ ;)(s.Pop } ;return sum } עץ בינארי של מחסניות סריקה -בגרות תשע''ב 2 1 י"ט/אייר/תשע"ה הפתרון – הפעולה העיקרית -לא מותאמת לדרישות השאלה )public static void Tree_MaxTop3Stack(BinTreeNode<Stack<int>> t, Stack<int> s_new { //הפעולה מקבלת עץ בינארי של מחסניות מספרים שלמים וכן כפרמטר מחסנית של מספרים. //הפעולה מחזירה במחסנית הפרמטר ,מתוך העץ לפי סדר סריקה תוכית ,את סכום שלושת הערכים העליונים בכל מחסנית (אם יש פחות מ ,3-מה שיש). //הנחות -העץ אותחל ,המחסנית אותחלה ובקריאה ראשונה המחסנית ריקה ;Stack<int> s )if (t != null { ;)Tree_MaxTop3Stack(t.GetLeft(), s_new ;)(s = t.GetInfo ;))s_new.Push(MaxTop3Stack(s ;)Tree_MaxTop3Stack(t.GetRight(), s_new } } 3 עץ בינארי של מחסניות סריקה -בגרות תשע''ב הפתרון – הפעולה העיקרית -לפי דרישות השאלה הפעולה רק מפעילה את הפעולה הקודמת שהיא למעשה מבצעת הנדרש בשאלה. בפעולה זאת מחזירים מחסנית ומקבלים רק עץ -כפי שמתואר בשאלה. יש כאן שימוש בהעמסה (שתי פעולות עם אותו שם ,אבל ,מקבלות סוגי פרמטרים שונים) )public static Stack<int> Tree_MaxTop3Stack(BinTreeNode<Stack<int>> t { //הפעולה מקבלת עץ בינארי של מחסניות מספרים שלמים וכן כפרמטר מחסנית של מספרים. //הפעולה מחזירה במחסנית הפרמטר ,מתוך העץ לפי סדר סריקה תוכית ,את סכום שלושת הערכים העליונים בכל מחסנית (אם יש פחות מ ,3-מה שיש). //הנחות -העץ אותחל ;)(>Stack<int> s_new = new Stack<int ;)Tree_MaxTop3Stack(t, s_new ;return s_new } עץ בינארי של מחסניות סריקה -בגרות תשע''ב 4 2 י"ט/אייר/תשע"ה סיבוכיות זמן הריצה של הפעולה ב .מהי סיבוכיות זמן הריצה של הפעולה? תשובה סיבוכיות זמן הריצה של הפעולה MaxTop3Stackהיא ) ,O(1שכן ללא תלות בגודל המחסנית ,היא עוברת מקסימום על 3ערכים בה .הפעולה נעזרת בפעולות הממשק של מחסנית שכולן ב.O(1)- הפעולה - Tree_MaxTop3Stackהמקבלת גם מחסנית ,היא בסיבוכיות זמן ריצה של ) ,O(nכיוון שעוברים בדיוק פעם אחת באמצעות הרקורסיה ,במקרה הגרוע ביותר ,על כל אחד מ n-הצמתים בעץ וכל הפעולות שהשתמשנו בהם הם פעולות ממשק בסיסיות של עץ שהם ב O(1)-או פעולת העזר MaxTop3Stackשגם היא ב O(1)-כיוון שהיא בעצמה כוללת רק פעולות בסיסיות של ממשק. הפעולה - Tree_MaxTop3Stackהמקבלת רק עץ ,היא בסיבוכיות זמן ריצה של ),O(n שכן היא מפעילה בדיוק פעם אחת את הפעולה - Tree_MaxTop3Stackהמקבלת גם מחסנית שהיא בסיבוכיות זמן ריצה של )( O(nוגם מפעילה פעולת ממשק של מחסנית שהיא ב.)O(1)- עץ בינארי של מחסניות סריקה -בגרות תשע''ב 5 3