םימתירוגלאל אוב מו םינותנ ינבמ ןייטשניבור רימא

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "םימתירוגלאל אוב מו םינותנ ינבמ ןייטשניבור רימא"

Transcript

1 מבני נתונים ומבוא לאלגוריתמים אמיר רובינשטיין

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

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

4 דרישות לידע קודם לימודקורסאחדלפחותהכוללשימושבשפתתכנותכלשהי, כמוC, Jv ++C, אושפהאחרת. היכרותעםמספראלגוריתמיםבסיסייםכגון: חיפושבינארי, מיון מיזוג, וכמהמיוניםפשוטים (בועות, הכנסה, בחירהוכדומה). יכולתבסיסיתלסיווגאלגוריתמיםלמחלקותסיבוכיותזמן (אלגוריתמיםלוגריתמיים, ליניאריים, ריבועיים, אקספוננציאליים וכו') היכרותעםמבנינתוניםבסיסייםכמומערך, רשימהמקושרת, תור ומחסנית. כל מצגת בנויה באופן הבא: מבנה המצגות החלקהעיקריהואהצגתהנושאהחדש, במתכונתשלהרצאה. בכלמצגתמופיעותלקראתסופה "שאלותחזרה". אלושאלותקלותיחסית, שמטרתןלאפשרללומדוידואשלהבנתו, בסיסית. וחזרהעלהחומרברמתהבנה אח"כישנההפניהלתרגיליםמומלציםמספרהלימודהמלווהאת המצגות (פרטיםעלהספרבהמשך). רובהתרגיליםבספרנמצאים תחתתתסעיףמסויםבפרקהרלוונטי, וכךהםמאפשריםתרגולתתי נושאיםמתוךהפרק. רמתהקושישלהםמגוונת. לבסוףמופיעיםמספרתרגיליםנוספיםעםפתרונות, בד"כברמתקושי בינוניתומעלה. ספר הלימוד הנושאים מספר מצגת 7 9 מבואויסודות מתמטיים בעייתהמיון ובעייתהבחירה מבנינתונים למילון הנושא מבוא, סיבוכיותשלאלגוריתמים מבני נתונים בסיסיים רקורסיה ואלגוריתמים רקורסיביים מיוןמהיר, והוכחתנכונותשלאלגוריתמים מיוןערימהותור עדיפויות חסםתחתוןלבעיית המיון, ומיוניםליניאריים בעייתהבחירה (מציאתהאיברה i) עצי חיפוש בינאריים עצי AVL הרחבתמבני נתונים, ועצידרגות טבלאותגיבוב (ערבול) מחרוזות trie ואלגוריתם LCS ספרהלימודהעיקריעליומתבססותרוב (אבללאכל) המצגותהינו: מבואלאלגוריתמים, פרקים, מהדורהשנייה, (הוצאתהאוניברסיטההפתוחה) תרגום של הפרקים הראשונים מהספר: זהו Itroductio to Algorithms, d ed. (MIT Press, ). T. H. Corme, C. E. Leiserso, R. L. Rivest, C. Stei שימולב: לספרקיימתמהדורהישנה, אולםהמצגותומספרי התרגיליםתואמיםאתהמהדורההשנייה. * נושאים 9, ו מתבססיםעלפרקיםמספרילימודאחרים 7 אמיר רובינשטיין. הקדמה

5 בתוכנית פרקים בספר הלימוד מבני נתונים ומבוא לאלגוריתמים נכיר כמה מושגים בסיסיים בתחום האלגוריתמים נפגוש שוב כמה אלגוריתמים מוכרים נלמד לנתח סיבוכיות (זמן בעיקר) של אלגוריתמים, ונעזר לשם כך בסימונים: Θ, O, Ω, o, ω נושא מבוא, סיבוכיות של אלגוריתמים Itroductio, complexity of lgorithms אמיר רובינשטיין אמיר רובינשטיין בעיית עוגת התפוחים מבוא ומושגים בסיסיים קלט: ½ כוסות קמח, תפוחים, ביצי חופש, ½ כוס סוכר,... פלט: עוגת תפוחים. אלגוריתם שפותר את הבעיה: רמת פירוט גבוהה מדיי : פתח את המגירה. הוצא את שקית הקמח מהמגירה. פתח את שקית הקמח.... בעיה חישובית problem) (computtiol מבוא ומושגים בסיסיים התאמה של קבוצת קלט (iput) לקבוצת פלט.(output) דוגמאות: קלט מספרים שלמים מערכים של מספרים ממשיים מילים באנגלית אלגוריתם (lgorithm) סדרה של חישובים, אשר מייצרת לכל קלט חוקי פלט מתאים. אלגוריתם הוא למעשה פתרון לבעיה חישובית. מהם החישובים המותרים? תלוי בהקשר. ישנן רמות שונות של רזולוציה: פעולות על סיביות (bits) פלט לכל מספר, ערכו המוחלט המערך כאשר הוא ממוין לכל מילה קבוצת התמורות שלה חיבור, חיסור, כפל, חילוק, פנייה למשתנה (קריאה/כתיבה), השוואה,... רמת פירוט נמוכה מדיי : הכן מהמצרכים עוגת תפוחים מיון מערך,.... מבוא, סיבוכיות של אלגוריתמים מבחינתנו בד"כ אלו יהיו ה"פעולות היסודיות"

6 מבוא ומושגים בסיסיים מימוש של אלגוריתם (implemettio) תכנית מחשב, ייצוג מדויק של אלגוריתם בשפת תכנות כלשהי. הרצה של אלגוריתם (executio) מתן פקודה למחשביםספציפיים לבצע את ההוראות המופיעות במימוש של האלגוריתם. דוגמה: בעיית החיפוש במערך ממויין הגדרת הבעייה: חיפוש במערך ממוין קלט: מערך ממוין A של איברים, וערך נוסף כלשהו.key פלט: אינדקס של A שהמפתח שלו הוא,key אם קיים כזה. LierSerch(A,, key). for i to. if A[i] = key. retur i. retur Nil אילואלגוריתמיםאתם כברמכירים? אילובעיותהםפותרים? אלגוריתם טריוויאלי הפותר את הבעיה (חיפוש ליניארי): פסאודוקוד (pseudocode) הוא "שפה" לתיאור אלגוריתמים המאפשרת להתרכז במבנה האלגוריתם, מבלי להתחשב במאפיינים הייחודיים של כל שפת תכנות. פסאודוקוד לא ניתן להריץ על מחשב, אבל הוא צריך להיות כתוב כך שניתן לתרגמו בקלות לשפת תכנות כלשהי (פירוט בעמ' 7 בספר). הערה: מאותן סיבות, האינדקס הראשון של מערך בקורס שלנו יהיה בד"כ ולא. מדדים להערכת יעילותם של אלגוריתמים הערכת אלגוריתמים והשוואה ביניהם ניתנת לביצוע במישורים שונים: עד כמה האלגוריתם קל להבנה? עד כמה האלגוריתם קל למימוש? עד כמה קל להוכיח נכונות האלגוריתם? אורך המימוש "אלגנטיות" סיבוכיות זמן ריצה כמות פעולות שמבצע האלגוריתם סיבוכיות זיכרון כמות משאבי זיכרון המחשב הדרושים ועוד... אנו נתמקד בעיקר בסיבוכיות זמן וזיכרון, אבל תמיד נשאף לשפר את האלגוריתמים שלנו בכל המדדים (למשל, תמיד נעדיף אלגוריתם "אלגנטי" יותר, אם ביתר המדדים אין הבדל...). אמיר רובינשטיין 7 שיפור : שיפור חיפוש בינארי:. מבוא, סיבוכיות של אלגוריתמים חיפוש במערך ממויין LierSerch(A,, key). i. while i d A[i] key. if A[i] = key. retur i. i i+. retur Nil BirySerch(A,, key). p, q. while p q subrry to serch ot empty. mid (p + q) /. k A[mid]. if key = k. retur mid foud! 7. if key < k. q mid 9. else p mid +. retur Nil ot foud

7 כמה פעולות יבוצעו על מערך בגודל? תלוי איפה (אם בכלל) נמצא האיבר שמחפשים. הסימון Θ שורה אם key לא נמצא כלל: מספר פעמים כמות פעולות LierSerch(A,, key). for i to. if A[i] = key. retur i. retur Nil c + c c c T ( ) = c ( + ) + c+ c = ( c+ c) + ( c+ c) קיבלנו ביטוי מהצורה,+b זאת אומרת פונקציה ליניארית ב. כלומר קצב הגידול של זמן הריצה היא ליניארי ב. למשל, כאשר נגדיל את פי, יגדל זמן הריצה בערך פי (הדבר מדויק יותר ככל ש גדול יותר). מסמנים זאת באמצעות האות היוונית תטא:.T() = Θ() אם key נמצא ב []A יבוצעו בסה"כ מספר קבוע של פעולות (לא תלוי ב ). סימון: ()Θ. ניתוח סיבוכיות זמן כאשר מנתחים את סיבוכיות זמן הריצה של אלגוריתם, למעשה סופרים את כמות הפעולות היסודיות שהוא מבצע, כתלות בגודל הקלט שלו. מדוע סופרים פעולות ולא זמן? כדי להתעלם ממאפיינים של מחשב ספציפי (למשל מהירות מעבד, מספר מחזורי שעון לפעולות יסוד). נסכים כי כל פעולה יסודית (חיבור, כפל, השוואה, העתקה וכו') דורשת מספר קבוע של מחזורי שעון, ומעתה נתעלם מקבועים אלו (או ניקח חסם עליון על כולם). מדוע כתלות בגודל הקלט? כי באופן כללי ככל שגודל הקלט עולה, גם זמן הריצה עולה. למשל, מיון מערך באורך ככל הנראה ידרוש יותר פעולות ממערך באורך. המושג גודל הקלט תלוי באופי הקלט של הבעיה. מספר התאים במערך מערך: למשל: כמות הביטים שמייצגים את המספר מספר שלם: מספר השורות ו/או מספר העמודות, מספר התאים מטריצה: מספר הצמתים ו/או מספר הקשתות גרף: 9 תלות זמן ריצה בקלט באורך מסוים כפי שראינו, לפעמים, גם לקלטים שונים בעלי אותו גודל יש זמן ריצה שונה. כלומר כמות הפעולות תלויה לפעמים גם בקלט עצמו (ולא רק בגודלו). הסימון Θ מחלקות סיבוכיות השימוש ב Θנוח מאוד כאשר משווים את ביצועיהם של אלגוריתמים כך אפשר להשוות קצבי גידול, או סדרי גודל של זמן הריצה שלהם. נסמן ב.Alg של האלגוריתם את קבוצת כל הקלטים בגודל )Κ ( לכל קלט ), I Κ( ) I T ( יציין את זמן הריצה של האלגוריתם הרץ על הקלט הזה. זמן הריצה של Alg במקרה הגרוע (worstcse) הוא: (זמן הריצה הארוך ביותר של Alg על קלט באורך ( T ( ) = mx{ T ( I ) I Κ( )} worst זמן הריצה של Alg במקרה הטוב (bestcse) הוא: (זמן הריצה הקצר ביותר של Alg על קלט באורך ( T ( ) = mi{ T ( I) I Κ( )} best = = = complexity כמות פעולות של אלגוריתמים שונים כתלות בגודל הקלט: T () = Θ() T () = + Θ() T () = Θ( ) T () = + Θ( ) T () = 7 * קישור לערך Big Bg בויקיפדיה: * Θ( ) זמן הריצה של Alg בממוצע :(verge) (זמן הריצה הממוצע של T ( ) = ( T ( I)) / Κ( ) verge I Κ ( ) מסקנות (לא פורמליות כרגע): אפשר להזניח קבועים אפשר להתעלם מאיברים בסדר גודל קטן יותר Alg על כל הקלטים באורך, נקרא גם תוחלת זמן הריצה) הערה: פה הנחנו שהקלטים מופיעים בסיכויים שווים. בד"כ נתעניין יותר בזמן הריצה במקרה הגרוע. אמיר רובינשטיין. מבוא, סיבוכיות של אלגוריתמים

8 Θ() Θ(log) כמה כללים שימושיים לניתוח סיבוכיות. i. while i <. i i + אלגוריתמים בעלי מבנה מהצורה הבאה (< k קבוע) הם ליניאריים:. i. while i <. i i +k. i. while i >. i i k אלגוריתמים בעלי מבנה מהצורה הבאה (< k קבוע) הם לוגריתמיים:. i. i. i. while i <. while i <. while i >. i i *. i i *k. i i / k < k k < המקרה הגרוע: כאשר key לא נמצא כלל ב A. ניתוח חיפוש בינארי בסוף האיטרציה הראשונה גודל תתהמערך בו מחפשים קטן ל / לכל היותר. log < k k = log + בסוף האיטרציה השניה: בסוף האיטרציה ה / לכל היותר. / k לכל היותר. כמה איטרציות? נחפש את ה k בסוף האיטרציה האחרונה: (log הוא השלם המינימלי שגדול ממש מ (k :k הוכיחו: Θ(loglog). i. while i <. i i * i. i. while i <. i i k ומה לגבי:. i. while i >. i k i בכל איטרציה מתבצע מספר קבוע של פעולות (נסמן c), ולכן: Θ(log).T() = c log + = המקרה הטוב: אם key נמצא באמצע A, יבוצעו בסה"כ מספר קבוע של פעולות, כלומר ()Θ. הערה: זהו אלגוריתם אופטימלי מבחינת סיבוכיות זמן עבור בעיית החיפוש במערך ממוין. מיון הכנסה הדגמת איטרציה חיצונית אחת של מיון הכנסה i j דוגמה: בעיית המיון הגדרת הבעייה: מיון הכנסה קלט: רשימה (למשל מערך) A של איברים ) (,,..., שמוגדר עליהם סדר. ).(,,..., כך שהם מסודרים מקטן לגדול:... פלט: תמורה (permuttio) של A: אלגוריתם: מיון הכנסה. j key IsertioSort(A, ). for j to. key A[j]. isert A[j] ito the sorted sequece A[..j]. i j. while i > d A[i] > key. A[i+] A[i] 7. i i. A[i+] key אמיר רובינשטיין. מבוא, סיבוכיות של אלגוריתמים

9 חסמים עליונים ותחתונים לפעמים אנו מעוניינים לתת חסם עליון / תחתון לזמן ריצה של אלגוריתם. כי קשה לחשב את סדר הגודל (Θ) של זמן הריצה, אבל קל לחסום אותו מלמעלה / מלמטה כי מעניין אותנו רק חסם עליון / תחתון לזמן הריצה (דוגמאות?) סימון t() = O(g()) t() = Ω(g()) t() = o(g()) t() = ω(g()) t() = Θ(g()) שם הסימון או גדולה אומגה גדולה או קטנה אומגה קטנה תטא משמעות g אסימפטוטית מ tלאגדולה g אסימפטוטיתמ tלאקטנה g tקטנהאסימפטוטיתמ g tגדולהאסימפטוטיתמ אותוקצבגידול אסימפטוטי סוג החסם עליון תחתון עליון לא הדוק תחתון לא הדוק הדוק נעיר, שניתן לחשב חסמים עליונים / תחתונים הן למקרה הגרוע, הן למקרה הטוב, והן לזמן הריצה הממוצע. 7 ניתוח מיון הכנסה IsertioSort(A, ). for j to. key A[j]. isert A[j] ito the sorted sequece A[..j]. i j. while i > d A[i] > key. A[i+] A[i] 7. i i. A[i+] key המקרה הגרוע הוא כאשר המערך ממוין הפוך (מגדול לקטן). במקרה זה מבצעת הלולאה הפנימית j איטרציות, לכל ערך של j בין ל. הלולאה החיצונית מבצעת איטרציות. נניח שכל איטרציה פנימית דורשת c פעולות, וכל איטרציה חיצונית c פעולות (ללא האיטרציות הפנימיות). ( ) T( ) = c ( j ) + c( ) = c + c( ) =Θ( ) j= המקרה הטוב הוא כאשר המערך ממוין (כרגיל, בסדר עולה). T( ) הפעם הלולאה הפנימית מבצעת איטרציות כל פעם. ) ( ( ( c = = Θ חסם עליון O גדולה חסמים עליונים ותחתונים תהיינה ( t(ו ( g(שתי פונקציות חיוביות אסימפטוטית. t() c g() שלכל :>, cכך קיימים קבועים חיוביים ( t(אם = O(g()) כאמור, לפעמים קשה לחשב את סדר הגודל של זמן הריצה, ואז ננסה לחשב חסם עליון ותחתון בנפרד. ישנם אלגוריתמים (מסובכים) שהחסם העליון והתחתון שלהם לא מתלכדים, ואז סדר הגודל של זמן הריצה שלהם לא ידוע. c g() t() חסמים עליונים t()=o( ) t()=o( ) אלגוריתם שזמן ריצתו t() חסם הדוק??? t()= O(g()) t() = + = O( ) t() = + = O( ) בקורס שלנו ברוב המקרים: או שנוכל לחשב חסם הדוק (Θ) באופן ישיר או שנוכל לחשב חסם עליון וחסם תחתון שמתלכדים לדוגמה: 9 חסמים תחתונים t()=ω(log) t()=ω() אמיר רובינשטיין. מבוא, סיבוכיות של אלגוריתמים

10 גדולה "או" קטנה ו"אומגה" קטנה חסם תחתון Ω תהיינה t() ו g() שתי פונקציות חיוביות אסימפטוטית. תהיינה ( t(ו ( g(שתי פונקציות חיוביות אסימפטוטית. lim t()/g() = t() = + = o( ) t() = + o( ) o(g()) ( t(אם = לדוגמה: t() c g() שלכל :>, cכך קיימים קבועים חיוביים ( t(אם = Ω(g()) t() lim t()/g() = t() = + = ω() t() = + ω( ) ω(g()) ( t(אם = לדוגמה: לדוגמה: t()= Ω(g()) c g() t() = + = Ω( ) t() = + = Ω() חסמים כללים שימושיים () חסם הדוק Θ כעת (סוף סוף) נגדיר פורמלית את Θ: תהיינה ( t(ו ( g(שתי פונקציות חיוביות אסימפטוטית. הוכיחו: אם ()) f () = O(g וגם ()) f () = O(g א. ()}) f () + f () = O(mx{g (), g אז: שמתקיים לכל כך cו קיימים קבועים חיוביים c, ( t(אם = Θ(g()) c g() t() cg() t() cg() ב. ()) f () f () = O(g () g c g() t() = Ω(g()) אם"ם O(g()) t() = וגם t() = Θ(g()) t() o(g()) אם"ם O(g()) t() = וגם t() = Θ(g()) t() ω(g()) אם"ם Ω(g()) t() = Θ(g()) t() = וגם אמיר רובינשטיין. מבוא, סיבוכיות של אלגוריתמים

11 כללים שימושיים חסמים כללים שימושיים () () חסמים לכל k> ε, ) ε log k = o( (הוכחה בעזרת כלל לופיטל) טענה: עבור kקבוע כלשהו, תהיינה () fפונקציות,() f k חיוביות אסימפטוטית, אז: למשל: ). log = o( f( ) + f( ) fk ( ) = Θ(mx{ fi ( )}) > עבור k = o( ) <<b עבור = o(b ) לדוגמה: ) 7log+ + = Θ( ( x ) i = i = i = i x = x (< x< ) i= ( + ) =Θ ( + = Θ( x x ) i x = /( x) =Θ() ) חשבוני: טור טור גיאומטרי: טור גיאומטרי מתכנס: הוכחה: עבור מספיק גדול: mx{ fi ( )} f( ) + f( ) fk ( ) k(mx{ fi ( )}) ( d H = i = ) i = i d i = Θ(log ) i = Θ( d ) הטור ההרמוני: פולינום מדרגה d: שאלה: האם הטענה נכונה גם כאשר מספר המחוברים אינו בהכרח קבוע, אלא תלוי ב? היררכיה של סיבוכיות היררכיה של סיבוכיות log(!) = Θ(log) קבוע טענה חשובה: Θ() Θ(loglog) log(!) log( ) = log log(!) = O(log) לוגריתמי פולילוגריתמי Θ(log) Θ(log ) log(!) = log( ( ) ) log( ( )... ) log(... + log( ) log( ) = log( ) = (log ) (log log ) = ) = log log(!) = Ω(log) ליניארי ריבועי אקספוננצילי (מעריכי) Θ() Θ( ) Θ( ) Θ( ) Θ(log) Θ( log) 7 אמיר רובינשטיין. מבוא, סיבוכיות של אלגוריתמים

12 קביעת סיבוכיות זמן של אלגוריתמים ננתח את סיבוכיות הזמן של האלגוריתם הבא, המקבל מערך ממוין A, גודלו, ומפתח לחיפוש :key AlgSerch(A,, key). for i to. foud BirySerch(A, i, key). if foud Nil. prit(key is locted t idex foud ) המקרה הגרוע אף חיפוש לא מצליח כל חיפוש מתבצע ב :O(log) לכן. לחיפוש בינארי על תת מערך בגודל קריאות גס: ניתוח T() = O(log) = O(log) ניתוחזהיריותר: סיבוכיות הזמן של חיפוש על תתמערך באורך iהיא :Θ(logi) T ( ) = Θ(logi) =Θ(log(!)) =Θ( log ) i= קביעת סיבוכיות זמן של אלגוריתמים ננתח את סיבוכיות הזמן של האלגוריתם הבא כפונ' של : Alg(A, ). s. for i to. j. while j. j j + i. s s + A[i] ישנן איזה מקרה ננתח? גרוע? טוב? הפעם אין הבדל! בכל מקרה מתבצעת אותה כמות של פעולות. ניתוח גס: לולאות מקוננות (אחת בתוך השנייה). לולאה חיצונית שמבצעת איטרציות לולאה פנימית שמבצעת לכל היותר איטרציות כל פעם: T() c + (c + c ) = O( ) ניתוחזהיריותר: מספר האיטרציות הפנימיות תלוי בערכו של iוהוא שווה ל. /i.θ() המקרה הטוב כל החיפושים מצליחים מייד קריאות לחיפוש בינארי, שמבצע ( Θ( פעולות. סה"כ איך נראה הקלט שנותן את המקרה הטוב? 9 ( T ) = Θ( / i ) =Θ( ( )) =Θ( H ) =Θ( log ) i=.. תשובות לשאלות חזרה למשל, O הוא חסם עליון, אותו אפשר לחשב הן עבור המקרה הגרוע, הן עבור המקרה הטוב, והן עבור זמן הריצה הממוצע. סיבוכיות הזמן של קטע הקוד השמאלי היא ( Θ(ואילו של הימני היא ()Θ. למעשה, השאלה שנשאלת כאן היא מהו קצב הגידול של זמן הריצה כתלות ב. כלומר, אם למשל מגדילים את פי, פי כמה יגדל זמן הריצה? בקטע הימני זמן הריצה ליניארי ב ויגדל בערך פי, ואילו בקטע השמאלי זמן הריצה כלל לא ישתנה, כלומר הוא אינו תלוי כלל ב. =m.99 =logm או.99 לדוגמה,.m. קטן אסימפטוטית בסדר גודל מ.=m אבל לא =½m או.. שאלות חזרה האם אתם מבינים מה ההבדל בין זמן ריצה במקרה גרוע/טוב/בממוצע לבין חסם עליון/תחתון/הדוק? מהי סיבוכיות הזמן כתלות ב של שני הקטעים הבאים? שימו לב ששני הקטעים מבצעים בדיוק אותו דבר... for i to... for i to.. מה המשמעות של השוויון?=o(m) תנו דוגמה ל ול m המקיימים אותו. = T () =.* 7 sec. יש לחלק כל מספר ב. 9 תשובה עבור =: T () = + T () = T () = + T () =.* כ טריליון שנים. המפץהגדולארעלפניכ מיליארדשנים. * sec sec sec הסתכלו שוב בשקף שכותרות "הסימון Θ מחלקות סיבוכיות". נניח שבידנו מחשב המבצע מיליארד פעולות בסיסיות בשנייה. כמה זמן יידרש להרצת האלגוריתמים שזמני הריצה שלהם מתוארים ע"י ה T i השונים עבור,=?,. אמיר רובינשטיין. מבוא, סיבוכיות של אלגוריתמים

13 טורים וכללים שימושיים חוקי חזקות ולוגריתמים שימושיים k ( m = / ) = k m i = i= ( + ) =Θ( ) טור אריתמטי: m = m+ ( x ) i x i = = x + = Θ( x ) x טור גאומטרי: log ( b) = log log c c b logb c = b logb c = log logc logb = log = c c logb c b + log log (/ ) = log b c b (< x< ) i= i = i x = /( x) =Θ() ( + )(+ ) i = ( ) = + = i i ( c + = + i i bi ) c i= i i= = Θ( f ( i)) =Θ i= i= ( f ( i) ) b i טור גאומטרי אינסופי יורד: טור ריבועים: טור מעוקבים: ליניאריות של סכום: ליניאריות הסימונים האסימפטוטיים: פרק תרגילים מומלצים מהספר (אפשר לוותר על ביטויים המכילים את פונקצית הלוגריתם החוזר (log* בעיה בעיה בעיה בעיה פרק. בעיה פרק....7 בעיה בעיה בעיה תרגילים אמיר רובינשטיין. מבוא, סיבוכיות של אלגוריתמים

14 תרגילים נוספים. הוכיחו או הפריכו כל אחת מהטענות הבאות באופן פורמלי, תוך שימוש בהגדרות לחסמים אסימפטוטיים: א. Θ(log) log(log) = ג. ) + + = O( ב. Θ(log) log = =Θ( ד. ) t. סדרו את הפונקציות הבאות לפי סדר גודל אסימפטוטי: log ( ) = t( ) = log(!) t( ) = (log log )..7 שני סעיפים מתוך בעיה מספר הלימוד. יהיו f() ו g() שתי פונקציות חיוביות אסימפטוטית. הוכיחו או הפריכו: ג. אם f()=o(g()) ד. אם f()=o(g()) אז.log(f())=O(log(g())) נתון גם כי שתי הפונקציות אינן חסומות. אז ) g() f() = O( הראו דוגמה ל פונקציות f() ו g() שעבורן לא מתקיים f()=o(g()) וגם לא מתקיים.f()=Ω(g()) (ומכאן שהאנלוגיה לאלגברה לא תמיד עובדת: כזכור, לכל שני ממשיים,x y מתקיים לפחות אחד מהשניים: או x y או (x y תרגילים נוספים.. נתון מערך A בגודל. ידוע ש האיברים הראשונים שלו ממוינים. הציעו אלגוריתם שממיין את A בסיבוכיות זמן ליניארית. נתון מערך A בגודל של מספרים ממשיים, ומספר ממשי נוסף z. א. הציעו אלגוריתם שמכריע האם קיימים שני אינדקסים שונים i ו j כך ש.A[i]+A[j] = z ב. מה צריך לשנות באלגוריתם כדי שיחזיר גם את i ו j הנ"ל, אם הם קיימים?. א. נתחו את סיבוכיות הזמן של Alg. ב כתלות Alg (). k. while k >. k k/. for j to log. for i to /. prit(i) ב. נתחו את סיבוכיות הזמן של Alg.mm ו ב כתלות הניחו כי חישוב ביטוי מהצורה b דורש זמן.Θ(b) 7 Alg (, m). while >. m. i. while i. i i *. פתרון פתרון ישיר: נעבור על כל הזוגות האפשריים (לולאה בתוך לולאה) ונבדוק את סכומם. יש זוגות אפשריים, ולכן סיבוכיות הזמן היא ).Θ( פתרון תחילה נמיין את האיברים האחרונים של A, בעזרת מיון בועות למשל. לאחר מכן נמזג את תתהמערך [..]A עם תתהמערך [.A[ +.. סיבוכיות זמן: פתרון יעיל: בשלב הראשון נמיין את A בעזרת מיון מיזוג. אם את.zA[i] ב A נחפש " ע"י חיפוש בינארי ולכל איבר A[i] לאחר מכן נעבור על איברי A, החיפוש הצליח מתישהו, נחזיר,true אחרת.flse שלב המיון ידרוש Θ().Θ(( ) ) = שלב המיזוג ידרוש. Θ() "סה"כ.Θ(( ) + ) = Θ() תזכורת: סיבוכיות הזמן של מיזוג שני מערכים ממוינים בגדלים ו m היא.Θ(+m) סיבוכיות זמן: שלב המיון ידרוש.Θ(log) בנוסף פעמים חיפוש בינארי.Θ(log) סה"כ.Θ(log) 9 אמיר רובינשטיין. מבוא, סיבוכיות של אלגוריתמים

15 המשך פתרון המשך פתרון ב. בפתרון הראשון, אם מצאנו i ו j מתאימים פשוט נחזיר אותם. נשים לב שבפתרונות היעילים יותר אנו ממיינים את המערך, ולכן אם מצאנו אלו לא בהכרח האינדקסים של איברים אלו במערך המקורי. i ו j מתאימים, פתרון יעיל יותר (מתואר בקודדמה): סיבוכיות זמן:.Θ() לוקחות.Θ(log) שורות שלב המיון ידרוש לפיכך, נשתמש במערך עזר בגודל, שישמור לכל איבר את האינדקס המקורי שלו. בזמן איברים, נשנה יחד איתם גם את מיקומם של המיון, כאשר אנו משנים את מיקומם של האינדקסים הללו, וכך בסוף המיון נחזיר את האינדקסים המקוריים של האיברים (אם מצאנו). FidSum (A,, z). MergeSort(A, ). l, r. while l < r. if A[l]+A[r] = z. retur true. if A[l]+A[r] < z 7. l l+. else 9. r r. retur flse סה"כ.Θ(log) הערות: הפתרון השני יעיל יותר מבחינת זמן ריצה, אבל לא בסדר גודל, אלא בקבועים (שלב המיון הוא "צווארבקבוק"). שימו לב שהצגנו פתרון אחד במילים, ואילו את פתרון השני ב.pseudocode הוכחת הנכונות של הפתרון הראשון היא טריוויאלית, ונובעת מנכונותם של מיון מיזוג וחיפש בינארי. בשביל להוכיח את נכונות הפתרון השני יש לנסח שמורת לולאה מתאימה. פתרון א. ) Θ(log ב. לכל k בין ל, מבצעים: בסה"כ: חישוב m k פעם אחת, בזמן Θ(k) ) k log(m איטרציות של הלולאה הפנימית, שבכל אחת מספר קבוע של פעולות. k ( Θ( k) +Θ(log( m )) = ( Θ( k) +Θ( k log m) = Θ( k log m) =Θ( log m) k = k = k = פתרון א' log(log) log (c=, =) log(log) log(½) = log(½) = log log ½log = ½log (c= ½, =) אמיר רובינשטיין. מבוא, סיבוכיות של אלגוריתמים

16 בתוכנית מבני נתונים ומבוא לאלגוריתמים פרק בספרהלימוד נכירונדגיםאתהמושגים: טיפוסנתוניםמופשט type) (ADT=bstrct dt מבנהנתונים structure) (dt נחזורונעמיקבנושאשלמבנינתוניםבסיסיים: מחסנית, תור, מערך, רשימהמקושרת, עץ. נושא מבני נתונים בסיסיים Bsic dt structures אמיר רובינשטיין Push(S, x). if StckFull(S). error overflow. top[s] top[s] +. S[top[S]] x Pop(S). if StckEmpty(S). error uderflow. x S[top[S]]. top[s] top[s]. retur x StckFull(S). retur (top[s] = legth[s]) StckEmpty(S). retur (top[s] = ) מימוש מחסנית באמצעות מערך S S S r r top[s] r r y top[s] r r y top[s] Push(S, y ) x Pop(S) מבני נתונים Structures Dt טיפוסנתוניםאבסטרקטי ADT) :(Abstrct Dt Type = אוסףשלפעולותעלנתוניםכלשהם. המשתמש ב ADT מכיראתהפעולות והשפעתןעלהנתונים. אינונדרשלהכיראתפרטיהמימוש. לדוגמה: מחסנית (Stck) ע"י הפעולות הבאות: מוגדרת (overflow הכנסתאיברלראשהמחסנית (כוללבדיקת Push(S, x) (uderflow הוצאתהאיברשבראשהמחסנית (כוללבדיקת Pop(S) StckEmpty(S) ו StckFull(S) בדיקהאםהמחסניתריקה/מלאה מבנהנתונים structure) :(dt שיטתאחסוןוארגוןשלנתוניםשמאפשרתביצוע פעולותמסוימות. מבנהנתוניםהואמימושל.ADT מבנינתוניםאפשרייםלמימושמחסנית:. מערך. רשימהמקושרת אמיר רובינשטיין. מבני נתונים בסיסיים

17 מימוש תור באמצעות מערך Equeue(Q, x). if QueueFull(Q). error overflow. Q[til[Q]] x. til[q] (til[q] mod ) + Dequeue(Q). if QueueEmpty(Q). error uderflow. x Q[hed[Q]]. hed[q] (hed[q] mod ) +. retur x Q Q l g o r til[q] hed[q] l g o r i Equeue(Q, i ) til[q] hed[q] מבני נתונים Dt Structures תור (Queue) מוגדר ע"י הפעולות הבאות: (overflow הכנסתאיברלסוףהתור (כוללבדיקת Equeue(Q, x) (uderflow הוצאתהאיברשבראשהתור (כוללבדיקת Dequeue(Q) QueueEmpty(Q) ו QueueFull(Q) בדיקהאםהתורריק/מלא מבנינתוניםאפשרייםלמימושתור:. מערך. רשימהמקושרת QueueEmpty(Q). retur (hed[q] = til[q]) QueueFull(Q). retur ((til[q] mod ) + = hed[q]) Q l g o r i til[q] hed[q] Dequeue(Q) רשימהמקושרתדוכיוונית: גרסאות של רשימות מקושרות prev key + ifo ext רשימותמקושרות lists Liked רשימהמקושרת היאמבנהנתוניםהמורכבמסדרת רשומות, שבכלאחתישמצביע לרשומההבאה. key + ifo ext כמובמערך, האיבריםמסודריםבסדרליניארי, אבלבעזרתמצביעים (ואינםבהכרח רצופיםבזיכרון). יתרון: אפשרלהוציאאיברבהינתןמצביע אליו (ולאלאיברשלפניו), נתון. וכןלהכניסאיברלפניאואחריאיבר מימושחיפוש, הכנסהומחיקהמרשימהמקושרתדוכיווניתבספרהלימוד, עמ' 77. שמותהפעולות: k) ListDelete(L, x),listisert(l, x),listserch(l, רשימהמקושרתממוינת, בהסדרהרשומותמתאיםלסדרהמפתחות. רשימה מקושרת מעגלית: hed 7 הרשומההאחרונהמצביעהל,Nil וראשהרשימההואמצביעלאיברהראשון. פעולותעלרשימותמקושרות חיפוש: ע"ימעברליניאריעלהרשימה, עדשנמצאאיברבעלהמפתח המבוקש, אועדשמגיעיםלסוףהרשימה. זמן:.Θ() הכנסה: בהינתןמצביעלאיבר שלפני מקוםההכנסה. זמן: ()Θ הוצאה: בהינתןמצביע לאיבר שלפני האיברלמחיקה. זמן: ()Θ אמיר רובינשטיין. מבני נתונים בסיסיים

18 גרסאות של רשימות מקושרות בחירת סוג הרשימה בה נשתמש תלוי באילוצים ובמטרות. למשל, איחודרשימותקללביצועבזמןקבועברשימותמעגליות. גרסאות של רשימות מקושרות תרגיל כאמור, לצורךמחיקתאיברמרשימהמקושרתחדכיווניתצריךלהיותבידינומצביע לאיבר שלפניו: hed הציעושיטהלמחוקאיברמרשימהחדכיווניתבהינתןמצביע אליו. מה החסרונות של השיטה? 7 hed 9 רשימות מקושרות לעומת מערכים כאמור, רשימהמקושרתהיאמבנהנתוניםאפשריעבורה ADT s מחסניתותור. מחסניתתמומשלמשלכרשימהמקושרתחדכיוונית (איבריםיוכנסוויוצאומתחילתהרשימה) תור ימומש למשל כרשימה מקושרת חדכיוונית עם מצביע נוסף לסוף הרשימה. מהעדיף מערךאורשימהמקושרת? יתרונותלרשימה... מאפשר הקצאתזיכרון דינמיתבעתהצורך. צורך להקצות מקום זיכרון רצוף. אין הוצאתאיברמאמצערשימהלאמותירה "חור". לכןסריקתהאיבריםבזמןליניאריבמספרם. יתרונות למערך. גישהלאיברלפי אינדקסבזמן.Θ() דוגמה: נניחשברצוננולמצואשיטהיעילהלייצוגפולינומיםממעלה לכלהיותר. איךייוצגהפולינום +x+? x מהיותרחסכוני? מקדמים מעריכים מעריכים מקדמים אמיר רובינשטיין hed,,,. מבני נתונים בסיסיים זקיף ברשימה מקושרת כאשרמוחקיםאיברמראשרשימה, אומכניסיםאיברלראשרשימה, ישלעדכןאת המצביעלראשה. הדבריוצרקודמסורבליותר, עקבהטיפולבמקריהקצההאלו. ניתןלהוסיףרשומהריקהבראשהרשימההמקושרת, ואזמקריקצהאלומטופלים במסגרתהמקריםהרגילים. רשומהכזונקראת זקיף.(setiel) רשימה ריקה: hed key key hed hed כעתאיןהבדלביןהכנסהבראשהרשימהלהכנסהרגילה hed) לאמשתנה): ew key key

19 מערך דומימדי Get(A, i, j) Put(A, i, j, x) מערכיםדו/רבמימדיים כ ADT ArryFull(A) ו ArryEmpty(A) מערךk מימדי Get(A, i, i,, i k ) Put(A, i, i,, i k, x) ArryFull(A) ו ArryEmpty(A) מערךורשימהמקושרתכ ADT למעשה, אפשרלהתייחסלמערךולרשימהמקושרתלארקכאלמבנינתוניםלמימוש אלאגםכאלADT s בעצמם. למשל, עבורמערך: מבנהנתוניםסטנדרטיעבורמערךדומימדימסדר m הוא איזוררציףבזיכרון, המורכבמ m מערכיםחדמימדיים באורך כלאחד. bse + ((i) +(j)) sizeof(type),i) מחושב ע"י j) ה המיקום שאלה במימושהסטנדרטישלמטריצה, סיבוכיותהזמןשלפעולתהשחלוף (trspose) היא ).Θ( הציעומימושאחרלמטריצה, שבוסיבוכיותהשחלוףהיא ()Θ, מבלילפגועבסיבוכיותשל הפעולות Get ו.Put,ADT s מערך (rry) מוגדר ע"י הפעולות הבאות: החזרתהאיברבעלאינדקסi Get(A, i) x אתהאיבר i אחסןבאינדקס Put(A, i, x) ArryEmpty(A) ו ArryFull(A) בדיקהאםהמערךריק/מלא מבנינתוניםלמערך: (i) sizeof(type) bse + איזוררציףבזיכרון, כאשראינדקס i מחושבע"י. איזורלארציףבזיכרון, ואזחישובהאינדקסמסובךיותר. רשימהמקושרת (בד"כלאסביר).... אםכןהמושגים ADT ומבנהנתוניםתלוייםבהקשר. מבנה נתונים יעיל יותר? נשמוררק "נציג" אחדמכלאלכסון. כלומרנשמורמערךבאורך. מערכים דו/רבמימדיים 7 7 נגדיר את ה ADT הבא: מטריצתאלכסונים (מטריצתToeplitz ) מטריצה ריבועית מוגדרת ע"י הפעולות הבאות: Get(i, j) מערכים דו/רבמימדיים שאיברי כל אלכסון בה זהים זה לזה. החזרתהאיבר במיקום (j,i). x) Put(i, j, שמירתהאיבר x במיקום j).(i, ישלעדכןאתכלהאלכסון. Get(i, j). retur A[ji+] A ji = 7 נשים לב ש ji קבועבכלאלכסון: 7 j) Put(i, j, x) Get(i, סיבוכיות מקום Θ( ) Θ() Θ() מימוש סטנדרטי ( מערכים חדמימדיים): Put(i, j, x). A[ji+] x j) Put(i, j, x) Get(i, סיבוכיות מקום Θ() Θ() Θ() אמיר רובינשטיין. מבני נתונים בסיסיים

20 A from פתרון נחזיק שני מערכים נוספים ומשתנה נוסף. מצבהתחלתי כלהתאיםמזוהיםכ"זבל". איתחול מערך בזמן קבוע 7 איתחול מערך בזמן קבוע איתחול מערך A באורך באפסים (אוכלערךהתחלתיאחר) דורש Θ() זמן. הדברבעייתיבמיוחדכאשרמדוברעלמערכיםגדולים, שרקחלקקטןמאיבריהםיהיו בשימוש. כלומרפעולותקריאהוכתיבהיהיו "זולות", אך האיתחול יהיה "יקר". to top= IsGrbge(i). if from[i]<top d to[from[i]]=i. retur ot grbge. else retur grbge נראהכעתשיטה לאיתחול מערךבזמן ()Θ, ובתמורהנשתמשבעודזיכרון. לדוגמה A[] תחזיר עבורi= Get Get(A, A i). if IsGrbge(i). retur (or other iitil vlue). else retur A[i] שגוי פתרון במקוםלאפסאתA, נחזיקמערךנוסף INIT ונרשוםבו רקבמקומותבהםA מכיל ערך "אמיתי". בעתגישהלאיברשלA שאינומכילערךאמיתינחזיר. לכלi אחרתחזיר A from to top= 7 Put(A, i, x). A[i] x. if IsGrbge(i). from[i] top. to[top] i. top top + 7 A INIT?????? הבעיה: שאר המקומות של INIT עלוליםגםלהכיל, ולכןישלאתחלאותו! (biry trees) איתחול מערך בזמן קבוע עצים בינאריים עץבינארי הואמבנהנתוניםשמורכבמרשומותהמסודרותבסדר היררכי (הורהילד). זאתבניגודלמשללרשימהמקושרת, בההרשומותמסודרות ליניארית (הקודםהבא). ניתן להגדיר עץ בינארי רקורסיבית: בינארי: עץ אושהואאינומכילכללרשומות (עץבינאריריק) אושהואמכיל קבוצותזרותשלרשומות: רשומהאחתהנקראת שורש (root) עץ בינארי הנקרא תתהעץ השמאלי עץ בינארי הנקרא תתהעץ הימני תתעץ ימני שורש תתעץ שמאלי... A from to עוד דוגמה: A[] תחזיר עבורi= Get עבורi= top= לכלi אחרתחזיר 7 IsGrbge(i). if from[i]<top d to[from[i]]=i. retur ot grbge. else retur grbge Get(A, i). if IsGrbge(i). retur (or other iitil vlue). else retur A[i] Put(A, i, x). A[i] x. if IsGrbge(i). from[i] top. to[top] i. top top + 9 אמיר רובינשטיין. מבני נתונים בסיסיים

21 מונחים עצים בינאריים trees) (biry מסלול (pth) בעץהואסדרתצמתיםשביןכלשנייםישקשת. אורך מסלול הוא מספר הקשתות שבו. b d e f g h c מונחים עציםבינאריים trees) (biry רשומהבעץבינארינקראת צומת (ode) "חיבור" ביןשתירשומותנקרא קשת (edge) b d e f g h c לדוגמה: אורךהמסלול h) (, b, e, הוא עבורצומת :v הבןהשמאלי child) (left שלv הואשורשתתהעץהשמאלישלו של צומת הוא אורך המסלול משורש העץ עד אליו (depth) עומק הוא שורש תתהעץ הימני שלו v (right של child) הימני הבן depth(e) = v נקרא האב (pret) שלבניו, והםנקראים אחים. לדוגמה: depth() = אבקדמון (cestor) של v הואצומתשנמצאבינולביןהשורש צאצא (descedt) של v הואצומתשנמצאבתתהעץש v שורשו גובה (height) שלצומתהואאורךהמסלוללעלההכיעמוקשהואצאצאשלו height(b) = צומתללאבניםייקרא עלה,(lef) אחרתייקרא צומתפנימי ode).(iterl לדוגמה: height() = גובה של עץ הוא גובה השורש שלו. בעץמלא (full) לכלצומתיש או בנים. סיווג עצים בינאריים אכסון בזיכרון של עצים בינאריים ניתןלאכסןעץבינאריבמערך, רמהאחרירמהמשמאללימין. כדילשמורעלהמבנהההיררכי, בנים "חסרים" ייוצגוכתאיםריקים (מה שעלול לגרום בזבוז זיכרון): b d e f g h c 7 9 עץשלם (complete) הואעץמלאשבועלהעליםבאותועומק. b i c d e i f i+ g h pret key + ifo left right root ברוב המקרים יעיל יותר להשתמש ברשומות עם מצביעים: בכל רשומה יש מצביעים לבן השמאלי ולבן הימני. לעיתים גם מצביע לאב. עץ כמעט שלםהוא עץ שלם שבו חסרים עלים ברצף מצד ימין b c בשורש העץ.pret=NIL אכסון במערך מתאים יותר עבור עצים שלמים או d e f בעלים.left=right=NIL כמעטשלמים, כיאזאין "חורים". g h אמיר רובינשטיין. מבני נתונים בסיסיים

22 עצים עם דרגה> לפעמים נרצה להשתמש בעץ בעל דרגה גדולה מ. עצים עם דרגה < כלעץ, שדרגתו (מספרהבנים המקסימלי שלצומת) שווהל k טבעיכלשהו, ניתןלייצג כעץבינארי: מנכ"לית סמנכ"ל שיווק סמנכ"ל כספים סמנכ"ל מחקר סמנכ"ל ייצור ראש מחלקת שכר ראש מחלקת חשבונאות ראש מחלקת השקעות למעשה, גםעציםמדרגהלאחסומהניתןלייצגכעציםבינאריים (פרטיםבספרהלימוד, עמ' ). תשובות לשאלות חזרה ה ADT מערךדומימדימאפשרקריאה ואיחסון שלערכיםלפישניאינדקסים. בעת ביצועהשורההנ"ל, נוצרמימושל ADT כזה, באמצעותאיזוררציףבזיכרוןהכולל מערכיםחדמימדיים באורך כלאחד. בחיפושבינאריבמערךממויןישהנחהשניתןלגשתלכלאיברבמערךבזמן ()Θ באמצעותהאינדקסשלו. ברשימהמקושרתהנחהזולאמתקיימת. למשל, כדילהגיע לאיברהאמצעיצריךלעבורעלמחציתמהאיבריםבערך. במערך, נזדקקל תאיםשכלאחדיתפוס בתים. סה"כ בתים. בתיםעבורהמפתחוהמידע כלאחתתופסת רשומות, יש ברשומותעםמצביעים: הנוסףועוד בתיםעבורכלאחדמ המצביעים. סה"כ: 7 בתים. כלומרעבורהעץהזהעדיפההדרךהראשונה. אבל, אילולמשלהוספנובןלצומת h, הרישהמימושבמערךהיההופךלבזבזניביותר..... שאלות חזרה בשפתC ניתןליצורמערךדומימדיבגודל x באמצעותהשורה: it A[][];. הסבירו את ההבדל בין ה ADT מערך דומימדי לבין מבנה הנתונים שנוצר בעת ביצוע השורה הנ"ל. הסבירומדוע לאניתןלבצעחיפושבינאריעלרשימהמקושרתממוינת, איזותכונהשלמערךלאמתקיימתברשימהמקושרת? בזמן.Θ(log) ורשומותעםמצביעים. מערך, ראינושתישיטותלאכסוןעציםבינאריים: נניחשכלרשומה (עםהמידעהנוסף) תופסת בתים, וכלמצביעתופס בתים. כמהבתיםיתפוסכלאחדמהמימושיםעבורהעץהבא: b d e f g h c. 7 אמיר רובינשטיין. מבני נתונים בסיסיים

23 תרגילים מומלצים מהספר פרק בעיה תרגילים 9. נתונותm קבוצות.{,,..., } כלקבוצהיכולהלהכילאיברים מתוך.F, F,, F m עליכםלתכנןמבנהנתונים, שיתמוךבפעולותהבאות (תארואתמבנההנתוניםוהסבירואיך תתבצע כל אחת מהפעולות): Relte (i, ) Isert (i, ) תרגיליםנוספים. שאלה. מספרהלימוד. הראוכיצדניתןלממשתורבאמצעותשתימחסניות. נתחואתזמןהריצהשלהפעולותעלהתור. פעולהשבודקתאם האיבר נמצאבקבוצה F. i סיבוכיות הזמןהנדרשת: ()O. פעולהשמוסיפהאתהאיבר לקבוצה.F i סיבוכיותהזמןהנדרשת: ()O.. נגדיר "מחסניתמינימום" כ ADT התומךבפעולותהבאות: Crete Isert(x) RemoveLst Mi ChgeMi(k) אתחול מבנה הנתונים כאשר הוא ריק. הכנסתהמספר x למבנה. הוצאת המספר שהוכנס אחרון והחזרתו כפלט. החזרתהמספרהקטןביותרבמבנה (ללאהוצאתו). שינויערךהמספרהקטןביותרבמבנהל k. פעולהשמבצעתחיתוךביןהקבוצות F i ו F j ומכניסהאתהתוצאהל F k (כלומר:.(F k = F i F j לפניביצועהפעולה, F k היאקבוצהריקה. סיבוכיות הזמןהנדרשת: )) j.o(mi( F i, F Itersect (i, j, k) מותר להניח כי בכל זמן נתון כל המספרים במבנה שונים זה מזה. א. הציעומימושל"מחסניתמינימום", כאשרסיבוכיותהזמןהנדרשתלארבעהפעולותהראשונות היא ()O, ולפעולהChgeMi,O(t) כש t הינומספרהאיבריםבמבנהשהוכנסואחרי האיבר המינימלי. פעולהשמבצעתאיחודביןהקבוצות F i ו F j ומכניסהאתהתוצאהל F k (כלומר:.(F k = F i F j לפניביצועהפעולה, F k היאקבוצהריקה. סיבוכיות הזמןהנדרשת: )) j.o(mx( F i, F Uio (i, j, k) ב. הוחלט להוסיף את הפעולה הבאה: Add(d) הוספת ()O. לכלהמספריםבמבנה. סיבוכיותזמןנדרשת: d הסבירוכיצדלממשאתהפעולההחדשה, ומהםהשינוייםהדרושיםבמימושהפעולותמסעיף א' כךשלאיהיהשינויבסיבוכיותן. אמיר רובינשטיין. מבני נתונים בסיסיים

24 פתרון תיאור מבנההנתונים: נשתמש ברשימה מקושרת דוכיוונית. בכלרשומהברשימה, בנוסףלערךהאיבר, נשמורשדהנוסףובוהערךהמינימלימביןערכיכל האיבריםהותיקיםיותר (כוללהאיברעצמו). נקראלשדהזהmi. מימוש הפעולות: Crete אתחולרשימהמקושרתריקה. שלהאיברהחדשיהיההמינימוםמביןx mi לראשהרשימה. השדה x הוספת המספר Isert(x) לביןהשדה mi שלראשהרשימההקודם. RemoveLst מחיקתראשהרשימה, והדפסתערכו. Mi החזרתערךהשדהmi שלראשהרשימה. ChgeMi(k) מתחיליםמראשהרשימה, ומתקדמיםעדשמגיעיםלאיבר המינימלי (איךיודעים שהגענואליו?). משניםאתערךהאיבר המינימלי ל k, ומעדכניםאתשדהה mi שלוכמו בהכנסה. חוזריםאחורהעדלראשהרשימה, ובדרךמעדכניםאתשדהה mi שלכל איברכמובהכנסה. פתרון נממשאתהתורבאמצעותשתימחסניות S ו S באופןהבא: המחסנית S תייצגאתסוףהתורוהמחסנית S תייצגאתראשהתור. כלומר, איבריםחדשיםיוכנסול S והאיבר הוותיק ביותר יישלף מתוך.S בעתהוצאתאיברמהתור, אם S ריקה, נעביראתכלהאיבריםבזהאחרזהמ S ל S ואזנשלוףאת האיברשבראש.S שימולב, שלאחרשנעשהזאתאיןצורךלהחזיראתכלהאיבריםל! S להלןהפסידוקודשלהפעולותעלהתור, ללאבדיקת overflow ו :uderflow כלהפעולותמתבצעותבזמןקבוע, למעטהאחרונהשרצהב.O(t) Equeue(Q, x). Push(S, x) כיצדימומשו QueueEmpty ו? QueueFull זמן הריצה: ()Θ כיצדישלשנותאתEqueue ו Dequeue כדילבדוק overflow ו?uderflow Dequeue(Q). if StckEmpty(S ). while ot StckEmpty(S ). Push(S, Pop(S )). retur Pop(S ) זמן הריצה: Θ() במקרה הגרוע. פתרון תיאורמבנההנתונים: פתרון ב' נחזיק משתנה offset שיאותחלל. בכלקריאהל Add(d) נוסיףלמשתנהזה d. שינוי בפעולות מסעיף א': m בשם, ElemetsChrt כאשר: מערך בוליאני בגודל. j F i i, ElemetsChrt[ אמ"מ j] = True מערך בגודל m של רשימות מקושרות בשם, ElemetsList כאשר:. j F i j מופיע ברשימה [i ElemetsList[ אמ"מ.(x offset) נכניסאת x במקוםלהכניסאתהערך Isert(x).offset נוסיףלערךהמודפסאת RemoveLst.offset נוסיףלערךהמוחזראת Mi.(k offset) נשנהאותול במקוםלשנותאתערךהאיבר המינימלי ל k, ChgeMi(k) [ ] = Fi. SetSize i F i שבו בגודל m מערך SetSize.offset להפחית יש שינוי) / (הוספה בעת כתיבה של ערך ואילו,offset בעת קריאת ערך יש להוסיף לו כלומר m 7 ElemetsChrt ElemetsList SetSize אמיר רובינשטיין. מבני נתונים בסיסיים

25 המשך פתרון Θ() מימוש הפעולות: Θ() Itersect(i, j, k) כך,Itersect(j,i,k) ל נקרא SetSize[j] < SetSize[i] אם ראשית, שבכל מקרה Fתהיה i הקטנה. כעת נעבור על [ ElemetsList[iולכל איבר (x F i ) x נבדוק האם.Isert(k, (x ואם כן נקרא ל,Relte(j,x)=True מבצעים } j mi{ Fפעולות, i, F כל.Θ() אחת בזמן סה"כ: }) j Θ(mi{ F i, F Uio(i, j, k) 7 נעבור על איברי שתי הרשימות Fו i F. j לכל איבר xנקרא ל (x.isert(k, מבצעים j F פעולות, i F + כל אחת בזמן ()Θ. נשים לב ש } j F i + F j mx{ F i, F ולכן סה"כ: }) j Θ(mx{ F i, F אמיר רובינשטיין. מבני נתונים בסיסיים

26 בתוכנית פרק בספרהלימוד.... מבני נתונים ומבוא לאלגוריתמים נושא ניזכרבגישת הפרדמשולצרף לתכנוןאלגוריתמים. נראהכיצדלבטאזמןריצהשלפונקציהרקורסיבית באמצעותנוסחתנסיגה נלמד שיטותלתת פתרון אסימפטוטי (סדרגודל) נסיגה: לנוסחאות שיטת האיטרציות שיטת עץ הרקורסיה משפטהאב Theorem) (Mster שיטת ההצבה (+ טכניקת החלפת משתנים) רקורסיה וטכניקת הפרדמשולצרף Recursio d dividecoquerjoi techique אמיר רובינשטיין טכניקת הפרדמשולצרף שיטה שיטת האיטרציות דוגמה ננתחאתסיבוכיותהזמןשל חיפושבינארי רקורסיבי במקרההגרוע BirySerchRec (A, l, r, key). if l > r. retur NIL. mid (l+r)/. if key < A[mid]. retur BirySerchRec(A,l,mid,key). else if key > A[mid] 7. retur BirySerchRec(A,mid+,r,key). else retur mid t() = c + t( / ) הקריאה הראשית ( הוא גודל המערך): BirySerch(A,, key). retur BirySerchRec(A,,, key) = c + t( / ) = c + t( / ) =... = ic + t( / i ) l r בהרצאהזונפגושאתאחתהטכניקותהחשובותלתכנוןאלגוריתמים: טכניקתהפרדמשולצרף.(dividecoquerjoi) בטכניקהזו: מפרידיםאתהבעיההמקוריתלתתבעיותקטנותיותר פותריםכלתתבעיהבנפרד את תתהפתרונות לפתרון לבעיה המקורית מצרפים למשל, במיוןמיזוג: מחלקיםאתהמערךלשניחצאים ממייניםכלחציבנפרד ממזגיםאתשניהחצאים הפרד משול צרף מתי < i? / אחרי ( Θ(logאיטרציות (אובמדויק: i= log + איטרציות). = c ( log +) + t() = Θ(log) את זמן הריצה של אלגוריתם רקורסיבי ניתן לתאר ע"י נוסחת נסיגה. נראה כעת כמה שיטות לפתרון נוסחאות נסיגה. אמיר רובינשטיין. רקורסיה וטכניקת הפרדמשולצרף

27 שיטה שיטת האיטרציות שיטה שיטתהאיטרציות דוגמה לפנינו פונקציה רקורסיבית המחשבת מקסימום מבין איברי מערך: MxRec (A, l, r). if l = r. retur A[l]. retur mximum{ A[l], MxRec(A, l+, r) } l A[l] Mx(A, l+, r) r שני פרטים טכניים גודלשלבעיההואלרובמספרשלם. יחדעםזאת, בד"כאפשרלהתעלםמערכי רצפהותקרה, כאשרמנתחיםסדרגודל אסימפטוטי. שיטתההצבה (בהמשך) מאפשרתלהוכיחשאכןמדוברבהבדלזניח. אםלאצויןאחרת, אנומניחיםכיעבור יםקטניםמתקיים.t()=Θ() הקריאה הראשית ( הוא גודל המערך): MxArry(A, ). retur MxRec(A,, ) מהסיבוכיותהזמןשל Mx כתלותב? t() = c + t() = c+t() =... = i c+t(i) = = () c + t() = Θ() שיטה שיטת האיטרציות שיטה שיטת האיטרציות MergeSort(A, l, r). if l < r. mid (l+r)/. MergeSort (A, l, mid). MergeSort (A, mid+, r). Merge A[l..mid] with A[mid+..r] t() = t(/) + = (t(/) + /) + = t(/) + = i t(/ i ) + i = t() + log = Θ(log) דוגמה מיון מיזוג MxRec(A, l, r). if l = r. retur A[l]. mid (l+r)/. lmx MxRec(A, l, mid). rmx MxRec(A, mid+, r). retur mximum{ lmx, rmx } t() = c + t(/) = c +c + t(/) המשך דוגמה הנה גרסה רקורסיבית אחרת למציאת מקסימום: = c(++ + i ) + i t(/ i ) l mid Mx(A, l, mid) Mx(A, mid+, r) = c + c + c + t(/) =... r 7 = c( log ) + t() סדרה הנדסית = c ( log ) + Θ() = Θ() אמיר רובינשטיין. רקורסיה וטכניקת הפרדמשולצרף

28 שיטה שיטת האיטרציות שיטה שיטתהאיטרציות t()= c + t() + t() דוגמה חישובהאיברה בסדרתפיבונאצ'י המשך דוגמה נמצא חסם עליון ותחתון t() c + t() = c +c + t() = c + c + c + t() =... = c (++ + i ) + i t(i) = c (++ + ) + t() = c ( ) + = O( ) Fib(). if = or =. retur. retur Fib() + Fib() t()= c + t() + t() t() c + t() = c +c + t() = c (++ + i ) + i t(i) = c + c + c + t() =... = Ω( ) בשיטות אחרות, שנלמדותבקורסיםאחרים, ניתןגםלמצואחסםהדוק: t + ( ) =Θ( Φ ) Φ= 9 t()= t(/) + שיטה שיטתעץהרקורסיה מעיןגרסהויזואליתשלשיטתהאיטרציות. פורשיםאתעץהקריאותהרקורסיביות, ומסכמיםאת כמותהעבודהבכלהצמתים. דוגמה: פיבונאצ'י. שיטת עץ הרקורסיה שיטה Ω(/) O() כמותהעבודהבכלצומתהיאקבועה. נסמנהב c. = c( ) = c( ) = O( ) = c( (/) ) = c( / ) = Ω( / ) = Ω( ) אמיר רובינשטיין. רקורסיה וטכניקת הפרדמשולצרף

29 שיטה : משפטהאב theorem) (Mster t()= t(/) + t(/) + שיטת עץ הרקורסיה שיטה, כאשר <α,β< α+β=, הכללה: t() = t(α) + t(β) + c ו <c קבוע. שאלה: מהמשתנהכאשר α+β<? (Mster theorem) שיטה : משפט האב שיטה : משפט האב (Mster theorem). T ( ) = T + log. T ( ) = 9T +. T ( ) = T + log. T ( ) = T + אמיר רובינשטיין. רקורסיה וטכניקת הפרדמשולצרף

30 שיטה : משפט האב שיטה : שיטת ההצבה (Mster theorem) אינטואיציהלמשפט (הוכחהמלאהמופיעהבספרהלימוד): בשיטהזואנו מנחשים פתרוןומוכיחיםאותובאינדוקציה. חסרון: השיטה לא מספקת פיתרון חשיבות: מאפשרלהוכיחפתרוןלנוסחאות "קשות", שקללנחשעבורןפתרון f() f() דוגמאותלנוסחאות "קשות" שקללנחשעבורןפתרון: f(/b) f(/b) f(/b) f(/b) t() = t( / ) + = Θ(log) f(/b ) f(/b ) f(/b ) f(/b ) h = Θ(log b ) t() = t( / )+ t( / ) + = Θ(log) t() = t(/ + 7) + = Θ() 7 Θ() Θ() T( ) = h j= Θ() j f ( ) + j b logb =Θ( Θ( Θ() logb logb ) ) t() = t( ) + log אמיר רובינשטיין m = log t( m ) = t( m/ ) + m נסמן: החלפת משתנים טכניקהשמאפשרתלפעמיםלהפוך נוסחהשנראית "קשה" לנוסחה "קלה". s(m) = t( m ) s(m) = s(m/) + m s(m) = Θ(mlogm) נסמן: קל לפתור בכל אחת מהשיטות שראינו t() = t( m ) = s(m) = Θ(mlogm) = Θ(log loglog) t() = O(log) t() clog t( / ) c / log( / ) 9 t() = t( / ) + נדגים את השיטה על הנוסחה הבאה: ננחש חסם עליון: נוכיח באינדוקציה על : הנחת האינדוקציה: שיטה : שיטת ההצבה קייםקבוע c כךשלכל מספיקגדול t() = t( / ) + (c / log( / )) + c log(/)) + c log c + c log עבור c מה לגבי הוכחת בסיס האינדוקציה? באופןדומהמוכיחיםחסםתחתון (תרגיל. בספרהלימוד).. רקורסיה וטכניקת הפרדמשולצרף

31 החלפת משתנים דוגמה כפל מטריצות דרושאלגוריתםלכפלמטריצותC=A B x, Aמטריצותריבועיותבגודל B, C תזכורת: האיבר CשלמטריצתהמכפלהA B ij = Cמחושבע"יהמכפלה C ij = Σ הפנימית k= A ik B kj אלגוריתםפשוט: SimpleMtrixMultiply(A, B, C, ). for i to. for j to. C[i, j]. for k to. C[i, j] C[i, j] + A[i, k] B[k, j]. retur C זמןריצה ),Θ( זיכרון Θ() t()= t( ) + log loglog t( ) t( = ) + log log log נחלק ב : נסמן: קל לפתור t( m m m ) t( ) = m + m log m s( m) = s( m / ) + m log m= Θ( m t ) = s( m) =Θ( m ( t( ) = Θ( log ) ) =Θ(log ) ) m= log m t( ) s( m) = m נסמן: המשך כפל מטריצות כפל מטריצות המשך P = A (B B) P = (A + A) B P = (A + A) B P = A (B B) P = (A + A) (B + B) P = (A A) (B + B) P7 = (A A) (B + B) האלגוריתםשל שטראסן (99 (Strsse, מספיקות רק 7 מכפלות רבעים! C = P + P + P P C = P + P C = P + P C = P + P P P7 מהלגביאלגוריתםרקורסיבי? הרעיון: הפרדומשול (נניח ( = m A x B = A A B B C C x = A A B B C C = C ונחבר רקורסיבית את מכפלות הרבעים, נחשב C = A B + A B C = A B + A B C = A B + A B C = A B + A B נוסחתהנסיגההמתקבלת: (/) T() = 7T(/) + פיתרון (מקרה שלשיטתהאב): ). T() = Θ( log 7 ) = Θ( מעשית, עבור<, האלגוריתםהפשוטעדיף האלגוריתםהטובביותרכיום (משנת 99, בעלענייןתיאורטיבעיקר): ).7 Θ( נוסחתהנסיגההמתקבלת: (/) T() = T(/) + פיתרון (מקרה שלשיטתהאב): ) T() = Θ( אותוזמןריצה אסימפטוטי, אךצריכתהזיכרוןהיא Θ(lg) המצברקמחמיר!... אמיר רובינשטיין. רקורסיה וטכניקת הפרדמשולצרף

32 שאלות חזרה תשובות לשאלות חזרה. הפרד: חצייתהמערךלשניים. משול: מיוןרקורסיבישלכלחצי. צרף: מיזוגשניהחצאים.. במיון מיזוג, מה עושים בכל אחד מהשלבים הפרדמשולצרף?... כל צומת מייצג זמן ריצה של שלב כלשהו בתהליך הרקורסיבי. סך ערכי הצמתים מייצג את סך זמן הריצה של כל התהליך הרקורסיבי. כילאמתקייםהתנאישלאףאחדמהמקרים (גםלאמקרה מדוע?) גדולמספיקמתקיים: f(/b) cf() if is eve f ( ) = למשל: else נניחבשלילהשמתקייםתנאיהרגולריות. כלומרקיים >c כךשלכל.. בשיטתעץהרקורסיה, מדוע אנומעונייניםלמצואאת סךערכיהצמתים בעץ? מדועלאניתןלהשתמשבמשפטהאבלפתרוןנוסחת הנסיגה:?T()=T(/) + /log. נתונהנוסחתהנסיגה f().t()=t(/) + תנודוגמהלפונקציה f() שעבורהמתקייםהמקרההשלישישלמשפטהאב, אבללא מתקייםתנאיהרגולריותשלמקרהזה. ואיזוגי. בפונקציהתהיההפרדהלמשלבין זוגי רמז: אבללכל זוגיכזהש / הואאיזוגימתקיים: f(/b) = f(/) = (/) = / c וזהלאייתכןכמובן. תרגילים מומלצים מהספר פרק בעיה בעיה בעיה בעיה תרגילים 7 אמיר רובינשטיין. רקורסיה וטכניקת הפרדמשולצרף

33 T() = T(/) + פתרון תרגילים נוספים. מיצאובשיטתהאיטרציותחסם אסימפטוטי הדוקלנוסחתהנסיגה.T() = T(/) + = (T(/ ) + /) + = T(/ ) + (+/) = (T(/ )+/ ) + (+/) = T(/ ) + (+/+ / ) = = i T(/ i ) + (+/+ / + + i / i ) תנוחסםהדוק אסימפטוטית לנוסחתהנסיגההבאה:.t() = + t(/) + t(/) בעיה בספרהלימוד מערךA בגודל מכילאתכלהמספריםהשלמיםמ עד פרטלאחד.... i = log כלומר,/ i = א. הציעואלגוריתםשזמןריצתו O() שמוצאמיהוהמספרהחסר. הרקורסיה מגיעה לתנאי העצירה כאשר ובכך מצאנו חסם עליון: בנוסף גם T ( ) = log log T () + Θ() + log k= k= k k =Θ( log ) + = o( ) + ולכן Ω().T() =. T() = O() T() = T(/) + > סה"כקיבלנו: Θ().T() = כעתנניחשלאניתןלגשתלמספריםשב A ישירות. הפעולההיחידההמותרתהיאגישה לסיבית (bit) כלשהישלמספרב A המיוצגבבסיסבינארי (ופעולהזומתבצעתבזמן קבוע). ב. חיזרו על סעיף א' תחת הנחות אלו. שנו את אלגוריתם החיפוש הבינארי הרקורסיבי כך שבמקום לחלק את המערך לשני חלקים (כמעט) שווים, הואיחלקאותוביחס :, כלומר: לחלקאחדבגודלשלישוחלקאחרבגודל שנישלישים. כיתבואתהאלגוריתםהחדש בפסאודוקודונתחואת סיבוכיותו. 9. פתרון א. נסכוםאתהמספריםב A, ונחשבאתההפרשמ.(+)/ הפרשזההואהמספרהחסר. t()= + t(/) + t(/) פתרון חסם עליון: חסם תחתון: ב. נשיםלבלתכונותהבאות: אילוהופיעוכלהמספריםמ עד, אז: אם זוגי, כמותהמספריםשמסתיימיםבביט גדולהב מכמותהמספריםשמסתיימיםב. אם איזוגי, כמותהמספריםשמסתיימיםבביט שווהלכמותהמספריםשמסתיימיםב. מכיווןשחסרמספראחד, נוכללהשוותאתכמותהמספריםשמסתיימיםב לכמותהמספרים שמסתיימיםב, ובהתאםלזוגיותושל לדעתמהוהביטהאחרוןשלהמספרהחסר. לאחרמכןנמשיךרקורסיביתעםהקבוצהשבהחסרהמספר, ועםהביטהבא. האלגוריתם נאתחל i נעבורעלA ונבדוקאתהביטה i הכיפחותמשמעותישלכלמספר. המספרהחסר, בהתאםלתכונותשלעיל. נמשיךרקורסיביתעםהקבוצהשבהחסרמספר, ועםi+. נמצאאתהביטה i של t() + t(/) t() + t(/) בשניהמקרים, ניתןלפתורלפימשפטהאב (מקרה ). שניהחסמיםמתלכדים, ומקבלים ).t() = Θ( אמיר רובינשטיין. רקורסיה וטכניקת הפרדמשולצרף

34 פתרון.t()= + t(/) המשךפתרון נוסחתהנסיגההמתאימההיא נפתוראותהבשתישיטות: שיטתהאיטרציות t()= + t(/) = + / + t(/) = + / + / + t(/) =... = ( + ½ + ¼ + ) + t(/ i ) i=log + t() = O() ניתוח סיבוכיות המקרההגרוע הואכאשרהאיברשמחפשיםלאנמצאבמערך, וגםבכל שלבברקורסיה פונים לחלקהגדוליותר (בגודלשנישלישיםבערך). במקרהזה: t() = t(/) + ובכךמצאנוחסםעליון: O(). t() = אבלברורשגם Ω() t() = (כי (t() ניתןלפתורלפימשפטהאב (מקרה ), אובשיטתהאיטרציות, ומקבלים Θ(log).t() = סה"כקיבלנו: Θ().t() = משפטהאב log ( ) ( + ε log ε ε f = =Ω ) ומכאןשמדוברבמקרההשלישי: + מתקיים = f ( / b) = / cf ( ) = c נבדוקגםאתתנאיהרגולריות: ואכןקיים >c כנדרש (למשל½ =c). t( ) =Θ( f ( )) = Θ( ומכאן ש ( אמיר רובינשטיין. רקורסיה וטכניקת הפרדמשולצרף

35 בתוכנית פרק 7 בספר הלימוד, עם תוספות: נלמד על האלגוריתם מיון מהיר,(QuickSort) ועל אלגוריתם החלוקה (Prtitio) נראה שתי גרסאות של מיון מהיר:. בסיסי. אקראי מבני נתונים ומבוא לאלגוריתמים (בהמשך הקורס נראה גרסה נוספת) נכיר את המושג "אלגוריתמים אקראיים" נלמד מהי יציבות (stbility) של מיון נלמד מהי הוכחת נכונות correctess) (proof of של אלגוריתם נושא מיון מהיר QuickSort אמיר רובינשטיין מיון מהיר QuickSort פותח ע"י C.A.R. Hore ב 9, בהיותו בן הקלט: מערךAבגודל. הרעיון בדומה למיון מיזוג אלגוריתם רקורסיבי, עובד בשיטת הפרדמשולצרף. " הפרד " בחר איבר ציר (pivot) xמתוך המערך* חלק את Aלשני אזורים: x ו >x כאשר xביניהם x >x x x x x x >x x x x x x x >x >x q. " משול " מיין רקורסיבית את q] A[.. מיין רקורסיבית את ] A[q+... " צרף " כלום, המערך ממוין! גרסה בסיסית אקראית דטרמיניסטית * בגרסאות אחרות מאלו שנראה, xיכול להיות איבר שכלל אינו ב A הציר (בכלשלב) נבחרמתוך תתהמערךעליועובדים: כאיברהימניביותר כאיבר אקראי כחציון אמיר רובינשטיין בשונה ממיון מיזוג ממיין במקום,(iplce) כלומר ( Θ( איברים מאוחסנים בכל רגע מחוץ למערך הקלט. עושה את כל העבודה לפני הקריאות הרקורסיביות (שלב ה :(Divide מחלק את המערך לשני חלקים (לאו דווקא חצאים!). נלמד שלוש גרסאות: בהמשך הקורס גרסה בסיסית אקראית אלגוריתם מהיר מאוד באופן מעשי דטרמיניסטית מקרה גרוע Θ( ) ממוצע Θ(log) מקרה טוב Θ(log) Θ( ) Θ(log). מיוןמהיר

36 i p, j r 77 החלוקה Prtitio האלגוריתם i p j r 77 i p j r 77 p,i j r 77 p i j r 77 p i j r 77 Prtitio(A, p, r). x A[r]. i p. for j p to r. if A[j] x. i i +. exchge A[i] A[j] 7. exchge A[i + ] A[r]. retur i + QuickSort (A, p, r). if p < r. q Prtitio(A, p, r). QuickSort (A, p, q ). QuickSort (A, q+, r) הוא גודל המערך): QuickSort (A,, ) p ) הקלט: מערך A, גבולשמאלי p וגבולימני r. r הראשית הקריאה p i j r 77 מהו תנאי העצירה? p i j r 77 p i r, j p i j r x 77 p i r, j x > x? 77 החלוקה הדגמה דינאמית הוכחת נכונות של אלגוריתמים כדי להוכיח שאלגוריתם עובד נכון (כלומר לכל קלט חוקי מפיק את הפלט הרצוי), עלינו להוכיח דברים: עצירה לכל קלט חוקי, האלגוריתם עוצר לאחר מספר סופי של פעולות נכונותהפלט לכל קלט חוקי, כאשר האלגוריתם עוצר, הפלט שהוא מספק הוא.QuickSort הפלט המצופה.. נדגים כעת הוכחת נכונות של דוגמה נוספת להוכחת נכונות (של מיון בועות) נמצאת לקראת סוף המצגת. Prtitio(A, p, r). x A[r]. i p. for j p to r. if A[j] x. i i +. exchge A[i] A[j] 7. exchge A[i + ] A[r]. retur i + p i j r x x x x >x >x >x >x >x x? >x? x 7 בסיום החלוקה: x נמצא במקומו הסופי. ייתכן שאחד האזורים ריק. אמיר רובינשטיין. מיוןמהיר

37 ב+ הוכחת נכונות של מיון מהיר החלוקה Prtitio(A, p, r). x A[r]. i p. for j p to r. if A[j] x. i i +. exchge A[i] A[j] 7. exchge A[i + ] A[r] טענה : בסיום החלוקה, x נמצא במקומו הסופי משמאלו איברים שאינם גדולים ממנו מימינו איברים שגדולים ממנו p i r, j. retur i + x > x לשם הוכחת טענה ננסח ונוכיח תכונה שמתקיימת בתחילת כל איטרציה של הלולאה בשורות. תכונה כזו מכונה שמורתלולאה ivrit).(loop x הוכחת נכונות של מיון מהיר עצירה טענה : QuickSort עוצר (מסתיים לאחר זמן סופי). הוכחה: Prtitio בודאי עוצר, שכן הוא מבצע מספר סופי של איטרציות שכל אחת סופית, ועוד מספר קבוע של פעולות. בכל קריאה רקורסיבית גודל הבעיה קטן הוא מערך בגודל. תנאי העצירה של QuickSort ממש (לפחות ב ) לכן לאחר מספר סופי של שלבי רקורסיה (שכל אחד סופי) נגיע לתנאי העצירה. מ.ש.ל. (טענה ) p i j r x x > x? שמורת הלולאה בשורות : בתחילת כל איטרציה, לכל אינדקס k במערך: א. אם p k i אז A[k] x ב. אם j i+ k אז A[k] > x ג. A[r] = x 9 הוכחת נכונות של מיון מהיר החלוקה Prtitio(A, p, r). x A[r]. i p. for j p to r. if A[j] x. i i +. exchge A[i] A[j] 7. exchge A[i + ] A[r]. retur i + המשך הוכחת טענה כאמור בשקף הקודם, מהוכחת שמורת הלולאה נובע שהמצב בסיום הלולאה הוא כזה: p i r, j. retur i + x > x אמיר רובינשטיין מהחלפה בשורה 7 נובעת נכונות טענה : p i r, j x x > x x הוכחת נכונות של מיון מהיר החלוקה שמורת הלולאה בשורות : בתחילת כל איטרציה, לכל אינדקס k במערך: א. אם p k i אז A[k] x ב. אם j i+ k אז A[k] > x ג. A[r] = x מ.ש.ל. (טענה ) Prtitio(A, p, r). x A[r]. i p. for j p to r. if A[j] x. i i +. exchge A[i] A[j] 7. exchge A[i + ] A[r]. retur i + p i j r x > x? הוכחת שמורת הלולאה (באינדוקציה על מספר האיטרציה): בסיס: בתחילת האיטרציה הראשונה, א' צעד: נניח ששמורת הלולאה התקיימה בתחילת האיטרציה ה +m. ' מתקיימים באופן ריק, ג' מתקיים בגלל שורה. איטרציה m כלשהי, ונוכיח שהיא מתקיימת גם בתחילת אם A[j] > x אז רק מקדמים את j, לכן תכונה ב' ממשיכה להתקיים, ואין פגיעה בתכונות א' ו ג'. אם A[j] x אז בזכות ההחלפה בשורה עדיין A[i] x (עם ה i החדש) לכן תכונה א' ממשיכה להתקיים, ועדיין A[j] > x (עם ה j החדש) לכן תכונה ב' ממשיכה להתקיים, ואין פגיעה בתכונה ג'. סיוםהלולאה: בסוף האיטרציה האחרונה,j=r כלומר A[p..i] x וגם A[i+..r] > x וגם. A[r] = x x. מיוןמהיר

38 החלוקה המקורית שחיבר :HOARE i p r 9 9 j גרסה אחרת של חלוקה HorePrtitio (A, p, r). x A[p]. i p. j r +. while TRUE. repet j j. util A[j] x 7. repet i i +. util A[i] x 9. if i < j. exchge A[i] A[j]. else retur j 9 i j 9 9 i j 9 j הוכחת נכונות של מיון מהיר בסיום החלוקה: האם בהכרח xנמצא במקומו הסופי? האם ייתכן שאחד האזורים ריק? איזה שינוי צריך לבצע ב?QuickSort ראו בעיה 7 בספר הלימוד. טענה QuickSort (A,, ) ממיין את A. הוכחה (באינדוקציה על ): בסיס: עבור = האלגוריתם נכון (מדוע?). QuickSort (A, p, r). if p < r. q Prtitio(A, p, r). QuickSort (A, p, q ). QuickSort (A, q+, r) צעד: נניח ש QuickSort ממיין נכון מערכים בגודל k. < לפי טענה, בסיום שורה מתקיים שלכל q p k ולכל.A[k ] A[q] < A[k ] : q+ k r לפי הנחת האינדוקציה, בשורות ו מתבצע מיון נכון של שני תתמערכים: A[p..q] ו.A[q+..r] משני הנ"ל נובע, שבסיום QuickSort המערך A ממוין. מ.ש.ל. (טענה ) בזאת הסתיימה הוכחת הנכונות של מיון מהיר,.QED זמן ריצה ממוצע זמן ריצה ממוצע טענה: זמן הריצה הממוצע של מיון מהיר הוא.Θ(log) מה פירוש זמן ריצה ממוצע (או תוחלת זמן ריצה)? ממוצע זמני הריצה של אלגוריתם על פני כל הקלטים האפשריים שלו בגודל. את הטענה הנ"ל לא נוכיח (הוכחה בספר הלימוד), אבל נסביר אותה אינטואיטיבית: בריצה כלשהי של מיון מהיר ישנה תערובת של חלוקות "גרועות" וחלוקות "טובות". נניח לשם פשטות שיש רק חלוקות גרועות ביותר וטובות ביותר, ושהן מופיעות לסירוגין בזו אחר זו. אז זמן הריצה הממוצע שקול לזמן הריצה במקרה הטוב: ניתוח זמן ריצה סיבוכיות הזמן של החלוקה (לא משנה איזו גרסה) היא.Θ() המקרה הגרוע כאשר החלוקה בכל שלב של הרקורסיה היא בלתי מאוזנת באופן הקיצוני ביותר: בגרסה הראשונה של החלוקה: איזור אחד בגודל והשני בגודל בגרסת? HOARE זה קורה כאשר איבר הציר הוא המינימום או המקסימום של תתהמערך, בכל שלב. תרגיל: הדגימו את ריצתו של מיון מהיר על מערך ממוין, ועל מערך ממוין הפוך. ממוצע Θ() טוב T() = T( ) + T() + Θ() = Θ( ) ()/ אותו /() סדר גודל ()/ ()/ המקרה הטוב כאשר החלוקה בכל שלב של הרקורסיה היא מאוזנת: חלוקה לשני חצאים בערך. T() = T(/) + Θ() = Θ(log) ואם החלוקה היא ביחס >α>? ( α:(αעבור אמיר רובינשטיין. מיוןמהיר

39 למיון מהיר האקראי אותם סדרי גודל של זמני ריצה. כאן אפשר לדבר גם על זמן ריצה ממוצע, כאשר הממוצע הוא על פני ההגרלות שמבצע האלגוריתם (על אותו קלט). מיון מהיר האקראי RdomPrtitio (A, p, r). i Rdom (p, r). exchge A[r] A[i]. retur Prtitio (A, p, r) RdomQuickSort (A, p, r). if p < r. q RdomPrtitio(A, p, r). RdomQuickSort (A, p, q ). RdomQuickSort (A, q+, r) אלגוריתמים אקראיים אלגוריתם אקראי הוא אלגוריתם שעושה שימוש במחולל מספרים אקראיים.(rdomumber geertor) היתרון של אלגוריתם אקראי לעומת אלגוריתם דטרמיניסטי (לא אקראי) הוא חסינות בפני "יריב מרושע" שמכיר את פרטי האלגוריתם ויכול לייצר קלט שיהווה מקרה גרוע. בפועל רוב סביבות התכנות מציעות מחולל מספרים פסידואקראיים כלומר אלגוריתם דטרמיניסטי (לא אקראי) שמחזיר מספרים שנראים סטטיסטית אקראיים מספיק. שאלה: מהי ההסתברות להתרחשות המקרה הגרוע? הסיכוי שבשלב הראשון ייבחר המינימום/מקסימום כציר הוא /. בשלב השני: בשלב ה i: /() /(i+) קיימים שני סוגים של אלגוריתמים אקראיים: לאסוגאס: האלגוריתם תמיד מחזיר תוצאה נכונה, אבל הבחירות האקראיות משפיעות על זמן הריצה והוא עלול להיות גדול (מיון מהיר האקראי הוא כזה). מונטה קארלו: זמן הריצה לא מושפע מהבחירות האקראיות, אבל האלגוריתם עלול להחזיר תוצאה שגויה (ההסתברות לכך חסומה לכל היותר ½) סה"כ הסיכוי לכך שבכל שלב ייבחר המינימום/מקסימום הוא!/. 7 יציבות של מיון הגבלת עומק מחסנית הרקורסיה של מיון מהיר כאמור מיון מהיר הוא מיון במקום (iplce) כלומר ( Θ( איברים מאוחסנים בכל רגע מחוץ למערך הקלט. אבל זהו אלגוריתם רקורסיבי משאבי הזיכרון שהוא דורש תלויים גם במחסנית הרקורסיה. מהו עומק הרקורסיה של מיון מהיר: במקרה הגרוע? במקרה הטוב? בממוצע? עוד תכונה לפיה ניתן להשוות בין אלגוריתמי מיון היא היציבות.(stbility) נאמר שמיון היא יציב (stble) אם הוא שומר על סדר יחסי של איברים בעלי מפתחות זהים. האם מיון מהיר הוא יציב? נתבונן שוב בפעולת החלוקה על המערך הבא למשל: ניתן להקטין את עומק מחסנית הרקורסיה, באמצעות טכניקה שנקראת "העלמתרקורסייתזנב". רקורסיית זנב הוא מצב בו הפעולה האחרונה שמבצע אלגוריתם היא קריאה רקורסיבית. ניתן להחליף קריאה זו באיטרציה. לאחר החלוקה (גם זו של (Hore הוא ייראה כך: כלומר מיון מהיר בשתי הגרסאות האלו אינו יציב. מה לגבי מיון מיזוג? מיון בועות? מיון הכנסה?... 9 אמיר רובינשטיין. מיוןמהיר

40 פתרון א. ב. למעשה העלמת רקורסית זנב recursio) (til QuickSort ו QuickSort עושים בדיוק אותו דבר: שניהם מתחילים מאותה חלוקה, ואז ישנה קריאה רקורסיבית על.A[p..q] אח"כ QuickSort מבצעת קריאה רקורסיבית על.A[q+..r] QuickSort במקום זאת מציבה + q p ואח"כ קוראת לעצמה עם כך ששתי השגרות מטפלות באותם תתמערכים ובאותו סדר בדיוק. אם בכל פעם הציר הוא המקסימום אז.A[p..r] QuickSort תקרא לעצמה בכל פעם עם תת מערך שגודלו קטן ב. במצב כזה יהיו ( Θ(קריאות רקורסיביות: הדבר מתרחש כאשר המערך A כבר ממוין (בסדר עולה). QuickSort (A,, ) QuickSort (A,, ) QuickSort (A,, ) QuickSort (A,, ) בעייה 7 בספר הלימוד העלמת רקורסית זנב recursio) (til נתבונן בגרסה הבאה של מיון מהיר, בה הקריאה הרקורסיבית השנייה על החלק הימני הוחלפה באיטרציה של לולאה: הערה: QuickSort (A, p, r). while p < r. do prtitio d sort left subrry. q Prtitio (A, p, r). QuickSort (A, p, q ). p q + בקומפיילרים מודרניים מימוש של העלמת רקורסיית זנב recursio) (til נעשה אוטומטית. א. נמקו מדוע גרסה זו עובדת נכון. ב. תארו מקרה שבו עומק מחסנית הרקורסיה הוא.Θ() ג. הציעו שינוי ל QuickSort כך שעומק מחסנית הרקורסיה יוגבל במקרה הגרוע ל,Θ(log) ללא פגיעה בסיבוכיות הזמן של האלגוריתם. דוגמה נוספת להוכחת נכונות מיון בועות נדגים הוכחת נכונות על מיון בועות: BubbleSort(A, ). for i to. for j dowto i+. if A[j] < A[j]. exchge A[j] A[j] פתרון ג. העלמת רקורסית זנב recursio) (til הרעיון הוא לבצע את הקריאה הרקורסיבית ל הקטן יותר: QuickSort בכל איטרציה עם תתהמערך. עצירה: ברור שהאלגוריתם עוצר כי כל לולאה מבצעת מספר סופי של איטרציות ובכל איטרציה מספר סופי של פעולות.. נכונות הפלט: ננסח תכונות שמתקיימת בתחילת כל אחת מהלולאות (שמורות לולאה): שמורתהלולאההחיצונית: בהתחלתכלאיטרציהשללולאתה for שבשורות, התתמערך A[..i] מכילאת i האיבריםהקטניםביותרב A בסדרממוין. QuickSort (A, p, r). while p < r. prtitio d sort the smll subrry first. q Prtitio (A, p, r). if q p < r p. QuickSort (A, p, q ). p q + 7. else QuickSort (A, q +, r). r q גודל התתמערך בכל קריאה הוא לכל היותר מחצית מהגודל הנוכחי, ולכן מספר הקריאות (ומכאן שעומק המחסנית) הוא ( Θ(logבמקרה הגרוע. שמורתהלולאההפנימית: בהתחלתכלאיטרציהשללולאת ה for שבשורות, האיבר A[j] הואהאיבר המינימליבתתמערך A[j..] זמן הריצה של המיון לא נפגע, שכן אותן חלוקות נעשות ואותם תתימערכים מטופלים (רק אולי בסדר שונה כעת). אמיר רובינשטיין. מיוןמהיר

41 נכונות של מיון בועות לולאה חיצונית שמורתהלולאההחיצונית: בהתחלתכלאיטרציהשללולאתה for שבשורות, התתמערך BubbleSort(A, ). for i to. for j dowto i+. if A[j] < A[j]. exchge A[j] A[j] A[..i] מכילאת i האיבריםהקטניםביותרב A בסדרממוין. אתחול: לפני האיטרציה הראשונה, = i והתתמערך [ i..]a ריק, לכן שמורת הלולאה מתקיימת באופן ריק. תחזוקה: נניח ששמורת הלולאה החיצונית מתקיימת בהתחלת האיטרציה ה i, כלומר התתמערך A[.. i ] מכיל את i האיברים הקטנים ביותר בסדר ממוין; כפי שראינו, הלולאה הפנימית מעבירה את האיבר המינימלי של התתמערך [ ]A..i ל[ i ; ]A לכן, בסוף האיטרציה ה i (בהתחלת האיטרציה ה ( +i ( ( התתמערך [i..]a מכיל את i האיברים הקטנים ביותר בסדר ממוין, כלומר שמורת הלולאה מתקיימת גם לפני האיטרציה ה. ( i+ ) סיום: אחרי ביצוע האיטרציה ה( (, התתמערך ממוין; אבל אז, מ.ש.ל. [ ]A הוא האיבר הגדול ביותר, לכן כל המערך [..]A מכיל את האיברים הקטנים ביותר בסדר [..]A הוא עכשיו ממוין. נכונות של מיון בועות לולאה פנימית שמורתהלולאההפנימית: בהתחלתכלאיטרציהשללולאת ה for שבשורות, האיבר A[j] הואהאיבר המינימליבתתמערך A[j..] BubbleSort(A, ). for i to. for j dowto i+. if A[j] < A[j]. exchge A[j] A[j] אתחול: בתחילת האיטרציה הראשונה ; j = התתמערך [ ]A..j מכיל איבר אחד בלבד, לכן שמורת הלולאה מתקיימת. תחזוקה: נניח ששמורת הלולאה הפנימית מתקיימת בהתחלת איטרציה המינימלי בתתמערך כלשהי, כלומר [j ]A הוא האיבר ] ; A[ j.. אחרי ההשוואה בשורה, אם j ], A[ j] < A[ מתבצעת גם ההחלפה שבשורה ; בסוף האיטרציה הזו (ובהתחלת האיטרציה הבאה), [ j ]A הוא האיבר המינימלי בתתמערך [, ]A.. j כלומר שמורת הלולאה מתקיימת גם בתחילת האיטרציה הבאה. j= ; האיבר סיום: אחרי ביצוע האיטרציה האחרונה i. A[ i.. ] הוא האיבר המינימלי בתתמערך A[ i] שאלות חזרה תשובות לשאלות חזרה כאשר הוא המקסימום, Prtitio תחזיר את הערך כאשר הוא המינימום, היא תחזיר את הערך. (כאשר הוא גודל המערך).. עבור מערך שכל איבריו שונים זה מזה, איזה ערך של הציר A[r] הוא המקסימום? וכאשר הוא המינימום? q מחזירה Prtitio כאשר איבר.. בכל שלב תתבצע חלוקה לאזור שמאלי בגודל, ולאזור ימני ריק. הסיבוכיות ).Θ(. הדגימו את ריצתו של מיון מהיר על מערך ממוין, שכל איבריו שונים זה מזה. מהי סיבוכיות זמן הריצה במקרה זה? ודאו שאתם מבינים: במיון מהיר, החלוקה של המערך בכל שלב היא דינמית, כלומר: בכל שלב תיתכן חלוקה שונה. זאת בניגוד למיון מיזוג, בו החלוקה היא סטטית (תמיד לשני חצאים).. 7 אמיר רובינשטיין. מיוןמהיר

42 תרגילים מומלצים מהספר פרק בעיה 7 בעיה 7 7 בעיה תרגילים 9 תרגילים נוספים. נשנה את שורה באלגוריתם QuickSort ל: כלומר, לא ממיינים תתימערכים בגודל k או פחות. פתרון מקרה גרוע: ).Θ( k מקרה טוב: log(/k)).θ( פתרון בשלב הראשון איבר הציר הוא המינימום: האיבר הראשון והאחרון מתחלפים, וממשיכים עם תת המערך.A[..] בשלב השני איבר הציר הוא המקסימום: החלוקה לא משנה דבר וממשיכים עם.A[..] הלאה. לראשון, והרביעי לשני וכך השלב השלישי דומה כללית בכל שלב מתקבלת חלוקה שאחד האזורים שלה ריק. זמן הריצה הוא כמו במקרה הגרוע ).Θ(. if rp k. במקרה כזה אומרים שהפלט של QuickSort הוא מערך "כמעט ממוין עם שגיאה בגודל ". k נתחו את סיבוכיות הזמן של אלגוריתם זה במקרה הגרוע ובמקרה הטוב, כתלות ב וב k. הפוך, שכל איבריו שונים זה הממוין בסדר הדגימו את ריצתו של מיון מהיר על מערך A[..]. מזה. מהי סיבוכיות זמן הריצה במקרה זה? הדגימו את ריצת לזה. מהם זמני הריצה של החלוקה? Prtitio ואת ריצת HorePrtitio על מערך שכל מפתחותיו שווים זה QuickSort על מערך שכל מפתחותיו שווים, עם כל אחת מגרסאות אמיר רובינשטיין. מיוןמהיר

43 בתוכנית פרק בספרהלימוד נכיראתמבנההנתוניםערימה (hep) ונכירשני שימושיםחשוביםשלו: תורקדימויות queue) (priority (HepSort) האלגוריתם מיוןערימה מבני נתונים ומבוא לאלגוריתמים נושא תורי קדימויות ומיון ערימה Priority queues d hepsort אמיר רובינשטיין תור קדימויות queue) (priority תור קדימויות queue) (priority L) Crete(PQ, יצירתתורקדימויותמתוךרשימהנתונהL שלאיברים הכנסתהאיבראליומצביעx Isert(PQ, x) תור קדימויות הוא ADT המוגדר ע"י הפעולות הבאות: Mx(PQ) החזרתהאיברבעלהמפתח המקסימלי DelMx(PQ) מחיקתהאיברבעלהמפתח המקסימלי k ל שינויהמפתחשלהאיבראליומצביעx ChgePriority(PQ, x, k) מימוש תור קדימויות במערך ובמערך ממוין L) Crete(PQ, יצירתתורקדימויותמתוךרשימהנתונהL שלאיברים הכנסתהאיבראליומצביעx Isert(PQ, x) Mx(PQ) החזרתהאיברבעלהמפתח המקסימלי DelMx(PQ) מחיקתהאיברבעלהמפתח המקסימלי k ל שינויהמפתחשלהאיבראליומצביעx ChgePriority(PQ, x, k) הוא גודל הרשימה ההתחלתיתL m הואמספרהאיבריםברגענתון שאלה (מופיעהבשאלותהחזרה): זמן סיבוכיות Crete מערך Θ(m) מההסיבוכיותבמימושכרשימהמקושרת, ורשימהמקושרתממוינת? ממוין מערך **Θ(mlogm) Θ() Θ() Θ() Θ() Θ() * Θ() Θ() Θ() Isert Mx DelMx ChgePriority * אפשרלשפרל,Θ() עלחשבון ChgePriority ** אםלאידועדברעלאיבריהקלט, לאניתןלמיין בפחותמזמןזה (יוכחבהמשךהקורס) זוהיהרחבהשלתור, אלאשכאןהוצאההיאלפי הקדימות, ולאלפי הוותק. למפתחות של האיברים ניתנת בד"כ משמעות של קדימות או עדיפות. לתוריקדימויותשימושיםרביםומגוונים, למשל: סימולציהשלאירועיםבצירהזמן (המפתח: זמןהאירוע) תזמוןמשימות (ביצועעבודותעלמעבד, גישהלרשתוכו') אילו מבני נתונים מממשים תור קדימויות ביעילות? אמיר רובינשטיין. תורי קדימויות ומיוןערימה

44 ערימה (hep) מבנההנתונים ערימההואלמעשהמערך, שמייצגעץבינאריכמעטשלם. תור קדימויות queue) (priority נראה כעת מבנה נתונים יעיל עבור תור קדימויות, שנקרא ערימה זותהיהמעין "פשרה" ביןמערךרגיללמערךממוין. היתרון של מימוש בערימה: אףפעולה, למעטCrete כמובן, לאתדרושזמןליניארי! עומק עומק עומק 9 עומק בנוסףלמערךאנומחזיקיםמשתנהבשם hepsize ששומראתמספרהאיבריםבערימה. Pret(i). retur i / בדוגמה: =.hepsize בהינתןאיברבאינדקס i אפשרלחשבאתהאינדקסיםשלבניוושלאביו: Left(i). retur i Right(i). retur i + h = log מהומספרהאיבריםבערמהשגובהה? h תכונות של ערימות h h+ מהוהגובהשלערמהבת איברים? h log h log(+) > log מצד אחד: ומצד שני: h = log = Θ(log) ולכן באילואינדקסיםנמצאיםהעלים, וכמהעליםיש? כמהצמתיםפנימייםיש? עליםנמצאיםבאינדקסים + / עד. יש / עלים, ו / צמתיםפנימיים תרגיל: הוכיחובאינדוקציהעל ערימתמקסימום (mxhep) key[x] key[y] בערימת מקסימום מתקיים: עומק אםx בןשלy אז key[x] key[y] עומק עומק עומק בערימתמינימום מתקיים: אם x בןשלy אז צומתבאינדקס i הואעלהאם"ם.i > 7 מעתה, אם לא צוין אחרת, נדבר על ערימות מקסימום. אמיר רובינשטיין. תורי קדימויות ומיוןערימה

45 פעולות תיקון על ערימות פעולותתיקוןעלערימות HepifyDow exmple: HepifyDow(A,) A A i= 7 9 i= 7 9 נכירכעת פעולותבסיסיותעלערימות. מטרתן: תיקון ערימה שיש בה הפרה כלשהי של תכונת הערימה. ישמשו אותנו בהמשך בפעולות האחרות. הפעולהHepifyDow : מקבלתמערךA ואינדקסi. מניחהשתתיהעציםהימניוהשמאלישל i הםערימותתקינות. ייתכןש A[i] "עבריין": קטן (מלפחותאחד) מבניו. מחליקהאת "העבריין" כלפימטה, ע"יהחלפתועםבנוהמקסימלישובושוב A ערימה תקינה 7 9 i=9 9 i= 7 9 HepifyUp פעולות תיקון על ערימות HepifyDow פעולות תיקון על ערימות הפעולהHepifyUp : מקבלתמערךA ואינדקסi. מניחהש A ערימהתקינה, למעטאולי A[i] ה"עבריין" שגדולמאביו מחליקהאת "העבריין" כלפימעלה, ע"יהחלפתועםאביושובושוב 7 9 i=9 תרגיל: ממשואת HepifyUp ב.pseudocode HepifyDow(A, i). l Left(i), r Right(i), hepsize[a]. lrgest i. if l d A[l] > A[i] the lrgest l. if r d A[r] > A[lrgest] the lrgest r. if lrgest i. exchge A[i] A[lrgest] 7. HepifyDow(A, lrgest) i= 7 9 i= 7 9 HepifyUp(A, i). while i > d A[i] > A[Pret(i)]. exchge A[i] A[Pret(i)]. i Pret(i) 7 9 i=9 אמיר רובינשטיין. תורי קדימויות ומיוןערימה

46 פעולותתיקוןעלערימות ניתוחסיבוכיות HepifyUp פעולות תיקון על ערימות סיבוכיות זמן exmple: HepifyUp(A,9) במקרה הגרוע מבחינת כמות ההחלפות: i הוא גובה הצומת h(i) רצהבזמן (( Θ(h(iכאשר HepifyDow(A,i) A i הוא עומק הצומת d(i) רצהבזמן (( Θ(d(iכאשר HepifyUp(A,i) i=9 :ii הגרוע מבחינת במקרה אםמפעילים HepifyDow עלהשורש, אוHepifyUp עלעלה, זמןהריצההוא.Θ(log) A i= 7 9 סיבוכיות זיכרון נוסף HepifyDow דורשת (( Θ(h(iזיכרוןנוסףלצורךהרקורסיה. A i= 7 9 אבל: אפשרלממשגרסה איטרטיבית (ללארקורסיה), ואז ()Θ. ערימה תקינה פעולות על ערימות בנייה פעולות על ערימות עדכאןHepifyDow ו.HepifyUp כעתנפנהלמימושפעולותתורהקדימויות, וניעזרבשתיפעולותהתיקוןהנ"ל. בניית ערימה מרשימת איברים נתונה קלט: מערךA כלשהועם איברים. פלט: אותםאיבריםמסודריםב A כערימהחוקית..HepifyDow ומפעיליםעליהם,bottomup BuildHep(A, ). hepsize[a]. for i hepsize[a]/ dowto. HepifyDow(A, i) L) Crete(PQ, יצירתתורקדימויותמתוךרשימהנתונהL שלאיברים האלגוריתם: עובריםעלכלהצמתיםהפנימיים הכנסתהאיבראליומצביעx Isert(PQ, x) Mx(PQ) החזרתהאיברבעלהמפתח המקסימלי DelMx(PQ) מחיקתהאיברבעלהמפתח המקסימלי k ל שינויהמפתחשלהאיבראליומצביעx ChgePriority(PQ, x, k) אמיר רובינשטיין. תורי קדימויות ומיוןערימה

47 פעולותעלערימות בנייה 9 7 בניית ערימה 9 7 פעולותעלערימות בנייה 9 7 בניית ערימה 9 7 מערך הקלט ערימה תקינה 7 7 ניתוח גס ניתוחזמנים בנייתערימה.O(log) סה"כ.O(log) כלאחתב HepifyDow קריאותל /.Θ() ניתוח עדין יותר נוכיח כעת שזמן הריצה הוא אינטואיציה: ישהרבהקריאות "זולות" ומעטקריאות "יקרות". נספורכמההחלפות (exchge) מתבצעות (לזמןריצהכוללישלכפולבקבוע). ישלכלהיותר/ עלים, / אבותשלעלים, / סביםשלעליםוכו' (השמטנוערכיתקרה) i log i+ = ( ) + ( ) + ( )... + לצומתבגובה y מתבצעותלכלהיותר y החלפות. / + / לכן מספר ההחלפות הכולל הוא לכל היותר: log i= i i + פעולותעלערימות בנייה BuildHep(A, ). hepsize[a]. for i hepsize[a]/ dowto. HepifyDow(A, i) 9 מדוע עוברים רק על הצמתים הפנימיים? מדועbottomup? אמיר רובינשטיין. תורי קדימויות ומיוןערימה

48 פעולות על ערימות מחיקת מקסימום מחיקתמקסימום מחיקת מקסימום הרעיון: פעולותעלערימות מחיקתמקסימום נעביר לשורש את העלה האחרון נקטיןאת hepsize ב נקראל HepifyDow עלהשורשכדילתקןהפרהאפשרית HepExtrctMx(A). if hepsize[a] <. error hep uderflow. mx A[]. A[] A[hepSize[A]]. hepsize[a] hepsize[a]. HepifyDow(A, ) 7. retur mx סיבוכיותהמקרההגרוע: Θ(log) פעולותעלערימות הכנסה הכנסה הכנסה הרעיון: פעולותעלערימות הכנסה HepIsert(A, key). hepsize[a] hepsize[a] +. A[hepSize[A]] key. HepifyUp(A, hepsize[a] ) נוסיף את האיבר החדש כעלה הבא נגדילאת hepsize ב נקראל HepifyUp עלהעלההחדש סיבוכיותהמקרההגרוע: Θ(log) הערה: אםנתון מצביע לאיברx אותורוציםלהכניס (שיכוללהיותבעלשדותרבים), אזנכניסלערימהאתהמצביעבאופןדומה, כאשראתהתיקוןנבצעלפיהמפתחשלx. אמיר רובינשטיין. תורי קדימויות ומיוןערימה

49 שינוי מפתח הרעיון: פעולות על ערימות שינוי מפתח אחרישינויהמפתח, יכולהלהיווצרהפרהכלפימעלהאוכלפימטה. לכן נתקן כלפי מעלה או כלפי מטה. סיבוכיותהמקרההגרוע: Θ(log) HepChgeKey(A, i, key). A[i] key. HepifyDow(A, i ). HepifyUp(A, i ) בעיה מספר הלימוד בהינתןמערך A בגודל, האיבריםלערימהבזהאחרזה: פעולותעלערימות הכנסה א. הדגימובנייתערימהבדרךזועלהמערך והשוולערימההמתקבלתמ.BuildHep ניתןלבנותממנוערימהבדרךשונהמזושראינו, ע"יהכנסת BuildHep (A, ). hepsize[a]. for i to. HepIsert(A, A[i]) האם ייתכן שאחרי שינוי המפתח ישנה הפרה גם מעלה וגם מטה? ב. האם שיטה זו יעילה מבחינת זמן ריצה? מיון ערימה מיוןערימה (hepsort) שימוש נוסף של ערימות הוא האלגוריתם מיוןערימה HepSort(A, ). BuildHep(A). for i dowto. exchge A[] A[i]. hepsize[a] hepsize[a]. HepifyDow(A, ) שלב בניית הערימה שלב סידור האיברים 7 אמיר רובינשטיין. תורי קדימויות ומיוןערימה

50 מיון ערימה מיון ערימה (hepsort) (hepsort) הדגמתשלבסידורהאיברים (הערימהכברנבנתה): מיון ערימה שאלות חזרה (hepsort) ניתןלממשתורקדימויותברשימהמקושרת, וברשימהמקושרתממוינת. מהיסיבוכיות כלאחתמהפעולותשלתורקדימויותבכלאחדמהמימושיםהאלו? האם המערך הבא הוא ערימת מקסימום? >,7,,,,,,,7, < האם מערך ממוין הוא ערימת מינימום? בערמתמקסימום, האיבר המקסימלי נמצאבאינדקס, והאיברהשניהכיגדולנמצא באינדקס או. נתונהערמתמקסימוםבגודל, עםאיבריםשוניםזהמזה. א. באילואינדקסיםיכוללהימצאהאיברה הכיגדול? ב. באילואינדקסיםיכוללהימצאהאיברה הכיגדול?.... HepSort(A, ). BuildHep(A). for i dowto. exchge A[] A[i]. hepsize[a] hepsize[a]. HepifyDow(A, ) Θ( ) + k= Θ() Θ(logk) k סיבוכיותהמקרההגרוע: Θ(log k) =Θ( ) +Θ(log!) =Θ( ) +Θ( log ) =Θ( log ) באילואינדקסיםיכוללהימצאהמינימוםבערימתמקסימוםבגודל? הניחוכיכלהאיבריםשוניםזהמזה. מהוזמןהריצהשלחיפושאיברנתוןבערימה? הראובאמצעותדוגמהשמיוןערימהאיננומיוןיציב....7 תכונות מיון ערימה: ממייןמערךבגודל בזמן ( Θ(logבמקרההגרוע. ממייןבמקום,(iplce) ודורש ( Θ( זיכרוןנוסף (מעברלמערךהקלט) האם מיון יציב? (בתנאי ש HepifyDow ממומשתללארקורסיה) אמיר רובינשטיין. תורי קדימויות ומיוןערימה

51 תשובות לשאלות חזרה. ניתןלממשאתהפעולותבסיבוכיותהבאה (ודאושאתםמביניםכיצד): תרגילים Crete. רשימה מקושרת Θ() רשימה מקושרת ממוינת Θ(log) Θ() Θ() Θ() Θ() Θ() Θ() Θ() Θ() Isert Mx DelMx Chgepriority לא. המפתח מפר את תכונת הערימה כלפי בנו הימני.. כן. כלצומתמקייםאתתכונתערימתהמינימום. א. באינדקסים עד 7 (עומק או ) ב. באינדקסים עד (עומק עד ). המינימוםחייבלהיותעלה, כלומרבאינדקסים / עד. +. חיפושבערימהדורשבמקרההגרועזמןליניארי. ניתןלהוכיחזאתלמשלבעזרת התשובהלשאלההקודמת: אםמחפשיםאתהמינימום, ישלעבורעל ( Θ(צמתים...7 למשלמיוןערימהעל< <, לאשומרעלהסדרהיחסיבין ל. תרגילים נוספים.. מהזמןהריצהשלBuildHep עלמערךהממויןבסדרהפוך? ממשואתהפעולה (i Del(A, המוחקתמערמתמקסימום A בגודל אתהצומתבאינדקס i, בסיבוכיותזמן.Θ(log). תארו מבנה נתונים המאפשר ביצוע הפעולות הבאות בסיבוכיות הנדרשת: Iit(S) Isert(x) אתחולהמבנה, בהינתןסדרתאיברים S באורך m, בזמן.O(m) הוספת x למבנה, בזמן O(log).O() בזמן החזרת המינימום, Fidmi.O() החזרתהמקסימום, בזמן Fidmx Delmi Delmx הוצאתהמינימוםמהמבנה, בזמן.O(log) הוצאתהמקסימוםמהמבנה, בזמן.O(log) ( הוא מספר האיברים הנוכחי).. במכללהמסוימתמלמדים מרצים. נתוניהמרצים (שם, כתובת, שכר) שמוריםבקובץ. אנו מעונייניםלהדפיסאתשמותיהםשל m המרציםשמרוויחיםאתהשכרהגבוהביותר. תנו פתרון יעיל תחת ההגבלות הבאות: סיבוכיותהזיכרוןהנוסףהמותרת:.O(m) נתון.m=o() מותר לעבור על נתוני הקובץ פעם אחת בלבד. אמיר רובינשטיין תרגילים מומלצים מהספר פרק תורי קדימויות ומיוןערימה בעיה

52 Del(A, i). hepsize[a]. A[i] A[]. hepsize[a] hepsize[a]. HepifyDow(A, i). HepifyUp(A, i) פתרון פתרון בכלאחתמ / האיטרציות, השגרה HepifyDow תסתייםבקריאההראשונה. זמןהריצההואעדיין,Θ() אבלהקבועהחבויבזמןהריצההואקטןיותר. נעביראתהעלההאחרוןלאינדקס i, ונתקן. מטה. נשיםלבשתיתכןהפרהכלפימעלהאו האם אתם יכולים לתת דוגמה לכל מקרה? 7 :Iit(S) נעתיקאתאיבריS לשני מערכים נפרדים. בשלבזה "תאומים" נמצאיםבאותואינדקס, לכןלכלאיברנאתחלאתאינדקסה"תאום" שלוכאינדקסשלועצמו. נריץBuildhep פעםלערמתמינימוםופעםלערמתמקסימום. כלתזוזהשלאיבר תגרורעדכוןשלהאינדקסששמוראצלאחיו "התאום" (תוספתשלקבוע לסיבוכיות). זמן: Θ(m) עבור ההעתקהועוד Θ(m) עבורבנייתהערמות. סה"כ.Θ(m) פתרון נשמוראתהאיבריםבשתיערמותבוזמנית: ערימתמינימוםוערימתמקסימום. לכלאיברנשמורגםאתהאינדקסשלה"תאום" שלובערמההשנייה. :Fidmx / Fidmi החזרתשורשהערמההמתאימה. זמן: ()Θ. שוב, בכלתזוזהשלאיברבערמהאחת, הערמות. לכלאחתמשתי x נכניסאת :Isert(x) x נעדכןאת האינדקסששמוראצלאחיו "התאום" בערמההשנייהבהתאם. זמן: כלהכנסה,Θ(log) סה"כ.Θ(log) ערימתמקסימום ערימתמינימום :Delmi נמחקאת שורשערימת המינימום ובעזרתהאינדקסיםנגיעל"תאום" ונמחקגםאותו מערימת המקסימום. מחיקתשורשתתבצע כרגיל, ואילומחיקתה"תאום" תתבצע כפישראינובתרגיל קודם. מימוש Delmx סימטריל.Delmi elemet idex of twi 7 7 זמן: כלמחיקה,Θ(log) סה"כ.Θ(log) הערה: הצומת התאום של שורש ערימה אחת הוא עלה בערימההשנייה. 9 בשקףהבא מימושהפעולות אמיר רובינשטיין. תורי קדימויות ומיוןערימה

53 פתרון נשתמש בערמת מינימום בגודל m.. נעתיקאת m האיבריםהראשוניםבקובץלמערך, הואהשכר, והשםוהכתובתהםנתוניםנלווים.. כעתנעבורעליתרהמרציםבקובץהחלב m+, ולכלמרצה : x אםשכרושלx גבוהמזהשמופיעבשורשהערמה, אזנבצע: HepExtrctMi HepIsert(x)..... לבסוףנדפיסאתאיבריהערמה. סיבוכיות זיכרוןנוסף: אנומשתמשיםבערימהשגודלה m, כלומר.Θ(m) זמן: שלבים ו רציםב.Θ(m) ונאתחלממנוערמתמינימום, כאשרהמפתח בשלב מבצעים m פעולות, שכלאחתמורכבתבמקרההגרועמשתיפעולותב.Θ(logm) סה"כ: Θ(logm).Θ(m) +Θ((m)logm) = שאלה: מה היה משתנה אילו רצינו להדפיס את השמות ממוינים לפי גובה השכר? אמיר רובינשטיין. תורי קדימויות ומיוןערימה

54 בתוכנית פרק בספרהלימוד נענהעלהשאלה "כמהמהראפשרלמיין?" נלמדמהוחסםתחתוןלבעיה, ונמצאחסםתחתון לבעייתהמיון נכירכמהמיוניםליניאריים: מבני נתונים ומבוא אלגוריתמים נושא מיוןמנייה sort) (coutig מיוןבסיס sort) (rdix מיוןדלי sort) (bucket חסם תחתון לבעיית המיון, מיונים ליניאריים Lower boud to sortig, lier sorts אמיר רובינשטיין תזכורת להגדרת בעיית המיון: כמה מהר אפשר למיין? משפט: חסם תחתון למיון השוואות כלאלגוריתםמיוןהשוואותעלסדרהבאורך מבצעבמקרההגרוע Ω(log) השוואותבין איברי הקלט. קלט: סדרתאיברים ) (,,..., שמוגדרעליהםסדר. פלט: פרמוטציה ` `... ` שלאיבריםאלו, כךש ( `, `,..., `) אלגוריתם מיון השוואות: lgorithm) (compriso sortig מיון, שבו החלטות על קביעת הסדר הממוין מבוססת רק עלהשוואות בין איברי הקלט. בהינתןשניאיברים ו b אפשרלבצעכלאחתמהבדיקותהבאות: < b, b, = b, b, > b אלגוריתם מיון: קביעתהסדרלאמתבססתעלפעולותאחרות, כמופעולותחשבוןעלאיברים (ואףכלללא מניחים שהאיברים הם מספרים). פתרוןלבעייתהמיון, כלומר: סדרתפעולותשמפיקהמכלקלטאתהפלטהממוין....,QuickSort,HepSort,MergeSort,BubbleSort,IsertioSort למשל: נשיםלבשאףאחדמהנ"ללארץבמקרההגרועב.o(log) האםזהמקרה? במיליםאחרות: האםידועאלגוריתםשממיין איבריםבזמן o(log)? ואםלא האםמישהועשוילהמציאכזהאלגוריתםיוםאחד? ואםלא, איךמוכיחיםשאף אלגוריתם (ידועאושטרםהתגלה) לאיכוללעשותזאת? כל המיונים שראינו עד כה בקורס הם מיוני השוואות. מסקנה: מיוןהשוואותלאיכוללרוץב.o(log) לכןמיוןערימהומיוןמיזוגהםמיוניםאופטימלייםמבחינתסיבוכיותזמןבמקרההגרוע. אמיר רובינשטיין. חסם תחתון לבעיית המיון, מיונים ליניאריים

55 הוכחתהחסםהתחתון מודלעץההחלטה ניתןלתארמיוניהשוואותבאופןמופשטבאמצעותעציהחלטה trees).(decisio לכלאלגוריתםמיוןהשוואות, ולכלגודלקלט מתאיםעץהחלטהאחד. הוכחת החסם התחתון מודל עץ ההחלטה כמות ההשוואות שעורך אלגוריתם במקרה הגרוע מיוצגת ע"י מסלול ארוך ביותר מהשורש לעלה כלשהו, כלומרע"י גובה העץ. לפחות! לכלהיותר h נמצאאםכןחסםתחתוןלגובההעץ (נסמנוh ): כמהעליםלפחותישבעץהחלטהעבורמיוןשל איברים? כמהעליםלכלהיותרישבעץבינאריבגובהh? ולכן: כלומר: וקיבלנו:! מספרהעלים h h log (!) h = Ω(log) דוגמה: עץההחלטהעבורמיוןהכנסהו =: מסלול שמתאים לקלט (,,) : : : > : (,,) : > > (,,) (,,) > > (,,) (,,) 9 7 בכךהוכחנוכי כלמיוןהשוואותעלקלטבגודל עורךבמקרההגרוע Ω(log) השוואות, ולכן זמןהריצהשלוהוא.Ω(log) הערה: עץההחלטהמתייחסאךורקלפעולותההשוואהביןאיבריהקלטשעורךהאלגוריתם. ככל הנראהישנןפעולותנוספותכגוןהחלפתאיברים, קידוםאינדקסיםבלולאותוכו'. ריצהשלהאלגוריתםמתחילהמהשורשומסתיימתבאחדהעלים. כלצומתפנימימסומן. j ו i ומייצגהשוואהשהאלגוריתםעורךבין i : j אם i j המשךביצועהאלגוריתםמיוצגע"יפניהשמאלהבעץ, אחרתימינה. כלעלהמייצגתמורהשלהקלט π() π() π() π()> <π(), π(),, וכאשרמגיעיםלעלהמתקיים פערים אלגוריתמיים במקריםרביםישנם "פעריםאלגוריתמיים" ביןהחסםהעליוןהנמוךביותרוהחסםהתחתוןהגבוה ביותר שידועים לבעיה מסוימת. דוגמה: בעייתהסוכןהנוסע problem).(trvellig slesm אפשרלעבורעלכל!() המסלולים. לכןיש אלגוריתם שזמן ריצתו O(!) O( ),(9) HeldKrp אלגוריתם בעיית הסוכן הנוסע O(!) נתונות עריםומרחקיםביניהן. ישלחשבמסלולמעגליקצר ביותרשעוברבכלהערים. c b d O( )? חסמים עליונים ותחתונים למיון השוואות מיון בועות מיון ערימה, מיון מיזוג בעיית מיון השוואות הוכחה שמיוןהשוואותדורש ( Ω(logזמן צריךלעבורעלהקלט. לכןכל מיוןדורש ( Ω(זמן O( ) O(log) Θ(log) Ω(log) Ω() הוכחנו סיבוכיות הזמן הטבועה בבעיית מיון השוואות O(c ) Ω() גילויושלאלגוריתםמספקהוכחת חסםעליון לבעיה (ניתןלפתוראותהב"לאיותרמאשר...") צריךלעבורעלכלהקלט. לכןכל אלגוריתםדורש ( Ω(זמן שאלהפתוחה: האםקייםאלגוריתםשרץבזמן עבורc<? לעומתזאת, בהוכחת חסםתחתון לבעיה (לאניתןלפתוראותהב"פחותמאשר...") ישלקחת בחשבוןאתכלהאלגוריתמיםשפותריםאותה (קיימיםושטרםנתגלו!). 7 אמיר רובינשטיין. חסם תחתון לבעיית המיון, מיונים ליניאריים

56 מיונים ליניאריים נכיר כעת מיונים, שתחת הנחות מסוימות רצים בזמן ליניארי במקרה הגרוע: מיון מנייה מיון בסיס מיון דלי פערים אלגוריתמיים דוגמהנוספת: בעייתעץפורשמינימום tree).(miimum spig נתונים מחשביםוביניהםm כבלים. מהירשתהכבליםהקצרהביותר שמשאירהאתכולםמחוברים? (m ) O(mlog) O(mloglog) אלגוריתם O(mlog) :(97) Prim אלגוריתםKruskl * O(mlog) :(9) אלגוריתםמשנת 97 O(mloglog) אלגוריתםמשנת 999 כמובן, מיוניםאלואינםמיוניהשוואות, והםמבצעיםעלאיבריהקלטפעולותנוספותמלבד השוואות. לפיכךהחסםהתחתוןשהוכחנואינוחלעליהם. ** O(m α(m,)) O(m α(m,)) בעיית עץ פורש מינימום? Ω(m) צריךלעבורעלכלהקלט. לכןכל אלגוריתםדורש ( Ω(+m)=Ω(mזמן שאלהפתוחה: האםקייםאלגוריתםשרץבזמן O(m)? 9 גרסה מסויימת שלאלגוריתם Kruskl רצהבזמן ),O( ואם ) m=θ( הואיעיליותר. α(m,) היאפונקצית אקרמן ההפוכה, פונקציה "כמעטקבועה". * ** (CoutigSort) מיון מנייה מיון מנייה (CoutigSort) 9. for j dowto. do B[C[A[j]]] A[j]. C[A[j]] C[A[j]] A C 7 שלבד' ייצורהפלט A 7 מניחשהקלטהואמערךA בגודל שמפתחותיוהםמספריםשלמיםבתחום [k ]..k משתמשבמערך B, בגודל אליוהואכותבאתהפלט, ובמערךעזרC בגודל 7 9 מערךהקלט ) = ( מערךהעזר ) = (k C 7 9 B 7 9 הפלט מערך. for i to k. do C[i] C שלבא' איפוס 7 9 A 7 7 B 9 7 C מערךהפלט. for j to. do C[A[j]] C[A[j]] +. C[i] ow cotis the umber of elemets = i.. for i to k 7. do C[i] C[i] + C[i ]. C[i] ow cotis the umber of elemets i. C C 7 שלבב' מנייה 7 9 שלבג' צבירה אמיר רובינשטיין. חסם תחתון לבעיית המיון, מיונים ליניאריים

57 מיון מנייה (CoutigSort) CoutigSort (A, B, k). for i to k. C[i]. for j to. C[A[j]] C[A[j]] +. C[i] ow cotis {elemets = i}. for i to k 7. C[i] C[i] + C[i ]. C[i] ow cotis {elemets i} 9. for j dowto. B[C[A[j]]] A[j]. C[A[j]] C[A[j]] רץבזמן k).θ( + כאשר k=o() זמןהריצההוא.Θ() סיבוכיותזיכרוןנוסף k).θ( + לאמבצעכללהשוואותביןאיבריהקלט! שאלה: בשלבייצורהפלט, מדועעובריםעלהקלטבסדרהפוך? 9. for j dowto. do B[C[A[j]]] A[j]. C[A[j]] C[A[j]] A 7 A 7 (CoutigSort) 7 B 7 B 9 9 שלבד' ייצורהפלט מערך הפלט מיון מנייה 7 7 C C מערך הפלט שאלה: אחרישלבב' (המנייה), אפשרכברלייצראתהפלט (יודעיםכמהפעמיםמופיע כל מספר). מדוע לא עושים זאת? B 7 9 מערך הפלט 7 מיון בסיס (RdixSort) מיון בסיס (RdixSort) שאלות: מדוע נדרש בכל שלב מיון יציב? מניחשהקלטהואמערךA בגודל שמפתחותיואיבריםהניתניםלייצוגכמספריםשלמיםבני d ספרותבבסיס b כלשהו. אמיר רובינשטיין מדועלמייןמה LSD אלה MSD ולאלהיפך? סיבוכיות זמן ישנם d שלבים. אםבכלשלבנשתמשבמיוןמנייה, סיבוכיותכלשלבתהיה b).θ( + סה"כ: b)).θ(d( + כאשרd קבוע, ו b=o() מיוןבסיסרץבזמןליניארי. למשל: בסיסבינרי (), עשרוני (9), הקסאדצימלי,(9,AF) בסיסא"בכלשהו (AZ) האלגוריתם בשלבים: ממיין החלבספרההפחותמשמעותית (LSD) ועדלספרההיותרמשמעותית.(MSD) בכלשלבמפעילמיוןיציב (למשלמיוןמנייה) חסם תחתון לבעיית המיון, מיונים ליניאריים

58 הרעיון מיון דלי (BucketSort) מניחשהקלטהואמערךA בגודל שמפתחותיוהםמספריםשלמיםבין ל k. שלב : נפזראת שלב : נשרשראתהדליים. המפתחותל k "דליים" (כלדליהוארשימהמקושרת) B דליריק דליריק =7 k= מערךהקלט A קצת היסטוריה מיוןבסיס (RdixSort) מיוןבסיסהיההאלגוריתםששימשאתממיינותהכרטיסיםמסוףהמאהה 9 ועדשנותה 7 שלהמאהה. הקלטלממיינתכרטיסיםהיהכרטיסניקוב, אותוהמציאHollerith Herm ב 9, לטובתמפקדהאוכלוסין האמריקני: מספרעמודות, כשבכלאחתמספרערכיםעבורספרותואותיות כל "תא" יכוללהיותמנוקבאולאמנוקב ממיינתהכרטיסיםהיתהבודקתכלפעםעמודהאחת, ומפזרתאתהכרטיסיםלתאיםלפיהתאהמנוקב. מיון לפי מספר עמודות נעשה בשיטת מיון בסיס: מיון חוזר לפי עמודות, מהעמודה הפחות משמעותית, אל העמודה היותר משמעותית. איך אפשר לדאוג שהמיון יהיה יציב? הקים עסק פרטי, שבשנת 9 הפך ל... IBM. Hollerith להכניסאיבריםלסוף הרשימות (צריךבשבילזהגםמצביעלסוףכלרשימה) 7 מיון דלי המורחב מיון דלי (BucketSort) מניחשהקלטהואמערךA בגודל המורכבממספריםממשייםבתחום (,] שהםבעלי התפלגות אחידה בתחום זה. התפלגותאחידה: הסיכוילהופעתמספרבתוךתתקטענתוןפרופורציוניתלאורכו הרעיון למשל, הסיכוילהופעתקלטבתתקטע (¾, ½] הוא¼. אםהמספריםמתפלגיםבצורהאחידהבקטע (b,] עבור<b כלשהם, אפשר "לנרמל" אותם. עבור b) x [, נשתמשבנוסחה:.(x )/(b ) נפזר את המפתחותל "דליים", שכלאחד מהם "מכסה" תתקטעשגודלו /. (כל דלי הוא רשימה מקושרת) דלי ריק A[..] B[..] [,.) [.,.) [.,.) [.,.) [.,).. דליריק...79 זמן סיבוכיות BucketSort(A, ). for i to. isert A[i] ito list B[A[i] ]. coctete the lists B[], B[],..., B[] together i order פיזור האיברים לדליים לוקח סה"כ שרשור הרשימות לוקח סה"כ:.Θ(+k).(Θ() (הכנסהלרשימהב Θ() ( Θ(+kבלימצביעיםלסוףהרשימות, או Θ(k) עם מצביעים לסוף הרשימות נמייןכלדלי, ונשרשראתהדלייםהממוינים. 9 אמיר רובינשטיין. חסם תחתון לבעיית המיון, מיונים ליניאריים

59 ..... שאלות חזרה החסםהתחתוןלמיוןהשוואותשהוכחנומתייחסלמקרההגרוע. במקרההטובאפשר כמובןלמייןבזמן.o(log) הראואלגוריתםמיוןהשוואותשרץבזמןליניאריבמקרההטוב. בהוכחתהחסםהתחתוןלמיוןהשוואות, צויןכיבעץההחלטהשמתאיםלקלטבגודל יש לפחות! עלים. נסולחשובמדועעלוליםלהיותיותרמ! עליםבעץהחלטהומתיזה קורה. במונחיםשלΘ, מהוגובהעץההחלטהשלמיוןבועותעבורקלטבגודל? ושלמיוןערימה? מהיסיבוכיותהזמןבמקרההגרועשלמיוןדליהמורחב (ומהוהמקרההגרוע)? איך ממיינים בזמן ליניארי מערך של אותיות באנגלית?. במיוןמנייה, אחרישלבב' (המנייה), אפשרכברלייצראתהפלט (יודעיםכמהפעמיםמופיע כלמספר). מדועלאעושיםזאת? (התשובהבשקפים) מיון דלי המורחב BucketSort(A, ). for i to. isert A[i] ito list B[ A[i] ]. for i to. sort list B[i] usig (e.g.) isertio sort. coctete the lists B[], B[],..., B[ ] together i order מכיווןשהתפלגותהמפתחותאחידה, אנו מצפים למצואמספרקבועשלמפתחותבכלדלי, ולכן מיון כל דלי ידרוש ( Θ( זמן. סיבוכיות הזמן הממוצעת של מיון דלי המורחב היא.Θ() (הוכחהבספרהלימוד, עמודים 7 ) האלגוריתםיבדוקאםהמערךממוין, ערימה (למשל): תשובות לשאלות חזרה גם מיון הכנסה רץ בזמן ליניארי במקרה הטוב. ואםכן, פשוטיחזיראותו, אחרתיפעילאתמיון אםישיותרמ! עלים, אזישנההשוואהמיותרתשמבצעהאלגוריתם. המתאים. Θ(השוואות, וזהוגובהעץההחלטה מיוןבועותמבצעבמקרההגרוע ) מיוןערימהמבצעבמקרההגרוע Θ(log) השוואות, וזהוגובהעץההחלטההמתאים. תרגילים LierBestCseSort(A, ). for i to. if A[i] > A[i+]. retur HepSort(A, ) במקרההגרוע, כלהאיבריםנכנסיםלאותודלי, כלומרנוצרדליאחדעם איברים. מיונושלדליזהבאמצעותמיוןהכנסהלוקח ) Θ( (אפשרכמובןלשפרל,Θ(log) אם נשתמשבמיוןערימה). מיוןמנייהלמשליעבודבזמןליניארי, כאשרכלאותמיוצגתע"ימספרבין ל אמיר רובינשטיין. חסם תחתון לבעיית המיון, מיונים ליניאריים

60 תרגילים נוספים. א. הוכיחושכלאלגוריתםמיוןהשוואותהממייןמערךבאורך חייבלבצע (במקרההגרוע) לפחות 7 השוואות. ב. כמההשוואותמבצעיםאלגוריתמיההשוואותשהכרנובקורסעלמערךבאורך, במקרההגרועובמקרה הטוב? ג. אתגר: כיתבואלגוריתםמיוןהשוואותהמבצע 7 השוואותבמקרההגרועעלמערךבאורך.. פרופסורכלשהובמחלקהכלשהיבמכללהכלשהיבצפוןהארץטועןשלאחרשנותמחקררבות, מצא אלגוריתםליניארישמקבלערימהבת איברים, ומדפיסאתאיבריהממוינים. האםהייתםנותניםלפרופסורללמדמבנינתונים? אםכן הראואלגוריתםכמוזהשמציעהפרופסור. אםלא הוכיחו כי טענתו לא יכולה להיות נכונה.. פלינדרום (Plidrome) באורך הואסדרתתווים,,..., המקיימת i = j לכלj+, i = עבור. i, j תרגילים מומלצים מהספר נתונהסדרהבאורך שלמספריםשלמיםבין ל, וידועשכלמספרמופיעכמותזוגיתשלפעמים. האם ניתןלהפוךאתהסדרההנתונהלפלינדרוםבאורך, שמכילאתאותםמספריםבדיוק, בזמןריצה?o(log) הראו כיצד או הוכיחו כי לא ניתן. פרק בעיה בעיה בעיה פתרון ב. א. הוכחנוכיגובהעץהחלטהשלמיוןהשוואותעלמערךבאורך הואלפחות נציב= ונקבל:.log (!) h log (!).9 גובההואמספרשלם, לכןגובהשלעץהחלטהכנ"להואלפחות 7. מיון מכיווןשגובהעץההחלטהמייצגאתהמסלולהארוךביותרמהשורשלעלה, זהוגםמספר ההשוואותבמקרההגרועשיבצעהאלגוריתם. מיון הכנסה מיון מיזוג מיון מהיר מיון ערימה מקרה גרוע מקרה טוב 9 תרגילים נוספים. נתונים מספריםשלמיםבתחום ].[, הציעודרךיעילהלמיינם. רמז: מהוהמספר המקסימלי בןשתיספרותבבסיס?. בעיית הוקטור הפרבולי בבעיית הוקטור הפרבולי נתוןמערך בגודל שלשלמיםשונים (איןחסםעלגודלם) וצריךלסדרמחדשאת איברי המערך כך שיתקיים: לכל A[i] A[i] מתקיים < i / A[i] A[i+] מתקיים / + i < לכל מערךשמסודרבאופןהנ"לנקראוקטור פרבולי. לדוגמה, המערךהבאהינווקטור פרבולי: <,,, 9,, > א. תנוחסםתחתון (במונחיםשל Ω) לסיבוכיות הזמןהדרושהלפתרוןבעיית הוקטור הפרבולי. ב. הציגואלגוריתםאופטימלי (הןמבחינתסיבוכיות זמןוהןמבחינתסיבוכיות מקום) לפתרוןבעיית הוקטור הפרבולי. 7 אמיר רובינשטיין. חסם תחתון לבעיית המיון, מיונים ליניאריים

61 פתרון נבחן כמה אסטרטגיות: ( ( מיוןמבוססהשוואותייקח.Ω(log).O(+k) = O(+ ) = O( ) ייקח Coutig Sort ( נעבירכלמספרלבסיס. כךכלמספריהיהבעל ספרותלכלהיותר. סיבוכיות O() (בהנחהשחלוקהושאריתרצותבזמןקבוע) המספרים. על כעתנפעיל RdixSort סיבוכיות.O(d (+b)) = O((+)) = O() פתרון טענתו של הפרופסור אינה נכונה. נניחבשלילהשקייםאלגוריתם, ליניאריבגודלהערימה. נקראלו,Alg שמקבלערימהומדפיסאתאיבריהממויניםבזמן מהנחהזונובעשניתןלמייןכלמערךבזמןליניארי: נבנהמהמערךערימהבזמןליניארי באמצעותBuildHep, ואזנקראלאלגוריתם Alg הנ"לעםהערימהשבנינוכקלט. זו כמובן סתירה לחסם התחתון שלמדנו לבעיית המיון. פתרון מיוןמנייה (אומיוןדלי) עלהסדרההנתונהירוץבזמן הפתרוןהשלישיהוא העדיף (והואאופטימלימבחינתסדרגודל מדוע?)..Θ(+k) = Θ(+) = Θ() אחריהמיון, נבצעמעבראחדעלהסדרה, ונמקםאיברבעלאינדקסזוגיבמקוםהפנויהבא מההתחלה, ואיברבעלאינדקסאיזוגיבמקוםהפנויהבאמהסוף. 9 פתרון א. נוכיחכיהחסםהתחתוןלבעיההוא.Ω(log) נניחבשלילה, כיקייםאלגוריתםשהופךמערךנתוןבגודל.PV קטנה). נקראלאלגוריתםזה o) o(log) לוקטורפרבולי, ורץ בזמן נראהכעתשמהנחתהשלילהנובעשקייםאלגוריתםמיון, שרץבזמן o(log) : אלגוריתםהמיון (מקבלמערךA בגודל ):. הרץאתPV עלהמערךA. הפוך את סדר האיברים בחצי השני שלA. מזג את שני החצאים שלA. // נוצרוקטור פרבולי // כעתכלמחציתממוינת // כעתA ממוין אלגוריתם מיון זה רץ בזמן o(log) + Θ() + Θ() = o(log) וזוכמובןסתירהלחסםהתחתוןלמיוןהשוואותשלמדנו. לכןההנחהבשלילהשגויה. ב. מיוןערמה, ואח"כהפיכתסדרהאיבריםבחציהמערךהשמאלי. סיבוכיותהזמןהיא,Θ(log) ואילוסיבוכיותהמקוםהנוסףהיא ()Θ. אמיר רובינשטיין. חסם תחתון לבעיית המיון, מיונים ליניאריים

62 בתוכנית פרק 9 בספר הלימוד מבני נתונים ומבוא לאלגוריתמים נושא 7 נגדיר את בעיית הבחירה נכיר פתרונות יעילים לבעיית הבחירה: האלגוריתם RdomSelect האלגוריתם Select בעיית הבחירה Selectio problem אמיר רובינשטיין האם קיים פתרון ליניארי לכל i? בעיית הבחירה למשל, האם ניתן למצוא את החציון בזמן לינארי? חציון (medi) יוגדר כאיבר ה נציג כעת שני אלגוריתמים: + הגדרת הבעיה קלט: קבוצה בת איברים, ואינדקס בעיית הבחירה בגודלו. RdomSelect שפותר את הבעיה בזמן ליניארי בממוצע אבל לא במקרה הגרוע זהו אלגוריתם רקורסיבי אקראי. Select שפותר את הבעיה בזמן ליניארי במקרה הגרוע (אבל הוא מסובך...) זהו אלגוריתם רקורסיבי דטרמיניסטי.. i פלט: האיבר ה i הכי קטן, כלומר: האיבר* במקום ה i בסדר הממוין. פתרונות לבעיה (אלגוריתמים הפותרים אותה): מיון והחזרת האיבר באינדקס i, בזמן.Ω(log) קיים פתרון בזמן ליניארי עבור: ולמעשה גם עבור i=k או Miimum(A) AA is rry. mi A[]. for i to legth[a]. if A[i] < mi. mi A[i]. retur A[mi] =i (מינימום) i= (מקסימום) i=k כאשר k קבוע. * איבר אוהאיבר? שאלה: כמה פעמים בממוצע מתבצעת שורה? תשובה: הסיכוי שהאיבר A[k] יהיה המינימום של A[..k] הוא k/ סכום התוחלות של מספר הכניסות לשורה הוא = H = Θ(log ) אמיר רובינשטיין 7. בעיית הבחירה

63 RdomSelect q הדגמה מחפשים את האיבר ה נניח שהציר שנבחר אקראית הוא. תוצאת החלוקה: מחפשים את האיבר ה בשמאל. נניח שהציר הוא. RdomSelect RdomSelect (A, p, r, i). if p = r. retur A[p]. q RdomPrtitio (A, p, r). k q p+. if i = k. retur A[q] 7. else if i < k. retur RdomSelect (A, p, q, i) 9. else retur RdomSelect (A, q+, r, i k) k q p+ q 7 7 האלגוריתם מבצע חלוקה (עם ציר שנבחר אקראית) של המערך. אם "יש מזל", ומספר האיברים k בחלק השמאלי, כולל הציר, הוא בדיוק i, אז סיימנו; תוצאת החלוקה: מחפשים את האיבר ה = בימין. נניח שהציר הוא x p x x x x x q >x >x r q 7 תוצאת החלוקה: עוצרים ומחזירים את. אחרת, אם i < k אז ממשיכים לחפש את האיבר ה i בצד שמאל; אחרת, ממשיכים לחפש את האיבר ה( i k ) בצד ימין. מקרה פרטי מציאת חציון שאלה: כיצד נמצא חציון של מערך בגודל בסיבוכיות זמן ליניארית בממוצע? T() = Θ() RdomSelect ניתוח זמנים מקרה טוב: חלוקה אחת ואחריה עוצרים RdomSelect(A,,, ) + מקרה גרוע: חלוקה ביחס : בכל שלב, והמשך הרקורסיה עם החלק הגדול. תשובה: נקרא ל T() = T() + Θ() = Θ( ) Θ() בספר הלימוד): (הוכחה ממוצע לסיכום, מצאנו לבעיית הבחירה פתרון ליניארי בממוצע, אך לא במקרה הגרוע. 7 אמיר רובינשטיין 7. בעיית הבחירה

64 A Select הרעיון מחלקים לחמישיות, ומוצאים חציון של כל חמישייה (למשל ע"י מיונה): B למערך: x את החציונים מעתיקים 7 ממציאי השיטה הוכיחו כי החציון של החציונים הללו (החציון של B) הוא איבר ציר טוב לחלוקת A. x הרעיון לשיפור הוצע בשנת 97, במאמר: האם אתם מכירים שיטה יעילה למציאת חציון? קריאהרקורסיביתל! Select ובדוגמהזו, ישלקרואל.Select(B,,,) Select M. Blum, R.W. Floyd, V. Prtt, R. Rivest d R. Trj, "Time bouds for selectio," J. Comput. System Sci. 7 (97). הרעיון: כדי לשפר את זמן הריצה, צריך לדאוג שהחלוקות יהיו מאוזנות יחסית. לא בהכרח ביחס :, אבל כפי שנראה, לכל הגרוע ביחס :7 בערך. נראה שיטה לבחור את איבר הציר באופן "חכם" יותר, שיבטיח זאת. נשתמש בגרסה שונה מעט של חלוקה, שמקבלת איבר ציר ומחלקת לפיו. נקרא לגרסה זו.PrtitioWithPivot רעיון בחירת הציר: שיטת חציון החציונים. חציון החציונים שמצאנו (מסומן x) הוא הציר לחלוקה של A. ההמשך כמו.RdomSelect 9 Select 7 9 A 77 B / = = הדגמה מחפשים את האיבר ה. המערך המקורי: מערך החציונים: מציאת חציון החציונים מתבצעת ישירות ע"י מיון (ובלי רקורסיה), כיוון שגודלו של B. Select Select (A, p, r, i). if p = r. retur A[p]. x ChoosePivot (A, p, r). q PrtitioWithPivot (A, p, r, x). k q p+. if i = k 7. retur A[q]. else if i < k 9. retur Select (A, p, q, i). else retur Select (A, q+, r, i k) האלגוריתם: A Select(A,,,) סביב :x= A של PrtitioWithPivot וממשיכים לחפש את האיבר ה בצד שמאל: ChoosePivot (A, p, r) נמצאאתהחציוןשלכלחמישייתאיבריםרצופים (ועודאוליהשאריתבסוף) למשלע"ימיוןכלקבוצה. נעתיקחציוניםאלולמערךעזר B (גודלו / ). נמצאונחזיראתהחציוןשל B (חציוןהחציונים). נעשהזאתע"יהפעלתSelect עלB... אמיר רובינשטיין 7. בעיית הבחירה

65 Select ניתוח זמנים Select ניתוח זמנים ניתוח זמנים במקרה הגרוע באופן דומה מראים שיש ב A לפחות.x > איברים / נניח לשם פשטות שכל האיברים שונים זה מזה. לצורך הבהירות נסדר את החמישיות באיור הבא לפי גודל החציון שלהן, משמאל לימין במילים אחרות, גם בחלוקה הגרועה ביותר, בחלק הקטן לפחות / איברים (כל חמישיה ממוינת מלמעלה למטה): ובחלק הגדול לכל היותר /7 + איברים. / או 7/ + x איברים < x בכל קבוצה 7/ + / ה כלומר הבחירה ה"חכמה" של x כחציון החציונים מבטיחה שהחלוקה הגרועה ביותר האפשרית היא ביחס של :7 בערך. "מחיר" ששילמנו מציאתו של x דורשת זמן: חלוקת המערך לחמישיות, מציאת חציונים, וקריאה רקורסיבית. בכל חמישייה שהחציון שלה גדול מהציר x יש בדיוק איברים < x. כמה חמישיות כאלו יש? מכיוון ש x הוא החציון של חציוני החמישיות, מחציתם < x. נוריד מזה את הקבוצה בעלת פחות מ איברים (אם ישנה), והחמישיה הכוללת את x עצמו. מכאן שיש ב A לפחות לפחות / / חמישיות עם חציון < x ( / / ) / איברים < x, כלומר כ % לפחות. Select סיבוכיות זיכרון Select ניתוח זמנים חישוב עלות מציאת חציון החציונים :(ChoosePivot) ומהי סיבוכיות הזיכרון הנוסף של?Select דרישות הזיכרון הנוסף של Select מתבטאות ב: מציאת חציון של כל חמישייה דורשת ( Θ( זמן (מדוע?). הקצאת מערכי החציונים סה"כ מציאת / חציונים דורשת אם כן ( Θ(זמן. עומק מחסנית הרקורסיה לאחר מכן ישנה קריאה רקורסיבית ל Select על מערך בגודל /. עומק מחסנית הרקורסיה הוא לוגריתמי (מדוע?) ולכן זניח אסימפטוטית לעומת הקצאת מערכי הקלט*. החציונים, שגודלם ליניארי בגודל נוסחת הנסיגה המתארת את סיבוכיות הזיכרון של Select עבור קלט בגודל היא אם כן: *שאלה כיצד אפשר לוותר על הקצאת מערכי החציונים? מה סיבוכיות הזיכרון הנוסף עם שיפור כזה? S() = mx{s( / ), S(7/ + )} + / אמיר רובינשטיין = S(7/ + ) + / S() =Θ() 7. בעיית הבחירה הנוסחה שמתארת את זמן הריצה הכולל של Select במקרה הגרוע היא אם כן: מציאתהחציונים+ חלוקה T() = T( / ) + T(7/ + ) + Θ() ניתן להוכיח בשיטת ההצבה ש T()=Θ() (פרטים בספר הלימוד, עמוד 9) ניתן גם לראות זאת ע"י הזנחת קבועים וערכי תקרה: T() = T(/) + T(7/) + Θ() α + β < כלומר כעת בידינו אלגוריתם ליניארי במקרה הגרוע לפתרון בעיית הבחירה.

66 תרגיל 9. מספר הלימוד כיצד ניתן לשפר את מיון מהיר, כך שזמן הריצה שלו על מערך בגודל יהיה Θ(log) במקרה הגרוע? מיון מהיר הדטרמיניסטי פתרון: בכל שלב שבו צריך לבחור איבר ציר לחלוקה, הוא ייבחר כחציון של תתהמערך הרלוונטי, באמצעות קריאה ל.Select T() = T(/) + Θ() = Θ(log) מקרה פרטי מציאת חציון שאלה: כיצד נמצא חציון של מערך בגודל בסיבוכיות זמן ליניארית? תשובה: נקרא ל + Select(A,,, ) הערה: אמנם סיבוכיות הזמן היא ליניארית, אבל הקבועים החבויים בה הם גדולים למדיי. לכן, מבחינה מעשית, לפעמים עדיף להשתמש ב,RdomSelect או אפילו למיין ולהחזיר את האיבר האמצעי. Select + Prtitio 7 שאלות חזרה תשובות לשאלות חזרה מינימום: ),.Select(A,, מקסימום: ).Select (A,,, מבחינה תיאורטית, זמן הריצה בשני המקרים הוא ליניארי ב. אבל כפי שראינו, ניתן למצוא מינימום ומקסימום גם ללא שימוש ב,Select ע"י מעבר פשוט על המערך. גם זה פתרן ליניארי, אבל עם קבועים קטנים בהרבה. לכן מבחינה מעשית הוא עדיף. עבור מערך בגודל קטן מספיק (למשל או קבוע אחר כלשהו), אפשר פשוט להחזיר את החציון שלו (ע"י מיון)... כיצד ניתן למצוא את המינימום של מערך באמצעות קריאה ל האם דרך זו יעילה מבחינה תיאורטית ומבחינה מעשית? עבור אילו גדלים של מערכים ChoosePivot במקרה זה??Select ואת המקסימום? ChoosePivot לא צריכה לקרוא שוב ל? Select מה עושה נסו לעקוב אחר מהלך הקריאות הרקורסיביות של Select על מערך A בגודל.... מערך החציונים B יהיה בגודל 7, ולכן מציאת החציון שלו תגרור קריאה נוספת ל.Select. החציון x של C יוחזר ללא וייווצר מערך חציונים נוסף C בגודל B יחולק לחמישיות, קריאות נוספות ל,Select וישמש לחלוקה של B. כעת החיפוש אחר החציון של B ימשיך בחלק שמאל או ימין של החלוקה (או במקרה הטוב יסתיים מייד). רק לאחר מציאת החציון i נמשיך לחפש את האיבר ה A ואחרי חלוקת A, הוא יוחזר וישמש לחלוקה של B של x של A בצד שמאל או ימין של החלוקה (או במקרה הטוב נסיים מייד).. את PrtitioWithPivot אפשר לממש ע"י קריאה ל Prtitio ה"רגילה". כיצד?.. מחליפים בין x לבין האיבר במקום האחרון, ואז פשוט קוראים ל.Prtitio 9 אמיר רובינשטיין 7. בעיית הבחירה

67 תרגילים מומלצים מהספר פרק בעיה 9 בעיה 9 א' ג ' תרגילים פתרון ניסיון ראשון מיון כלשהו,Ω(log) ומעבר על המערך כדי לבדוק האם יש / איברים רצופים זהים.Θ() סה"כ: Ω(log) (החסם ההדוק תלוי בבחירת המיון). ניסיון שני נשים לב שאם קיים איבר רוב, אז הוא החציון. נמצא בעזרת SELECT את החציון, ואז נעבור על המערך ונספור כמה פעמים מופיע בו החציון. אם הוא מופיע יותר מ / פעמים נחזיר אותו. אחרת נודיע שאין איבר רוב. סיבוכיות: Θ() תרגילים נוספים.. נגדיר איבר רוב במערך בגודל כאיבר שמופיע יותר מ / פעמים. הציעו אלגוריתם, שבהינתן מערך בגודל מוצא איבר רוב, אם קיים כזה, ואחרת מודיע שלא קיים איבר רוב. נתון מערך A בגודל של איברים כלשהם. א. הראו אלגוריתם להדפסת האיברים הקטנים במערך בסדר ממוין, בזמן ליניארי במקרה הגרוע. נמקו מדוע לא ניתן לפתור את הבעיה בזמן.o() ב. הוכיחו כי לא ניתן להדפיס את.o(log) האיברים הקטנים במערך בסדר ממוין, בזמן / נתון מערך ובו m מספרים שונים זה מזה כלשהם.. הציעו מבנה נתונים לביצוע הפעולות הבאות, תוך עמידה בדרישות סיבוכיות הזמן:.O(m) אתחול מבנה הנתונים ב Iit מספר האיברים במבנה בעת ביצוע הפעולה. הוספת x למבנה ב,O(log) Isert(x) ()O. הדפסת ערך החציון ב FidMid.O(log) הוצאת החציון מהמבנה ב DelMid אמיר רובינשטיין 7. בעיית הבחירה תארו תחילה מה מכיל המימוש שלכם, ואח"כ הסבירו כיצד מתבצעת כל פעולה ומדוע היא עומדת בדרישות הסיבוכיות.

68 ערימת מקסימום S של / האיברים הקטנים 9 S ערימת מינימום L של / האיברים הגדולים L פתרון מבנה הנתונים: פתרון א. נפעיל את Select למציאת האיבר ה בגודלו: כעת האיברים הקטנים של A ממוקמים בשמאל המערך. נמיין אותם בעזרת מיון בועות למשל. Select(A,,, ) סיבוכיות הזמן היא: Θ( ) + Θ( ) = Θ( ) חייבים לעבור על כל איברי המערך לכן לא ניתן לפתור את הבעיה בזמן.o() מימוש הפעולות: Iit נפעיל את Select למציאת החציון (כולל חלוקת האיברים סביבו). הנ"ל משני חצאי המערך, בעזרת שתי קריאות ל.BuildHep זמן: =Θ(m).Θ(m) + Θ(m/) FidMid נחזיר את ערך השורש של ()Θ. זמן: []S). את (כלומר S Isert(x) DelMid ב. נניח בשלילה שניתן לעשות זאת. כלומר קיים אלגוריתם, נקרא לו,Alg שמדפיס את עשירית האיברים הקטנים של מערך נתון בסדר ממוין. אז ניתן גם למיין כל מערך מאורך בזמן o(log) (וזו כמובן סתירה לחסם התחתון למיון): כעת, נבנה את שתי הערימות אם []S x, נכניס אותו ל S, אחרת ל L. כעת: אם L = S נמחק (ExtrctMx) את השורש של S ונכניס (HepIsert) אותו ל L. אחרת אם + L = S נמחק את השורש של L ונכניס אותו ל S. נמחק את השורש של S. אם + L = S נפעל כמתואר לעיל. זמן: שתי הפעולות האחרונות במקרה הגרוע: Θ(log) Θ(log(/)) = בהינתן מערך הקלט, נוסיף לו מימין 9 פעמים "אינסוף" (מעשית, אפשר למצוא תחילה את המקסימום, ולהוסיף 9 איברים ששווים למקסימום ועוד אחד). שלב זה רץ בזמן.Θ() כעת נקרא לאלגוריתם Alg על המערך ה"מוגדל", ונקבל את איברי המערך המקורי ממוינים. שימו לב שלא מספיק להראות שהדרך מסעיף א' לא עובדת כאן. אמיר רובינשטיין 7. בעיית הבחירה

69 בתוכנית מבני נתונים ומבוא לאלגוריתמים פרק בספרהלימוד נכיראתה ADT "מילון" נכיראתמבנההנתונים "עץחיפושבינארי" למימושמילון, ועודכמהתכונותואלגוריתמיםשימושייםבעצים נושא עצי חיפוש בינאריים Biry serch trees אמיר רובינשטיין מבני נתונים למילון במימוששלמילוןבכלאחדממבניהנתוניםשלמדנועדכה, לפחותאחתמהפעולות תתבצע בזמן ליניארי במספר האיברים. מילון הוא ADT המוגדר ע"י פעולות הבאות: מילון (dictiory) x) Isert(S, הכנסתהאיבראליומצביע למבנהS x x) Delete(S, מחיקתהאיבראליומצביע S מהמבנה x S והחזרתו, אםקייםב k חיפושאיברשמפתחו Serch(S, k) נראהכעתמימושאפשרילמילון, באמצעותמבנההנתונים עץחיפושבינארי..Θ(log) הפעולות יבוצעו בסיבוכיות של כל בממוצע בשיעורהבאנראהשיכלולשלעציחיפושבינאריים עצי AVL שמבטיחסיבוכיות של ( Θ(logגםבמקרההגרוע. ולפעמיםגםפעולותחיפושנוספות, כמו: החזרתאיברבעלמפתח מינימלי Miimum(S) Mximum(S) Successor(S, x) החזרת איבר בעל המפתחמקסימלי החזרת עוקב של x ב S (איברבעלמפתחמינימלישגדולמזהשלx ) (איברבעלמפתחמקסימלישקטןמזהשלx ) S ב x החזרת קודם של Predecessor(S, (x הפעולות האחרונות מניחות שיש סדר על מפתחות האיברים. למילוןשימושיםרביםומגוונים (למשל?) אמיר רובינשטיין. עצי חיפוש בינאריים

70 עץ חיפוש בינארי גובה של עץ בינארי נסמןאתמספרהצמתיםבעץבינאריב, ואתגובהוב h. מהוהגובה המינימלי ומהוהגובה המקסימלי שלעץבינארי, כתלותב? b c d e f g h תזכורת מונחים תזכורת צומת קשת h = = Θ() שורש בןהשמאלי, בןימני, אב, אבקדמון, צאצא מקסימלי: שרשרתאו "זיגזג" שמאלי, תתעץ ימני תתעץ עלה, צומתפנימי h = log = Θ(log) עומק של צומת גובה של צומת, של עץ מימוש במערך, מימוש באמצעות רשומות עם מצביעים: מבנהשלרשומה (צומת): מינימלי: עץ (כמעט) שלם pret key + ifo left right עץ חיפוש בינארי עץחיפושבינארי tree) (biry serch הואעץבינאריעםהתכונההבאה: עץ חיפוש בינארי בהינתןקבוצתמפתחות, האםקייםעץחיפושבינארי יחיד המכילמפתחותאלו? בהינתן צומת עם מפתח צמתיםבתתהעץהימנישלובעלימפתחות צמתיםבתתהעץהשמאלישלובעלימפתחות.k k 9 :k עוד? 7 7 בהינתןקבוצתמפתחות, האםקייםעץחיפושבינארי יחיד המכילמפתחותאלו? אמיר רובינשטיין. עצי חיפוש בינאריים

71 מספרי קטלן umbers) (Ctl מספרי קטלן מייצגים גם אתמספר הדרכים השונות לשים סוגריים על לדוגמה, כאשר = יש דרכיםשונותלשיםסוגרייםעל גורמים: + גורמיםשונים. ((b)c)d ((bc))d (b)(cd) ((bc)d) (b(cd)) ישנהפונקציה חח"ע ועלביןקבוצתהביטוייםהנ"ללביןקבוצתהעציםהבינארייםבעלי צמתים: כמהעציםבינארייםשוניםבעלי צמתיםקיימים? נסמןאתהתשובהב. b נוסחהרקורסיביתעבור :b עבור = : ישרקעץאחדללאצמתים העץהריק. לכן, =.b עבור : העץמורכבמצומתאחדבשורש,,(k =,,..., ) צמתיםבתתעץהשמאלי k בתתעץ הימני. צמתים k ו לכן: (תמונהמתוךהערך "מספרקטלן" בויקיפדיה) k k צמתים צמתים 9 b = + = π / ( + O( / ) ) b = k= b b k k הפיתרוןלנוסחה (לאבמסגרתהכליםשנלמדובקורסזה):.(Ctl umbers) נקראים מספריקטלן b חיפוש חיפוש TreeSerch(x, k). while x il d k key[x]. if k < key[x]. x left[x]. else x right[x]. retur x ניתןגםלכתובגרסהאיטרטיבית: סיבוכיותזמן: Θ(h) סיבוכיותזיכרוןנוסף: ()Θ TreeSerch(x, k). if x = il or k = key[x]. retur x. if k < key[x]. retur TreeSerch(left[x], k). else retur TreeSerch(right[x], k) כיצד נחפש מפתח בעץ חיפוש בינארי? בקריאה הראשונה x הואשורשהעץ. מהומסלולהחיפוששל בעץהבא? שאלה: מהי סיבוכיות הזמן במקרה הטוב? מה סיבוכיות הזמן והזיכרון הנוסף? סיבוכיותזמן: Θ(h) סיבוכיותזיכרוןנוסף: Θ(h) אמיר רובינשטיין. עצי חיפוש בינאריים

72 שאילתות נוספות מינימום ומקסימום שאילתות נוספות עוקב וקודם החזרתהאיברהעוקבלאיברנתון x מקרה : ל x ישבןימני העוקבהואהמינימוםשל התתעץ הימנישל x מקרה : ל x איןבןימני ישנו) הואהצומת העוקב ) (אם הראשוןבמעלההדרךאלהשורש שעוליםאליומבןשמאלי מימושהחזרתהקודם סימטרי. סיבוכיותזמן:.Θ(h) x מקרה מקרה y x TreeSuccessor(x). if right[x] il. retur TreeMi(right[x]). y pret[x]. while y il d x = right[y]. x y. y pret[y] 7. retur y חיפוש משתייך לסוג של פעולות הנקראות שאילתות. בפעולות אלו אין שינוי של מבנה הנתונים, אלא רק שליפת מידע ממנו. שאילתות נוספות: מקרה מקרה החזרת איבר בעל מפתח מינימלי: TreeMi(x). while left[x] il. x left[x]. retur x סימטרי) ) (החזרתהמקסימום סיבוכיותזמן: Θ(h) ובמקרה הטוב? TreeIsert(T, z). y il. x root[t]. while x il. y x. if key[z] < key[x]. x left[x] 7. else x right[x]. pret[z] y 9. if y = il. root[t] z. else if key[z] < key[y]. left[y] z. else right[y] z אמיר רובינשטיין האלגוריתם: הכנסה הכנסה מחפשיםאתמקוםההכנסההמתאים (בדומהלחיפושרגיל) ו"תולים" אתהאיברהחדשכעלה. הדגמה. עצי חיפוש בינאריים הכנסה רוציםלהכניסצומתחדש z בעלמפתח key[z] לעץT. מניחיםש z מכילשדותמצביעיםלבןשמאליוימניולאב. שורות 7 : מחפשיםאב y ש"מוכןלאמץ" אתz שתישמר תכונת עץ החיפוש הבינארי) (כך שורות : מציביםאת z כבן (שמאליאוימני) שלy שורות 9 : טיפולבמקרההקצהש z הוכנסלעץריק סיבוכיותזמן:.Θ(h) Isert סוגאחרשלפעולותהןפעולותדינמיות, המשנותאתמבנההנתונים (כמוהכנסה, מחיקה, שינוי). הכנסה לעץ ריק: root = il Isert root

73 מחיקה מחיקה רוצים למחוק מהעץ T צומתקיים, ונתוןמצביע מאיפה יש לנו מצביע לצומת הזה? z לצומתזה. הדגמה Delete z מפרידיםלמקרים: מקרה : z עלה מציביםil במצביעמאביושל z מקרה z z Delete מקרה : ל z ישבןיחיד נבצע "מעקף" מאביושל z לבנו מקרה : ל z יששניבנים יהיy העוקבשלz. נעתיקאתתכולת y אלz, ונמשיךעםמחיקת.* y מקרה 7 z z y y y * מחיקת y שייכתלמקרים או (מדוע?) TreeDelete(T, z). if left[z] = il or right[z] = il. the y z. else y TreeSuccessor(z). if left[y] il. the x left[y]. else x right[y] 7. if x il. the p[x] p[y] 9. if p[y] = il. the root[t] x. else if y = left[p[y]]. the left[p[y]] x. else right[p[y]] x.if y z. the key[z] key[y]. copy y s stellite dt... 7.retur y for recyclig האלגוריתם: בשורות מציביםב y אתהצומתשיוסר "פיזית" מהעץ: z עצמו, אםישלולכלהיותרבןאחד העוקבשל, z אםישלו בנים סיבוכיותזמן:.Θ(h) מחיקה 9 הדגמה מקרה מחיקה z z Delete y Delete y y אמיר רובינשטיין. עצי חיפוש בינאריים

74 סיורים בעצים לעיתים אנו מעוניינים לעבור באופן שיטתי על כל צמתיו של עץ בינארי למטרה כלשהי. פעולהכזאתנקראת סיור בעץאוסריקהשלהעץ. תרגיל סיורים בעצים רישמואתסדרהביקורבצמתיםבכלאחדמהסיורים. סיורpreorder : נכיר שיטות לסריקת עץ בינארי, הנבדלות זו מזו בסדר בו נסרקים הצמתים. סיורiorder : PreorderTreeWlk(x). if x il. Visit(x). PreorderTreeWlk(left[x]). PreorderTreeWlk(right[x]) סיורתחילי (preorder) מבקריםבשורש מסיירים רקורסיבית בתת העץ השמאלי מסיירים רקורסיבית בתת העץ הימני סיורתוכי (iorder) הביקור בשורש נעשה בין הסיור בתת העץ השמאלי שלו לבין הסיור בתת העץ הימני שלו סיורpostorder : סיורסופי (postorder) הביקור בשורש נעשה אחרי הסיורים בתתי העצים השמאלי והימני שלו טענה: סיורiorder בעץחיפושבינארי, שבו (של מפתחות העץ). סיורים בעצים Visit מדפיסה את מפתח הצומת, מניבה סדרה ממוינת סיבוכיות זמן סיורים בעצים טענה: כלאחדמשלושתהסיוריםהנ"לרץעלעץבעל צמתיםבזמן.Θ() אינטואיציה: עובריםדרךכלצומת פעמים: בדרךלבנוהשמאלי, בדרךלבנוהימני, ובדרךלאביו. T() = T(/) + = Θ() הוכחה: הוכחהשגויה: נוסחתהנסיגההמתאימההיא: מה הטעות? באינדוקציהעל מספרהצמתיםבעץ. הוכחה: נסמן את מספר הצמתים בתתהעץ השמאלי של השורש ב נניחשביקורבצומתדורש < d פעולות. נוכיח בשיטת ההצבה כי בסיס: צעד: T() =.k T() = T(k) + T(k) + d T() = (d+) + = :T() = (d+) + T() = (d+)k + + (d+)(k) + +d = (d+) + בסיס: עבורעץעםצומתאחדהטענהבודאינכונה. צעד: עבורעץעםיותרמצומתאחד, יודפסוקודםכלהצמתיםבתתהעץהשמאלישלהשורש, אח"כהשורשורקלאחרמכןכלהצמתיםבתתהעץהימנישלו. לפיהנחתהאינדוקציה, הסיורבכלאחדמתתיהעציםמניבסדרהממוינת, ולפיתכונתעץהחיפושהסדרהכולה ממוינת. אמיר רובינשטיין. עצי חיפוש בינאריים

75 תרגיל ב. סיורים בעצים א. רשימתהמפתחותהבאה (משמאללימין) התקבלהע"יסריקהתחילית (preorder) שלעץ חיפוש בינארי: שחזרו את העץ המקורי. האם ניתן לשחזר עץ חיפוש בינארי בהינתן סריקה 7?iorder?postorder סיבוכיות זיכרון נוסף סיוריםבעצים זיכרוןנוסף שאלה: כמהזיכרוןנוסףדורשיםהסיוריםבמקרההגרוע? מהוהמקרההגרוע? תשובה: עבורשרשרת (או "זיגזג") עומקהרקורסיההוא.Θ() שיפור: אפשרגםלממשאתהסיוריםעם ()O זיכרוןנוסף (כמובןללארקורסיה). הרעיון:.y והצומתהקודםבוביקרנו,x הצומתבואנומבקרים נשמורבכלרגעשניצמתים: בצורה כזו אנו יודעים בכל רגע לאן עלינו להמשיך: x y y x x y או y x x pret[x] y x x right[x] y x x left[x] y x המשך הסיור: כמובןישלטפלבמקריהקצהכנדרש (למשלכאשר x אוy שווים.(Nil postfix חישוב גובה שימושים של סיורים ביטויי שימושים של סיורים כמובן, את כל הסיורים שראינו ניתן לבצע על עצים בינאריים שאינם עצי חיפוש. דוגמהנחמדהושימושיתלכךהיאחישובביטוייםבכתיב.postfix נסתכל על הביטוי הבא ועל העץ הבינארי שמייצג את המבנה שלו: * + + (+)*((/)+()) כיצד ניתן לחשב גובה של עץ בינארי? (גובהשלעץריקמוגדרלהיות ) height(x). if x = il. retur. else retur + mx{height(left[x]), height(right[x])} / סיורiorder בעץ (כתיבifix ): + * / + סיבוכיות? הקריאהאינהיחידה חייביםסוגריים כתיבpostfix : * + + / קריאהיחידה איןצורךבסוגריים (כנ"לבכתיב (prefix ביטוייpostfix נקראיםכתיב פולניהפוך ע"ששם הלוגיקאי הפולני Łuksievicz בביטויpostfix איןצורךבסוגריים: לכלביטוי postfix ישלכלהיותרפרוקיחיד! 7 אמיר רובינשטיין. עצי חיפוש בינאריים

76 גובה ממוצע ראינוקודםשהגובה המקסימלי שלעץבינאריהוא, ואילוהגובה המינימלי הוא שאלה: רוציםלהכניסלעץחיפושבינאריאתהמפתחות,,. כמהסדריהכנסהשוניםאפשריים? אילו מהם יניבו עץ בגובהמקסימלי? אילו מהם יניבו עץ בגובהמינימלי?. log <,,> <,,> <,,> d <,,> <,,> <,,> HPc progrmmble scietific, 9 s. Cost: $ שימושיםשלסיורים ביטויי postfix האלגוריתםלחישובביטויי postfix. התחלעםמחסניתריקה.. עבורעלהביטוימשמאללימין:. אםהאיברהבאהואאופרנד הכנסאותולמחסנית.. אםהואפעולה הפעלאתהפעולהעלשניהאיברים שבראשהמחסניתוהכנסאתהתוצאהלמחסנית. גובהממוצע הואממוצעהגבהיםשלהעציםהמתקבליםבסדריההכנסההשונים (בדוגמה:.( / 9 + / + * :postfix... משפט: גובה ממוצע גובהממוצעשלעץחיפושבינאריבעל צמתיםהוא,Θ(log) כאשרהממוצעהואעלפניכל סדריההכנסההשונים (הכנסותבלבד, ללאמחיקותאופעולותאחרות). הוכחהבספרהלימוד, עמודים. שאלות חזרה בקרובקישורהבא, המציעסימולציהמצוינתשלעציחיפושבינאריים (ועודסוגיםאחריםשל עציחיפוש): היעזרובסימולציהכדילהביןאתהאלגוריתמיםהשוניםעלעץחיפושבינארי. אתריהדגמותנוספים, שעשוייםלסייע: א. (ישלבחור Serch Trees בתפריט) ב. (ישלבטלאתהסימון לידAVL ). ציירואתכלהעציםהאפשרייםהמתקבליםע"יהכנסתהאיברים,,, לעץחיפושבינארי. הציעו אלגוריתם רקורסיבי לחישוב מספר הצמתים בעץ בינארי. מהי סיבוכיות הזמן והמקום שלו? תוחלתהגובההיאלוגריתמיתבמספר כאשרסדרהכנסתהאיבריםהואאקראי, ניסוחאחר: הצמתים. אמיר רובינשטיין. עצי חיפוש בינאריים

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

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ משוואות רקורסיביות הגדרה: רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים למשל: T = Θ 1 if = 1 T + Θ if > 1 יונתן יניב, דוד וייץ 1 דוגמא נסתכל על האלגוריתם הבא למציאת

Διαβάστε περισσότερα

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur פתרון תרגיל --- 5 מרחבים וקטורים דוגמאות למרחבים וקטורים שונים מושגים בסיסיים: תת מרחב צירוף לינארי x+ y+ z = : R ) בכל סעיף בדקו האם הוא תת מרחב של א } = z = {( x y z) R x+ y+ הוא אוסף הפתרונות של המערכת

Διαβάστε περισσότερα

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט. פרק סיבוכיות פרק סיבוכיות המושג יעילות מהו? במדעי המחשב היעילות נמדדת בעזרת מדדי סיבוכיות, החשובים שבהם: של אלגוריתמים יעילותם תוכן הפרק: יעילות מהי (זיכרון וזמן, זמן ריצה T( של אלגוריתם מהו, מהם case,

Διαβάστε περισσότερα

מבני נתונים ויעילות אלגוריתמים

מבני נתונים ויעילות אלגוריתמים מבני נתונים ויעילות אלגוריתמים (8..05). טענה אודות סדר גודל. log טענה: מתקיים Θ(log) (!) = הוכחה: ברור שמתקיים: 3 4... 4 4 4... 43 פעמים במילים אחרות:! נוציא לוגריתם משני האגפים: log(!) log( ) log(a b

Διαβάστε περισσότερα

חורף תש''ע פתרון בחינה סופית מועד א'

חורף תש''ע פתרון בחינה סופית מועד א' מד''ח 4 - חורף תש''ע פתרון בחינה סופית מועד א' ( u) u u u < < שאלה : נתונה המד''ח הבאה: א) ב) ג) לכל אחד מן התנאים המצורפים בדקו האם קיים פתרון יחיד אינסוף פתרונות או אף פתרון אם קיים פתרון אחד או יותר

Διαβάστε περισσότερα

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( ) פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד a d U c M ( יהי b (R) a b e ל (R M ( (אין צורך להוכיח). מצאו קבוצה פורשת ל. U בדקו ש - U מהווה תת מרחב ש a d U M (R) Sp,,, c a e

Διαβάστε περισσότερα

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p; מבני נתונים פתרונות לסט שאלות דומה לשאלות בנושאים () זמני ריצה של פונקציות רקורסיביות () מיונים השאלות פתרו את נוסחאות הנסיגה בסעיפים א-ג על ידי הצבה חוזרת T() כאשר = T() = T( ) + log T() = T() כאשר =

Διαβάστε περισσότερα

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים מבוא: קבוצות מיוחדות של מספרים ממשיים קבוצות של מספרים ממשיים צעד ראשון להצטיינות קבוצה היא אוסף של עצמים הנקראים האיברים של הקבוצה אנו נתמקד בקבוצות של מספרים ממשיים בדרך כלל מסמנים את הקבוצה באות גדולה

Διαβάστε περισσότερα

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשעד פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. לכל אחת מן הפונקציות הבאות, קבעו אם היא חח"ע ואם היא על (הקבוצה המתאימה) (א) 3} {1, 2, 3} {1, 2, : f כאשר 1 } 1, 3, 3, 3, { 2, = f לא חח"ע: לדוגמה

Διαβάστε περισσότερα

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם תזכורת: פולינום ממעלה או מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה p f ( m i ) = p m1 m5 תרגיל: נתון עבור x] f ( x) Z[ ראשוני שקיימים 5 מספרים שלמים שונים שעבורם p x f ( x ) f ( ) = נניח בשלילה ש הוא

Διαβάστε περισσότερα

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) דף פתרונות 6 נושא: תחשיב הפסוקים: הפונקציה,val גרירה לוגית, שקילות לוגית 1. כיתבו טבלאות אמת לפסוקים הבאים: (ג) r)).((p q) r) ((p r) (q p q r (p

Διαβάστε περισσότερα

Logic and Set Theory for Comp. Sci.

Logic and Set Theory for Comp. Sci. 234293 - Logic and Set Theory for Comp. Sci. Spring 2008 Moed A Final [partial] solution Slava Koyfman, 2009. 1 שאלה 1 לא נכון. דוגמא נגדית מפורשת: יהיו } 2,(p 1 p 2 ) (p 2 p 1 ).Σ 2 = {p 2 p 1 },Σ 1 =

Διαβάστε περισσότερα

אסימפטוטיים תוכנית הקורס עצי AVL עצי 2-3 עצי דרגות סיבוכיות משוערכת מיון מיון שימושים: גרפים איסוף אשפה

אסימפטוטיים תוכנית הקורס עצי AVL עצי 2-3 עצי דרגות סיבוכיות משוערכת מיון מיון שימושים: גרפים איסוף אשפה תוכנית הקורס cs, Technion 2..3.4 מבני נתונים בסיסיים וסימונים אסימפטוטיים מערכים ורשימות מקושרות עצים ועצי חיפוש עצי AVL עצי 2-3 עצי דרגות.5 רשימות דילוגים סיבוכיות משוערכת.6.7.8.9.0..3.4 מטרת הקורס: מבני

Διαβάστε περισσότερα

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה מיון (Sorting) void BubbleSort(int* A, int n){ for (i = ; i < n-; i++) for (j = n-; j >= i; j--) if ( a[j] > a[j+]) swap(&a[j], &a[j+]); מערך בן מספרים. קלט: מערך ובו המספרים מאוחסנים בסדר עולה (או יורד).

Διαβάστε περισσότερα

תרגיל 13 משפטי רול ולגראנז הערות

תרגיל 13 משפטי רול ולגראנז הערות Mthemtics, Summer 20 / Exercise 3 Notes תרגיל 3 משפטי רול ולגראנז הערות. האם קיים פתרון למשוואה + x e x = בקרן )?(0, (רמז: ביחרו x,f (x) = e x הניחו שיש פתרון בקרן, השתמשו במשפט רול והגיעו לסתירה!) פתרון

Διαβάστε περισσότερα

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשעב זהויות טריגונומטריות תרגול חזרה זהויות טריגונומטריות si π α) si α π α) α si π π ), Z si α π α) t α cot π α) t α si α cot α α α si α si α + α siα ± β) si α β ± α si β α ± β) α β si α si β si α si α α α α si α si α α α + α si

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשעו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים: לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( 2016 2015 )............................................................................................................. חלק ראשון: שאלות שאינן להגשה.1

Διαβάστε περισσότερα

תרגול מס' 6 פתרון מערכת משוואות ליניארית

תרגול מס' 6 פתרון מערכת משוואות ליניארית אנליזה נומרית 0211 סתיו - תרגול מס' 6 פתרון מערכת משוואות ליניארית נרצה לפתור את מערכת המשוואות יהי פתרון מקורב של נגדיר את השארית: ואת השגיאה: שאלה 1: נתונה מערכת המשוואות הבאה: הערך את השגיאה היחסית

Διαβάστε περισσότερα

תרגול פעולות מומצאות 3

תרגול פעולות מומצאות 3 תרגול פעולות מומצאות. ^ = ^ הפעולה החשבונית סמן את הביטוי הגדול ביותר:. ^ ^ ^ π ^ הפעולה החשבונית c) #(,, מחשבת את ממוצע המספרים בסוגריים.. מהי תוצאת הפעולה (.7,.0,.)#....0 הפעולה החשבונית משמשת חנות גדולה

Διαβάστε περισσότερα

השאלות..h(k) = k mod m

השאלות..h(k) = k mod m מבני נתונים פתרונות לסט שאלות דומה לשאלות מתרגיל 5 השאלות 2. נתונה טבלת ערבול שבה התנגשויות נפתרות בשיטת.Open Addressing הכניסו לטבלה את המפתחות הבאים: 59 88, 17, 28, 15, 4, 31, 22, 10, (מימין לשמאל),

Διαβάστε περισσότερα

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות 1. מצאו צורה דיסיונקטיבית נורמלית קנונית לפסוקים הבאים: (ג)

Διαβάστε περισσότερα

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t. תכנון אלגוריתמים 2016 עבודה 1 פתרון שאלה 1 נזכר כי בגרף (E G, =,V) עבור שני קודקודים d(u, (v,u, v הוא אורך מסלול קצר ביותר מ u ל v. אם אין מסלול מ u ל.d(u, v) =,v נתונות שתי בעיות. בעיה א' מופע: גרף מכוון

Διαβάστε περισσότερα

תורת הגרפים - סימונים

תורת הגרפים - סימונים תורת הגרפים - סימונים.n = V,m = E בהינתן גרף,G = V,E נסמן: בתוך סימוני ה O,o,Ω,ω,Θ נרשה לעצמנו אף להיפטר מהערך המוחלט.. E V,O V + E כלומר, O V + E נכתוב במקום אם כי בכל מקרה אחר נכתוב או קשת של גרף לא

Διαβάστε περισσότερα

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

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

Διαβάστε περισσότερα

ל הזכויות שמורות לדפנה וסטרייך

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

Διαβάστε περισσότερα

gcd 24,15 = 3 3 =

gcd 24,15 = 3 3 = מחלק משותף מקסימאלי משפט אם gcd a, b = g Z אז קיימים x, y שלמים כך ש.g = xa + yb במלים אחרות, אם ה כך ש.gcd a, b = xa + yb gcd,a b של שני משתנים הוא מספר שלם, אז קיימים שני מקדמים שלמים כאלה gcd 4,15 =

Διαβάστε περισσότερα

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים

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

Διαβάστε περισσότερα

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשסו מס' סטודנט: TECHNION ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב מבני נתונים 234218 1 מבחן מועד ב ' סמסטר אביב תשס"ו מרצה: אהוד ריבלין מתרגלים: איתן

Διαβάστε περισσότερα

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור הרצאה מס' 1. תורת הקבוצות. מושגי יסוד בתורת הקבוצות.. 1.1 הקבוצה ואיברי הקבוצות. המושג קבוצה הוא מושג בסיסי במתמטיקה. אין מושגים בסיסים יותר, אשר באמצעותם הגדרתו מתאפשרת. הניסיון והאינטואיציה עוזרים להבין

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשעו (2016) לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)............................................................................................................. חלק ראשון: שאלות שאינן להגשה 1. עבור

Διαβάστε περισσότερα

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m Observabiliy, Conrollabiliy תרגול 6 אובזרווביליות אם בכל רגע ניתן לשחזר את ( (ומכאן גם את המצב לאורך זמן, מתוך ידיעת הכניסה והיציאה עד לרגע, וזה עבור כל צמד כניסה יציאה, אז המערכת אובזרוובילית. קונטרולביליות

Διαβάστε περισσότερα

ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי

ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי ננסה להשתמש בכך שהפונקציה היא רקורסיבית על מנת לרשום גם עבור הסיבוכיות ביטוי רקורסיבי. factorial() 3 מתחילים מכתיבת ביטוי לא מפורש ל-( T( ביטוי רקורסיבי

Διαβάστε περισσότερα

אלגברה ליניארית (1) - תרגיל 6

אלגברה ליניארית (1) - תרגיל 6 אלגברה ליניארית (1) - תרגיל 6 התרגיל להגשה עד יום חמישי (12.12.14) בשעה 16:00 בתא המתאים בבניין מתמטיקה. נא לא לשכוח פתקית סימון. 1. עבור כל אחד מתת המרחבים הבאים, מצאו בסיס ואת המימד: (א) 3)} (0, 6, 3,,

Διαβάστε περισσότερα

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx דפי נוסחאות I גבולות נאמר כי כך שלכל δ קיים > ε לכל > lim ( ) L המקיים ( ) מתקיים L < ε הגדרת הגבול : < < δ lim ( ) lim ורק ( ) משפט הכריך (סנדוויץ') : תהיינה ( ( ( )g ( )h פונקציות המוגדרות בסביבה נקובה

Διαβάστε περισσότερα

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד. חידה לחימום ( M ש- N > (כך מספרים טבעיים Mו- N שappleי appleתוappleים בעלי אותה הזוגיות (שappleיהם זוגיים או שappleיהם אי - זוגיים). המספרים הטבעיים מ- Mעד Nמסודרים בשורה, ושappleי שחקappleים משחקים במשחק.

Διαβάστε περισσότερα

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin( א. s in(0 c os(0 s in(60 c os(0 s in(0 c os(0 s in(0 c os(0 s in(0 0 s in(70 מתאים לזהות של cos(θsin(φ : s in(θ φ s in(θcos(φ sin ( π cot ( π cos ( 4πtan ( 4π sin ( π cos ( π sin ( π cos ( 4π sin ( 4π

Διαβάστε περισσότερα

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

( )( ) ( ) f : B C היא פונקציה חחע ועל מכיוון שהיא מוגדרת עי. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חחע אז ועל פי הגדרת הרצאה 7 יהיו :, : C פונקציות, אז : C חח"ע ו חח"ע,אז א אם על ו על,אז ב אם ( על פי הגדרת ההרכבה )( x ) = ( )( x x, כךש ) x א יהיו = ( x ) x חח"ע נקבל ש מכיוון ש חח"ע נקבל ש מכיוון ש ( b) = c כך ש b ( ) (

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 5

מתמטיקה בדידה תרגול מס' 5 מתמטיקה בדידה תרגול מס' 5 נושאי התרגול: פונקציות 1 פונקציות הגדרה 1.1 פונקציה f מ A (התחום) ל B (הטווח) היא קבוצה חלקית של A B המקיימת שלכל a A קיים b B יחיד כך ש. a, b f a A.f (a) = ιb B. a, b f או, בסימון

Διαβάστε περισσότερα

שאלה 1 V AB פתרון AB 30 R3 20 R

שאלה 1 V AB פתרון AB 30 R3 20 R תרגילים בתורת החשמל כתה יג שאלה א. חשב את המתח AB לפי משפט מילמן. חשב את הזרם בכל נגד לפי המתח שקיבלת בסעיף א. A 60 0 8 0 0.A B 8 60 0 0. AB 5. v 60 AB 0 0 ( 5.) 0.55A 60 א. פתרון 0 AB 0 ( 5.) 0 0.776A

Διαβάστε περισσότερα

פרק 13 רקורסיה רקורסיה רקורסיה רקורסיות פשוטות: חישוב עצרת. תמונת המחסנית ב-() factorial רקורסיות פשוטות: פיבונאצ'י

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

Διαβάστε περισσότερα

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS כלליים שיטות חיפוש בבגרפים שיטה 1: חיפוש לרוחב S (readth irst Search) זמן: ) Θ( V + הרעיון: שימוש בתור.O שיטה 2: חיפוש לעומק S (epth irst Search) Θ( V + ) יהי =(V,) גרף כלשהו, V הוא צומת התחלת החיפוש.

Διαβάστε περισσότερα

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1 1 טורים כלליים 1. 1 התכנסות בהחלט מתכנס. מתכנס בהחלט אם n a הגדרה.1 אומרים שהטור a n משפט 1. טור מתכנס בהחלט הוא מתכנס. הוכחה. נוכיח עם קריטריון קושי. יהי אפסילון גדול מ- 0, אז אנחנו יודעים ש- n N n>m>n

Διαβάστε περισσότερα

מבני נתונים ויעילות אלגוריתמים

מבני נתונים ויעילות אלגוריתמים חידה לחימום בסל מקש יש צמר. כדורי 00 שני שחקנים משחקים בתורות: כל שחקן, בתורו, צריך להוציא כמות כלשהי של כדורי צמר מהסל לפחות כדור אחד, אך לא יותר ממחצית מכמות כדורי הצמר שבסל. מי שלא יכול לעשות מהלך (מתי

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 13

מתמטיקה בדידה תרגול מס' 13 מתמטיקה בדידה תרגול מס' 13 נושאי התרגול: תורת הגרפים. 1 מושגים בסיסיים נדון בגרפים מכוונים. הגדרה 1.1 גרף מכוון הוא זוג סדור E G =,V כך ש V ו E. V הגרף נקרא פשוט אם E יחס אי רפלקסיבי. כלומר, גם ללא לולאות.

Διαβάστε περισσότερα

סדרות - תרגילים הכנה לבגרות 5 יח"ל

סדרות - תרגילים הכנה לבגרות 5 יחל סדרות - הכנה לבגרות 5 יח"ל 5 יח"ל סדרות - הכנה לבגרות איברים ראשונים בסדרה) ) S מסמן סכום תרגיל S0 S 5, S6 בסדרה הנדסית נתון: 89 מצא את האיבר הראשון של הסדרה תרגיל גוף ראשון, בשנייה הראשונה לתנועתו עבר

Διαβάστε περισσότερα

אלגברה ליניארית 1 א' פתרון 2

אלגברה ליניארית 1 א' פתרון 2 אלגברה ליניארית א' פתרון 3 4 3 3 7 9 3. נשתמש בכתיבה בעזרת מטריצה בכל הסעיפים. א. פתרון: 3 3 3 3 3 3 9 אז ישנו פתרון יחיד והוא = 3.x =, x =, x 3 3 הערה: אפשר גם לפתור בדרך קצת יותר ארוכה, אבל מבלי להתעסק

Διαβάστε περισσότερα

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת תרגול 3 ניתוח לשיעורין תאריך עדכון אחרון: 27 בפברואר 2011. ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת חסמי זמן ריצה נמוכים יותר מאשר חסמים המתקבלים כאשר

Διαβάστε περισσότερα

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק יום א 14 : 00 15 : 00 בניין 605 חדר 103 http://u.cs.biu.ac.il/ brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק 29/11/2017 1 הגדרת קבוצת הנוסחאות הבנויות היטב באינדוקציה הגדרה : קבוצת הנוסחאות הבנויות

Διαβάστε περισσότερα

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

מבני נתונים מבחן מועד ב' סמסטר חורף תשסו TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון - מכון טכנולוגי לישראל הפקולטה למדעי המחשב מרצים: רן אל-יניב, נאדר בשותי מבני נתונים 234218-1 מבחן מועד ב' סמסטר חורף תשס"ו

Διαβάστε περισσότερα

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r ל' ' פונקציות פרימיטיביות רקורסיביות חישוביות הרצאה 4 האם כל פונקציה מלאה היא פרימיטיבית רקורסיבית? לא נראה שתי הוכחות: פונקציות רקורסיביות (המשך) זיהוי שפות ע''י מכונות טיורינג הוכחה קיומית: קיימות פונקציות

Διαβάστε περισσότερα

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A ) הסתברות למתמטיקאים c ארזים 3 במאי 2017 1 תוחלת מותנה הגדרה 1.1 לכל משתנה מקרי X אינטגרבילית ותת סיגמא אלגברה G F קיים משתנה מקרי G) Y := E (X המקיים: E (X1 A ) = E (Y 1 A ).G מדיד לפי Y.1.E Y

Διαβάστε περισσότερα

תאריך הבחינה: שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:

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

Διαβάστε περισσότερα

{ : Halts on every input}

{ : Halts on every input} אוטומטים - תרגול 13: רדוקציות, משפט רייס וחזרה למבחן E תכונה תכונה הינה אוסף השפות מעל.(property המקיימות תנאים מסוימים (תכונה במובן של Σ תכונה לא טריביאלית: תכונה היא תכונה לא טריוויאלית אם היא מקיימת:.

Διαβάστε περισσότερα

Hash Tables (המשך) ערבול (Hashing)

Hash Tables (המשך) ערבול (Hashing) מילון עם מפתחות שלמים Lecture of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds טבלאות ערבול הפעולות הבסיסיות של מילון הן כזכור חיפוש, הכנסה, והוצאה. אם המפתחות מספרים שלמים בתחום

Διαβάστε περισσότερα

אלגברה מודרנית פתרון שיעורי בית 6

אלגברה מודרנית פתרון שיעורי בית 6 אלגברה מודרנית פתרון שיעורי בית 6 15 בינואר 016 1. יהי F שדה ויהיו q(x) p(x), שני פולינומים מעל F. מצאו פולינומים R(x) S(x), כך שמתקיים R(x),p(x) = S(x)q(x) + כאשר deg(q),deg(r) < עבור המקרים הבאים: (תזכורת:

Διαβάστε περισσότερα

מבני נתונים הגבלת אחריות פרק - 1 אלגוריתמי מיון ואנליזה אסימפטוטית. מיון בועות Sort Bubble מאת : סשה גולדשטיין,

מבני נתונים הגבלת אחריות פרק - 1 אלגוריתמי מיון ואנליזה אסימפטוטית. מיון בועות Sort Bubble מאת : סשה גולדשטיין, 009 מבני נתונים סיכום למבחן, יולי sashag@cs מאת : סשה גולדשטיין, 7:50,3.7.09 עדכון אחרון : בשעה הגבלת אחריות הסיכום להלן הוא האינטרפרטציה שלי של החומר, שממש לא חייבת להיות נכונה או מייצגת את זו של הסגל.

Διαβάστε περισσότερα

גבול ורציפות של פונקציה סקלרית שאלות נוספות

גבול ורציפות של פונקציה סקלרית שאלות נוספות 08 005 שאלה גבול ורציפות של פונקציה סקלרית שאלות נוספות f ( ) f ( ) g( ) f ( ) ו- lim f ( ) ו- ( ) (00) lim ( ) (00) f ( בסביבת הנקודה (00) ) נתון: מצאו ) lim g( ( ) (00) ננסה להיעזר בכלל הסנדביץ לשם כך

Διαβάστε περισσότερα

3-9 - a < x < a, a < x < a

3-9 - a < x < a, a < x < a 1 עמוד 59, שאלהמס', 4 סעיףג' תיקוני הקלדה שאלון 806 צריך להיות : ג. מצאאתמקומושלאיברבסדרהזו, שקטןב- 5 מסכוםכלהאיבריםשלפניו. עמוד 147, שאלהמס' 45 ישלמחוקאתהשאלה (מופיעהפעמיים) עמוד 184, שאלהמס', 9 סעיףב',תשובה.

Διαβάστε περισσότερα

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

אוטומט סופי דטרמיניסטי מוגדר עי החמישייה: 2 תרגול אוטומט סופי דטרמיניסטי אוטומטים ושפות פורמליות בר אילן תשעז 2017 עקיבא קליינרמן הגדרה אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה: (,, 0,, ) כאשר: א= "ב שפת הקלט = קבוצה סופית לא ריקה של מצבים מצב

Διαβάστε περισσότερα

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים ( תכנון ניסויים כאשר קיימת אישביעות רצון מהמצב הקיים (למשל כשלים חוזרים בבקרת תהליכים סטטיסטית) נחפש דרכים לשיפור/ייעול המערכת. ניתן לבצע ניסויים על גורם בודד, שני גורמים או יותר. ניסויים עם גורם בודד: נבצע

Διαβάστε περισσότερα

מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם.

מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם. 7.8.2017 מבחן מועד ב' תאריך הבחינה: שמות המרצים: מר בועז ארד פרופ' עמוס ביימל מר יהונתן כהן דר' עדן כלמטץ' גב' מיכל שמש אנא קיראו היטב את ההוראות שלהלן: שם הקורס: תכנון אלגוריתמים מספר הקורס: 202-1-2041

Διαβάστε περισσότερα

מבני נתונים עצים שיעור 7

מבני נתונים עצים שיעור 7 בס ד מבני נתונים עצים שיעור 7 שי גולן כ ח בניסן, תשע ו 6 במאי 2016 תקציר בתרגול זה נתחיל לדון בעצים. נגדיר עצים כלליים ועצים בינאריים, ונציג את ההגדרות הבסיסיות בתחום. נתרגל הוכחת תכונות של עצים באמצעות

Διαβάστε περισσότερα

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

2 יחל ) השלמה ל - 5 יחל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת. 1 6 מאי, 2004 מועד הבחינה: 2 יח"ל ) השלמה ל - 5 יח"ל) פרק ראשון (50 נקודות) :1 Ï (מקור: שירלי רוזנברג כהן) נגדיר טיפוס נתונים חדש בשם תלת-מחסנית, כמבנה המכיל 3 מחסניות S3. S2, S1, נגדיר את הפעולות הבאות

Διαβάστε περισσότερα

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37 תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי................................................ 2 2 מיון בועות. Bubble Sort............................................ 2 3 מיון מיזוג. Merge Sort............................................

Διαβάστε περισσότερα

רשימת משפטים והגדרות

רשימת משפטים והגדרות רשימת משפטים והגדרות חשבון אינפיניטיסימאלי ב' מרצה : למברג דן 1 פונקציה קדומה ואינטגרל לא מסויים הגדרה 1.1. (פונקציה קדומה) יהי f :,] [b R פונקציה. פונקציה F נקראת פונקציה קדומה של f אם.[, b] גזירה ב F

Διαβάστε περισσότερα

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשעד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, 635865 מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן שאלה מספר 1 נתון: 1. סדרה חשבונית שיש בה n איברים...2 3. האיבר

Διαβάστε περισσότερα

מבני נתונים (234218) 1

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

Διαβάστε περισσότερα

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד סמסטר: א' מועד: א' תאריך: יום ה' 0100004 שעה: 04:00 משך הבחינה: שלוש שעות חומר עזר: אין בבחינה שני פרקים בפרק הראשון 8 שאלות אמריקאיות ולכל אחת מהן מוצעות

Διαβάστε περισσότερα

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא ערמות פיבונאצ'י Operation Linked List Binary Heap Binomial Heap Fibonacci Heap Relaxed Heap make-heap 1 1 1 1 1 is-empty 1 1 1 1 1 insert 1 log

Διαβάστε περισσότερα

מבני נתונים מבחן מועד א' סמסטר חורף תשס"ו

מבני נתונים מבחן מועד א' סמסטר חורף תשסו TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון - מכון טכנולוגי לישראל הפקולטה למדעי המחשב מרצים: רן אל-יניב, נאדר בשותי מבני נתונים 234218-1 מבחן מועד א' סמסטר חורף תשס"ו

Διαβάστε περισσότερα

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא: של שאלות מבחינות פתרונות.1 שאלהזוהופיעהבמבחןמועדג 01 דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא: הגדרות: עבור צומת בעץ בינארי T נסמן ב- T את תת העץ של T ששורשו. (תת העץ הזה כולל את ). נגדיר את תת העץ

Διαβάστε περισσότερα

Domain Relational Calculus דוגמאות. {<bn> dn(<dn, bn> likes dn = Yossi )}

Domain Relational Calculus דוגמאות. {<bn> dn(<dn, bn> likes dn = Yossi )} כללים ליצירת נוסחאות DRC תחשיב רלציוני על תחומים Domain Relational Calculus DRC הואהצהרתי, כמוSQL : מבטאיםבורקמהרוציםשתהיההתוצאה, ולא איךלחשבאותה. כלשאילתהב- DRC היאמהצורה )} i,{ F(x 1,x

Διαβάστε περισσότερα

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m.

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m. פתרון למבחן במבני נתונים, מועד א', קיץ 2005 חלק א' שאלה 1 א. רכיב הקשירות החזק של קודקוד x בגרף מכוון הינו אוסף כל הקודקודים y שמקימים שיש מסלול מ- x ל- y וכן מסלול מy ל- x. טעויות נפוצות שכחו לכתוב שזה

Διαβάστε περισσότερα

מבני נתונים מבחן מועד א' סמסטר אביב תשס"ו

מבני נתונים מבחן מועד א' סמסטר אביב תשסו TECHNION ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב מרצה: אהוד ריבלין מבני נתונים 234218 1 מבחן מועד א' סמסטר אביב תשס"ו מתרגלים: איתן

Διαβάστε περισσότερα

co ארזים 3 במרץ 2016

co ארזים 3 במרץ 2016 אלגברה לינארית 2 א co ארזים 3 במרץ 2016 ניזכר שהגדרנו ווקטורים וערכים עצמיים של מטריצות, והראינו כי זהו מקרה פרטי של ההגדרות עבור טרנספורמציות. לכן כל המשפטים והמסקנות שהוכחנו לגבי טרנספורמציות תקפים גם

Διαβάστε περισσότερα

מבני נתונים אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון:

מבני נתונים אדמיניסטרציה דר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון: מבני נתונים בס"ד, ט' אדר א' תשע"א: שעור 1 אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון: בחינת מגן 20%. תרגילים: 14 13, מורידים את האחד הכי גרוע. 10% מהציון. אתר: www.cs.huji.ac.il/~dast

Διαβάστε περισσότερα

מבני נתונים מדעי המחשב שאלון: מועד ב' תשע"ו מדעי המחשב פתרון בחינת הבגרות. Java שאלה 1. blog.csit.org.

מבני נתונים מדעי המחשב שאלון: מועד ב' תשעו מדעי המחשב פתרון בחינת הבגרות. Java שאלה 1. blog.csit.org. 1 פתרון בחינת הבגרות פרק ראשון - )יסודות( Java שאלה 1 C# 6 Java שאלה 2 ב. פלט a a1 A A 4 + 5 = 9 4 + 5 = 9 n1 n2 n1 n2 8 + 9 = 17? 4? 5 4 8 5 9 3 :C# שאלה 2 פלט a a1 A A 4 + 5 = 9 4 + 5 = 9 n1 n2 n1 n2

Διαβάστε περισσότερα

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V ) הצגות של חבורות סופיות c ארזים 6 בינואר 017 1 משפט ברנסייד משפט 1.1 ברנסייד) יהיו p, q ראשוניים. תהי G חבורה מסדר.a, b 0,p a q b אזי G פתירה. הוכחה: באינדוקציה על G. אפשר להניח כי > 1 G. נבחר תת חבורה

Διαβάστε περισσότερα

logn) = nlog. log(2n

logn) = nlog. log(2n תכנוןוניתוחאלגוריתמים סיכוםהתרגולים n log O( g( n)) = Ω( g( n)) = θ ( g( n)) = תרגול.3.04 סיבוכיות { f ( n) c> 0, n0 > 0 n> n0 0 f ( n) c g( n) } { f ( n) c> 0, n0 > 0 n> n0 0 c g( n) f ( n) } { f ( n)

Διαβάστε περισσότερα

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות 25 בדצמבר 2016 תזכורת: תהי ) n f ( 1, 2,..., פונקציה המוגדרת בסביבה של f. 0 גזירה חלקית לפי משתנה ) ( = 0, אם קיים הגבול : 1 0, 2 0,..., בנקודה n 0 i f(,..,n,).lim

Διαβάστε περισσότερα

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית:

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית: משפט הדיברגנץ תחום חסום וסגור בעל שפה חלקה למדי, ותהי F פו' וקטורית :F, R n R n אזי: div(f ) dxdy = F, n dr נוסחת גרין I: uδv dxdy = u v n dr u, v dxdy הוכחה: F = (u v v, u x y ) F = u v כאשר u פו' סקלרית:

Διαβάστε περισσότερα

מבוא למדעי המחשב מבוא למדעי המחשב מ' - תירגול 14

מבוא למדעי המחשב מבוא למדעי המחשב מ' - תירגול 14 מבוא למדעי המחשב תירגול 14: נושאים מתקדמים 1 מה היה שבוע שעבר? Backtracking 2 תוכנייה עץ רקורסיה העברת פרמטרים ל- main שאלות ממבחן 3 עץ רקורסיה 4 עץ הקריאות של פונקציה רקורסיבית על מנת לחקור התנהגות של

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 12

מתמטיקה בדידה תרגול מס' 12 מתמטיקה בדידה תרגול מס' 2 נושאי התרגול: נוסחאות נסיגה נוסחאות נסיגה באמצעות פונקציות יוצרות נוסחאות נסיגה באמצעות פולינום אופייני נוסחאות נסיגה לעתים מפורש לבעיה קומבינטורית אינו ידוע, אך יחסית קל להגיע

Διαβάστε περισσότερα

( n) ( ) ( ) שאלה 1: שאלה 2: שאלה 3: (n 5) = Θ. ב. אם f 1, f 2, g 1, g 2. .g 1 *g 2 = Ω(f 1 *f 2 ) , g. ג. ) n.n! = θ(n*2. n) f ( אז ד. אם ה. אם ו.

( n) ( ) ( ) שאלה 1: שאלה 2: שאלה 3: (n 5) = Θ. ב. אם f 1, f 2, g 1, g 2. .g 1 *g 2 = Ω(f 1 *f 2 ) , g. ג. ) n.n! = θ(n*2. n) f ( אז ד. אם ה. אם ו. נתונים מבני לקט שאלות ממבחנים - 0 - ניתוח סדרי גודל ב. שאלה 1: הוכיחו או הפריכו את הטענות הבאות ישירות על ידי שימוש בהגדרות 3 3 א. ) =Ω( log( ) =Ω( ) ( ) log(log ) = O ( 5) log (+ 5) = O() 6 ( 10 ) =Θ(

Διαβάστε περισσότερα

אינפי - 1 תרגול בינואר 2012

אינפי - 1 תרגול בינואר 2012 אינפי - תרגול 4 3 בינואר 0 רציפות במידה שווה הגדרה. נאמר שפונקציה f : D R היא רציפה במידה שווה אם לכל > 0 ε קיים. f(x) f(y) < ε אז x y < δ אם,x, y D כך שלכל δ > 0 נביט במקרה בו D הוא קטע (חסום או לא חסום,

Διαβάστε περισσότερα

חשבון אינפיניטסימלי 1

חשבון אינפיניטסימלי 1 חשבון אינפיניטסימלי 1 יובל קפלן סיכום הרצאות פרופ צליל סלע בקורס "חשבון אינפיניטסימלי 1" (80131) באוניברסיטה העברית, 7 2006. תוכן מחברת זו הוקלד ונערך על-ידי יובל קפלן. אין המרצה אחראי לכל טעות שנפלה בו.

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

לוגיקה ותורת הקבוצות מבחן סופי אביב תשעב (2012) דפי עזר לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר תורת הקבוצות: סימונים.N + = N \ {0} קבוצת המספרים הטבעיים; N Z קבוצת המספרים השלמים. Q קבוצת המספרים הרציונליים. R קבוצת המספרים הממשיים. הרכבת

Διαβάστε περισσότερα

תכנון דינאמי. , p p p והמטריצה המתקבלת היא בגודל

תכנון דינאמי. , p p p והמטריצה המתקבלת היא בגודל תכנון אלגוריתמים, אביב, תרגול מס' תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (6..(CLR ראשית נראה דוגמא:. A, A, A, A נסמן את גודל המטריצות בסדרה ע"י סדרת גדלים כאשר, p 5 5 p היא

Διαβάστε περισσότερα

תרגול 8: מטלאב לולאות

תרגול 8: מטלאב לולאות מבוא למחשב בשפת Matlab : מטלאב לולאות נכתב על-ידי רמי כהן,אולג רוכלנקו, לימור ליבוביץ ואיתן אביאור כל הזכויות שמורות לטכניון מכון טכנולוגי לישראל לולאת while a=input('enter a positive number:'); קליטת

Διαβάστε περισσότερα

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים. א{ www.sikumuna.co.il מהי קבוצה? קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים. קבוצה היא מושג יסודי במתמטיקה.התיאור האינטואיטיבי של קבוצה הוא אוסף של עצמים כלשהם. העצמים הנמצאים בקבוצה הם איברי הקבוצה.

Διαβάστε περισσότερα

. {e M: x e} מתקיים = 1 x X Y

. {e M: x e} מתקיים = 1 x X Y שימושי זרימה פרק 7.5-13 ב- Kleinberg/Tardos שידוך בגרף דו-צדדי עיבוד תמונות 1 בעיית השידוך באתר שידוכים רשומים m נשים ו- n גברים. תוכנת האתר מאתרת זוגות מתאימים. בהינתן האוסף של ההתאמות האפשריות, יש לשדך

Διαβάστε περισσότερα

הגדרה: מצבים k -בני-הפרדה

הגדרה: מצבים k -בני-הפרדה פרק 12: שקילות מצבים וצמצום מכונות לעי תים קרובות, תכנון המכונה מתוך סיפור המעשה מביא להגדרת מצבים יתי רים states) :(redundant הפונקציה שהם ממלאים ניתנת להשגה באמצעו ת מצבים א חרים. כיוון שמספר רכיבי הזיכרון

Διαβάστε περισσότερα

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה. פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה. 16 במאי 2010 נסמן את מחלקת הצמידות של איבר בחבורה G על ידי } g.[] { y : g G, y g כעת נניח כי [y] [] עבור שני איברים, y G ונוכיח כי [y].[] מאחר והחיתוך

Διαβάστε περισσότερα

םינותנ ינבמ 3 ליגרתמ תולאשל המוד תולאש טסל תונורתפ תולאשה

םינותנ ינבמ 3 ליגרתמ תולאשל המוד תולאש טסל תונורתפ תולאשה מבני נתונים פתרונות לסט שאלות דומה לשאלות מתרגיל 3 השאלות נתונה רשימה משורשרת L המכילה n מספרים שלמים חיוביים מתחום לא חסום כאשר 1 k n = 2 עבור > 0 k כלשהו. נניח שהמספרים ברשימה מקיימים את התכונה הבאה:

Διαβάστε περισσότερα

מודלים חישוביים תרגולמס 5

מודלים חישוביים תרגולמס 5 מודלים חישוביים תרגולמס 5 30 במרץ 2016 נושאי התרגול: דקדוקים חסרי הקשר. למת הניפוח לשפות חסרות הקשר. פעולות סגור לשפות חסרות הקשר. 1 דקדוקים חסרי הקשר נזכיר כי דקדוק חסר הקשר הוא רביעיה =(V,Σ,R,S) G, כך

Διαβάστε περισσότερα

אלגברה ליניארית 1 א' פתרון 7

אלגברה ליניארית 1 א' פתרון 7 אלגברה ליניארית 1 א' פתרון 7 2 1 1 1 0 1 1 0 1 0 2 1 1 0 1 0 2 1 2 1 1 0 2 1 0 1 1 3 1 2 3 1 2 0 1 5 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 4 0 0 0.1 עבור :A לכן = 3.rkA עבור B: נבצע פעולות עמודה אלמנטריות

Διαβάστε περισσότερα

מבני נתונים ואלגוריתמים תרגול #11

מבני נתונים ואלגוריתמים תרגול #11 מבני נתונים ואלגוריתמים תרגול # התאמת מחרוזות סימונים והגדרות: P[,,m] כך Σ * טקסט T )מערך של תווים( באורך T[,,n] n ותבנית P באורך m ש.m n התווים של P ו T נלקחים מאלפבית סופי Σ. לדוגמא: {a,b,,z},{,}=σ.

Διαβάστε περισσότερα

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

פתרונות , כך שאי השוויון המבוקש הוא ברור מאליו ולכן גם קודמו תקף ובכך מוכחת המונוטוניות העולה של הסדרה הנתונה. בחינת סיווג במתמטיקה.9.017 פתרונות.1 סדרת מספרים ממשיים } n {a נקראת מונוטונית עולה אם לכל n 1 מתקיים n+1.a n a האם הסדרה {n a} n = n היא מונוטונית עולה? הוכיחו תשובתכם. הסדרה } n a} היא אכן מונוטונית

Διαβάστε περισσότερα

אוניברסיטת בר אילן מבני נתונים תרגולים מרצה: פרופ' שמואל טומי קליין סמסטר ב', תש"ע

אוניברסיטת בר אילן מבני נתונים תרגולים מרצה: פרופ' שמואל טומי קליין סמסטר ב', תשע אוניברסיטת בר אילן מבני נתונים 89-120 תרגולים (חלקי) מרצה: פרופ' שמואל טומי קליין נכתב ונערך ע"י: גלעד אשרוב סמסטר ב', תש"ע הערות כלליות. המסמך מכיל סיכומי תרגולים שניתנו במהלך הסמסטר (סמסטר ב', תש"ע).

Διαβάστε περισσότερα

פתרון תרגיל 4 יסודות מבני נתונים סמסטר א' תשע"ה שאלה 1:

פתרון תרגיל 4 יסודות מבני נתונים סמסטר א' תשעה שאלה 1: פתרון תרגיל 4 שאלה 1: הציעו דרך לממש תור )FIFO( באמצעות ערימה, תשובתכם צריכה לכלול פסאודו-קוד, המתאר את הפעולות הבאות: isempty(),enqueue(x), dequeue(), בנוסף נתחו זמן ריצה במקרה הגרוע ביותר עבור כ"א מהפעולות

Διαβάστε περισσότερα