You are on page 1of 34

‫ה פ ת ו ח ה‬ ‫‪ a‬ה א ו ‪ ‬י ב ר ס י ט ה‬

‫‪20433‬‬
‫מב‪‬י‪-‬תו‪‬ים‬
‫חוברת הקורס – סתיו ‪2022‬א‬

‫כתבה‪ :‬איל‪‬ה בס‬

‫אוקטובר ‪ – 2021‬סמסטר סתיו – תשפ"ב‬


‫פ‪‬ימי – לא להפצה‪.‬‬

‫‪ ‬כל הזכויות שמורות לאו‪‬יברסיטה הפתוחה‪.‬‬


‫תוכן הע‪‬יי‪‬ים‬
‫א‬ ‫אל הסטוד‪‬ט‬
‫ג‬ ‫‪ .1‬לוח זמ‪‬ים ופעילויות‬
‫ה‬ ‫‪ .2‬בתיאור המטלות‬
‫ה‬ ‫‪ 2.1‬ממ"ן רגיל‬
‫ו‬ ‫‪ 2.2‬ממ"ן הרצה‬
‫ח‬ ‫‪ 2.3‬חומר הלימוד הדרוש לפתרון המטלות‬
‫ט‬ ‫‪ .3‬הת‪‬אים לקבלת ‪‬קודות זכות בקורס‬
‫‪1‬‬ ‫ממ"ן ‪11‬‬
‫‪5‬‬ ‫ממ"ן ‪12‬‬
‫‪7‬‬ ‫ממ"ן ‪13‬‬
‫‪9‬‬ ‫ממ"ן ‪14‬‬
‫‪11‬‬ ‫ממ"ן ‪15‬‬
‫‪15‬‬ ‫ממ"ן ‪16‬‬
‫‪17‬‬ ‫ממ"ן ‪17‬‬
‫‪19‬‬ ‫ממ"ן ‪18‬‬
‫אל הסטוד‪‬ט‪,‬‬
‫א‪‬י מברכת אותך עם הצטרפותך לקורס "מב‪‬י‪-‬תו‪‬ים" באו‪‬יברסיטה הפתוחה‪.‬‬
‫על מ‪‬ת לסייע לך לעבור את הקורס בהצלחה‪ ,‬ברצו‪‬י להפ‪‬ות את תשומת ליבך למספר ‪‬קודות‬
‫חשובות‪:‬‬
‫כידוע לך ‪‬וכחות במפגשי הה‪‬חיה אי‪‬ה חובה‪ .‬יחד עם זאת‪ ,‬מומלץ מאד להגיע באופן סדיר‬ ‫‪‬‬
‫למפגשי הה‪‬חיה‪ .‬המפגשים כוללים תרגול רב ואין לי ספק שההשתתפות בהם תוכל לתרום‬
‫לך רבות‪ .‬כמו כן‪ ,‬יסיון העבר מלמד‪ ,‬כי קיים מתאם גבוה בין ‪‬וכחות סדירה במפגשי‬
‫הה‪‬חיה לבין הצלחה במבחן הסופי‪.‬‬
‫במהלך הקורס יש להגיש תרגילי בית‪ .‬כדי להיות זכאי לגשת לבחי‪‬ה יש להגיש את ש‪‬י‬ ‫‪‬‬
‫תרגילי ההרצה )ממ"‪‬ים ‪ 14‬ו‪ (18-‬וכן להגיש עוד שלושה ממ"‪‬ים‪ .‬הכ‪‬ת תרגילי הבית מהווה‬
‫הכ‪‬ה מצוי‪‬ת לבחי‪‬ה ולכן מומלץ להגיש כמה שיותר תרגילים‪) .‬כל ממ"ן ‪‬וסף שיוגש מעבר‬
‫למי‪‬ימום ה‪‬דרש יוכל רק לשפר את ציון המגן ‪ -‬ר' סעיף ‪ 10.4‬בחוברת(‪ .‬יש להקפיד על הגשת‬
‫הממ"‪‬ים במועד‪.‬‬

‫לקורס קיים אתר באי‪‬טר‪‬ט בו תמצאו חומרי למידה ‪‬וספים‪ ,‬אותם מפרסם‪/‬מת מרכז‪/‬ת ההוראה‪.‬‬
‫ב‪‬וסף‪ ,‬האתר מהווה עבורכם ערוץ תקשורת עם צוות ההוראה ועם סטוד‪‬טים אחרים בקורס‪.‬‬

‫מידע על שירותי ספרייה ומקורות מידע שהאו‪‬יברסיטה מעמידה לרשותכם‪ ,‬תמצאו באתר‬
‫הספריה באי‪‬טר‪‬ט ‪.www.openu.ac.il/Library‬‬

‫א‪‬י מקווה שתשתמש בכלים שמעמיד לרשותך תקשוב הקורס‪ ,‬ותפיק מהם תועלת וגם ה‪‬אה‪.‬‬

‫צוות הקורס ישמח לעמוד לרשותך בכל שאלה שתתעורר‪.‬‬

‫‪‬יתן לפ‪‬ות למ‪‬חים בשעות הה‪‬חיה הטלפו‪‬ית שלהם‪ ,‬או ישירות אלי בכל יום ד' בשעות‬
‫‪ 11:00-13:00‬בטלפון ‪ 09-7781239‬כמו כן ‪‬יתן לפ‪‬ות אלי ב‪ e-mail -‬כתובתי‪ilana@openu.ac.il:‬‬

‫לתשומת לב הסטוד‪‬טים הלומדים בחו"ל‪:‬‬


‫למרות הריחוק הפיסי הגדול‪ ,‬שתדל לשמור אתכם על קשרים הדוקים ולעמוד לרשותכם ככל‬
‫האפשר‪.‬‬
‫הפרטים החיו‪‬יים על הקורס ‪‬כללים בחוברת הקורס וכן באתר הקורס‪.‬‬
‫מומלץ מאד להשתמש באתר הקורס ובכל אמצעי העזר שבו וכמובן לפ‪‬ות אלי‪‬ו במידת הצורך‪.‬‬

‫א‪‬י מאחלת לך לימוד פורה ומה‪‬ה‪.‬‬

‫ב ב ר כ ה‪,‬‬

‫איל‪‬ה בס‬
‫מרכזת ההוראה בקורס‬

‫א‬
‫ב‬
‫ופעילויות )מס' קורס ‪/ 20433‬א‪(2022‬‬ ‫‪ .1‬לוח זמ‪‬ים‬
‫תאריך אחרון למשלוח‬
‫הממ"ן‬ ‫מפגשי הה‪‬חיה*‬ ‫יחידת הלימוד‬ ‫תאריכי שבוע הלימוד‬ ‫שבוע‬
‫)למ‪‬חה(‬ ‫המומלצת‬ ‫הלימוד‬

‫פרקים ‪1-2‬‬ ‫‪22.10.2021-17.10.2021‬‬ ‫‪1‬‬

‫‪29.10.2021-24.10.2021‬‬
‫ממ"ן ‪11‬‬ ‫מפגש ‪1‬‬ ‫פרק ‪3‬‬ ‫‪2‬‬
‫‪30.10.2021‬‬

‫פרק ‪) 4‬סעיף‬ ‫‪05.11.2021-31.10.2021‬‬ ‫‪3‬‬


‫‪(4.1‬‬
‫פרק ‪6‬‬

‫ממ"ן ‪12‬‬ ‫מפגש ‪2‬‬ ‫פרק ‪6‬‬ ‫‪12.11.2021-07.11.2021‬‬ ‫‪4‬‬


‫‪13.11.2021‬‬

‫פרק ‪7‬‬ ‫‪19.11.2021-14.11.2021‬‬ ‫‪5‬‬

‫ממ"ן ‪13‬‬ ‫מפגש ‪3‬‬ ‫פרק ‪8‬‬ ‫‪26.11.2021-21.11.2021‬‬ ‫‪6‬‬


‫‪27.11.2021‬‬ ‫)סעיפים‬
‫‪(8.2,8.1‬‬

‫פרק ‪10‬‬ ‫‪03.12.2021-28.11.2021‬‬ ‫‪7‬‬


‫מפגש ‪4‬‬ ‫)סעיפים‬ ‫)ב‪-‬ו ח‪‬וכה(‬

‫‪(10.2 ,10.1‬‬

‫ממ"ן ‪14‬‬ ‫פרק ‪10‬‬ ‫‪10.12.2021-05.12.2021‬‬ ‫‪8‬‬


‫‪11.12.2021‬‬ ‫)סעיפים‬ ‫)א‪-‬ב ח‪‬וכה(‬

‫‪(10.4 ,10.3‬‬

‫* התאריכים המדויקים של המפגשים הקבוצתיים מופיעים ב"לוח מפגשים ומ‪‬חים"‪.‬‬

‫ג‬
‫לוח זמ‪‬ים ופעילויות ‪ -‬המשך‬
‫תאריך אחרון למשלוח‬
‫הממ"ן‬ ‫מפגשי הה‪‬חיה*‬ ‫יחידת הלימוד‬ ‫תאריכי שבוע הלימוד‬ ‫שבוע‬
‫)למ‪‬חה(‬ ‫המומלצת‬ ‫הלימוד‬

‫מפגש ‪5‬‬ ‫פרק ‪11‬‬ ‫‪17.12.2021-12.12.2021‬‬ ‫‪9‬‬

‫‪24.12.2021-19.12.2021‬‬
‫ממ"ן ‪15‬‬ ‫פרק ‪12‬‬ ‫‪10‬‬
‫‪25.12.2021‬‬ ‫)בלי סעיף ‪(12.4‬‬

‫מפגש ‪6‬‬ ‫עצי ‪AVL‬‬ ‫‪31.12.2021-26.12.2021‬‬ ‫‪11‬‬

‫ממ"ן ‪16‬‬ ‫עצי ‪AVL‬‬ ‫‪07.01.2022-02.01.2022‬‬ ‫‪12‬‬


‫‪08.01.2022‬‬

‫אלגוריתמים‬ ‫‪14.01.2022-09.01.2022‬‬ ‫‪13‬‬


‫בגרפים‬

‫ממ"ן ‪17‬‬ ‫אלגוריתמים‬ ‫‪21.01.2022-16.01.2022‬‬ ‫‪14‬‬


‫‪22.01.2022‬‬ ‫מפגש ‪7‬‬ ‫בגרפים‬

‫חזרה‬

‫מפגש מס' ‪ 8‬יתקיים ב‪23.1.2022-‬‬

‫תאריך אחרון למשלוח ממ"ן ‪26.2.2022 :18‬‬

‫מועדי בחי‪‬ות הגמר יפורסמו ב‪‬פרד‬

‫* התאריכים המדויקים של המפגשים הקבוצתיים מופיעים ב"לוח מפגשים ומ‪‬חים"‪.‬‬

‫ד‬
‫‪ .2‬תיאור המטלות‬
‫קרא היטב עמודים אלו לפ‪‬י שתתחיל להכין את המטלות‬

‫חוברת זו מכילה ‪ 8‬מטלות‪ ,‬שעליך לפתור ולהגיש במהלך הקורס‪ .‬שתי מטלות )מטלות ‪ 14‬ו‪ (18-‬הן‬
‫מטלות הרצה‪ ,‬ועליך להגיש את שתיהן‪ .‬שאר המטלות הן מטלות רגילות‪ ,‬ומתוכן עליך להגיש‬
‫לפחות שלוש‪ .‬פתרון המטלות הוא חלק בלתי ‪‬פרד מלימוד הקורס‪ ,‬שכן הב‪‬ה מעמיקה של חומר‬
‫הלימוד דורשת תרגול רב‪.‬‬
‫מומלץ לדון על המטלות עם סטוד‪‬טים אחרים בקורס‪.‬‬
‫יחד עם זאת‪ ,‬מובן שעליך לכתוב את הפתרון למטלה בעצמך‪ .‬במקרה שתוגש‪‬ה שתי מטלות‬
‫זהות‪ ,‬המטלות תיפסל‪‬ה ותוגש תלו‪‬ה לוועדת המשמעת‪.‬‬
‫אם תיתקל בקשיים בפתרון הממ"ן‪ ,‬תוכל להיעזר בקבוצת הדיון של הקורס או להתקשר לאחד‬
‫המ‪‬חים )בשעת הייעוץ הטלפו‪‬י(‪.‬‬

‫‪ 2.1‬ממ"ן רגיל‬
‫מטלה כזו מורכבת מכמה שאלות‪ .‬בראש כל שאלה מצוין משקלה היחסי בקביעת ציון המטלה‪.‬‬
‫פתרון השאלות במטלה כזו אי‪‬ו דורש הרצת תכ‪‬יות במחשב‪.‬‬
‫את הפתרו‪‬ות למטלה כזו יש לכתוב בעט על דף ‪‬ייר בכתב יד ברור ובצורה מסודרת‪ .‬רצוי‬
‫להשאיר שוליים רחבים להערות המ‪‬חה‪) .‬אפשר ורצוי‪ ,‬כמובן‪ ,‬להדפיס את הפתרו‪‬ות למטלה‪(.‬‬

‫בחלק מהשאלות בממ"‪‬ים הרגילים ה‪‬ך מתבקש לכתוב אלגוריתם‪ .‬להלן מספר ה‪‬חיות ה‪‬וגעות‬
‫לכתיבת אלגוריתמים‪:‬‬
‫א‪ .‬הסבר בקצרה את אופן הפעולה של האלגוריתם )אלא אם כן האלגוריתם מאוד פשוט(‪.‬‬
‫אלגוריתם ללא הסבר ‪ -‬לא יתקבל!‬
‫ב‪ .‬כתוב את האלגוריתם בפסאודו‪-‬קוד‪ ,‬בדומה לספר‪ .‬מותר לשלב בפסאודו‪-‬קוד הוראות‬
‫בעברית‪ ,‬במידה שהמימוש שלהן חד‪-‬משמעי וברור‪) .‬לדוגמה‪ :‬יתן לכתוב "בחר את האיבר‬
‫הראשון ברשימה; אם הוא גדול מ‪ 7 -‬אז ‪.("...‬‬
‫ג‪ .‬אין צורך להעתיק אלגוריתם המופיע בספר אלא רק לכתוב היכן ואיך משתמשים בו‪.‬‬
‫ד‪ .‬אסור בשום אופן לכתוב תכ‪‬ית בפסקל במקום אלגוריתם‪.‬‬
‫ה‪ .‬אם ‪‬תבקשת להוכיח את ‪‬כו‪‬ות האלגוריתם‪ ,‬עשה זאת בצורה פורמלית ומדויקת )למשל תוך‬
‫שימוש באי‪‬דוקציה או בכלים מתמטיים אחרים(‪ .‬גם אם לא ‪‬תבקשת להוכיח ‪‬כו‪‬ות‪ ,‬יש‬
‫להסביר באופן כללי מדוע האלגוריתם הוא ‪‬כון‪.‬‬
‫ו‪ .‬בכל מקרה )גם אם הדבר לא צוין במפורש( יש ל‪‬תח את זמן הריצה של האלגוריתם‪.‬‬
‫כמו כן‪ ,‬תמיד ‪‬סה להגיע לאלגוריתם יעיל ככל האפשר‪.‬‬

‫ה‬
‫‪ 2.2‬ממ"ן הרצה‬
‫במטלת הרצה עליך לכתוב ולהריץ במחשב תכ‪‬ית בשפת ‪ C/C++, PASCAL‬או ‪.JAVA‬‬
‫מובן שעל התכ‪‬ית לעבור קומפילציה ולבצע את ה‪‬דרש ממ‪‬ה ללא טעויות‪.‬‬
‫עליך לשלוח למ‪‬חה‪:‬‬
‫‪ .1‬הדפסה של קובץ התכ‪‬ית‪.‬‬
‫‪ .2‬דוגמאות לקבצי קלט ופלט‪.‬‬
‫‪ .3‬דיסקט המכיל את קובץ התכ‪‬ית )‪ (source‬וקובץ ‪ exe‬של התכ‪‬ית‪.‬‬

‫הערכת מטלות ההרצה‬


‫כל מטלת הרצה תיבחן על‪-‬פי הקריטריו‪‬ים הבאים‪:‬‬
‫)‪ (50%‬א‪ .‬כו‪‬ות התכ‪‬ית‪.‬‬
‫)‪ (30%‬ב‪ .‬בחירת מב‪‬י ‪‬תו‪‬ים מתאימים‪ ,‬יעילות האלגוריתם‪.‬‬
‫)‪ (10%‬ג‪ .‬תיעוד מקיף וברור‪ ,‬בחירת שמות משמעותיים למשת‪‬ים וצורה חיצו‪‬ית ‪‬אה‪.‬‬
‫)‪ (10%‬ד‪ .‬בחירה טובה של קלט לבדיקת התכ‪‬ית‪.‬‬

‫רצוי להתחיל לעבוד על מטלת הרצה כשבועיים לפחות לפ‪‬י מועד ההגשה‪.‬‬

‫ה‪‬חיות לכתיבת מטלות הרצה‬


‫הה‪‬חיות מתחלקות לש‪‬י ‪‬ושאים עיקריים‪:‬‬
‫‪ .1‬כתיבת הקוד‪ :‬תכ‪‬ות פשוט וקריא‪ ,‬מודולריות‪ ,‬תכ‪‬ות מלמעלה למטה‪.‬‬
‫‪ .2‬תיעוד‪ :‬תיעוד כללי‪ ,‬תיעוד בגוף התכ‪‬ית‪.‬‬

‫‪ .1‬כתיבת הקוד‬
‫תכ‪‬ות פשוט וקריא‬
‫לאחר קריאת התיעוד‪ ,‬על התכ‪‬ית להיות מוב‪‬ת גם לאדם שלא היה שותף לכתיבתה!‬
‫לכן יש להקפיד על הכללים הבאים‪:‬‬
‫א‪ .‬יש לתת למשת‪‬ים שמות משמעותיים‪.‬‬
‫ב‪ .‬אין להשתמש באותו משת‪‬ה למטרות שו‪‬ות )יוצאים מן הכלל בע‪‬יין זה הם משת‪‬ים‬
‫המשמשים כאי‪‬דקסים(‪.‬‬
‫אם משת‪‬ה מקבל במהלך התכ‪‬ית ערכים רק בתחום מסוים‪ ,‬יש להגדיר תחום זה‪.‬‬ ‫ג‪.‬‬
‫ד‪ .‬כדאי להשתמש ב‪ ordered type -‬בעל משמעות בכל מקום שאפשר‪ .‬למשל במקום‪:‬‬
‫ה‪ month = 1..12 .‬שתמש ב‪.month = (jan, feb,..., dec) :‬‬
‫יש להעביר פרמטרים בין הפרוצדורות השו‪‬ות ולא להשתמש במשת‪‬ים גלובליים‪.‬‬ ‫ו‪.‬‬

‫ו‬
‫מודולריות‬
‫את התכ‪‬ית יש לחלק למודולים )פרוצדורות ופו‪‬קציות( בהתאם לכללים המ‪‬חים הבאים‪:‬‬
‫א‪ .‬אם קטע קוד או פעולה חוזרים על עצמם בשי‪‬ויים קלים‪ ,‬יש לכתוב אותם פעם אחת‬
‫כפרוצדורה‪/‬פו‪‬קציה‪.‬‬
‫ב‪ .‬מספר המשפטים בפרוצדורה‪/‬פו‪‬קציה צריך להיות מוגבל‪ ,‬כך ש‪‬יתן יהיה לקרוא ולהבין את‬
‫פעולתה בקלות‪.‬‬
‫ג‪ .‬יש להשתדל לרכז את פעולות הקלט‪/‬פלט בתוך פרוצדורות ספציפיות למטרות אלו‪.‬‬
‫ד‪ .‬התכ‪‬ית הראשית צריכה להיות מורכבת אך ורק מקריאות לפרוצדורות ופו‪‬קציות‪.‬‬

‫תכ‪‬ות מלמעלה למטה )‪(Top-Down‬‬


‫לאחר כתיבת האלגוריתם לפתרון הבעיה המוצגת בממ"ן‪ ,‬יש "לתרגם" את האלגוריתם לתכ‪‬ית‬
‫מחשב‪.‬‬
‫רצוי לכתוב את התכ‪‬ית באופן הבא‪:‬‬
‫שלב א ‪ -‬תכ‪‬ון המב‪‬ה הכללי של התכ‪‬ית‪ ,‬וחלוקה לפרוצדורות‪/‬פו‪‬קציות עיקריות )מודולים(‪.‬‬
‫שלב ב ‪ -‬תכ‪‬ון כל מודול וחלוקה לתת‪-‬מודולים‪) .‬יש להחליט בשלב זה אילו ערכים מועברים בין‬
‫המודולים(‪.‬‬
‫שלב ג ‪ -‬כתיבת הקוד לתכ‪‬ית בסדר שבו היא תוכ‪‬ה‪ :‬מתחילים בתכ‪‬ית הראשית ומסיימים‬
‫בפרוצדורות ופו‪‬קציות העזר‪.‬‬
‫שלב ד ‪ -‬יפוי שגיאות‪ ,‬בדיקת ‪‬כו‪‬ות התכ‪‬ית באמצעות הרצתה על קלטים שו‪‬ים‪ ,‬כתיבת‬
‫התיעוד‪.‬‬
‫‪ .2‬תיעוד‬
‫התיעוד צריך להיות מורכב מ‪ 2-‬חלקים‪:‬‬
‫א‪ .‬תיעוד כללי‪:‬‬
‫‪ -‬תיאור הבעיה והגישה הכללית של התכ‪‬ית לפתרו‪‬ה‪.‬‬
‫‪ -‬תיאור מב‪‬י ה‪‬תו‪‬ים שבהם התכ‪‬ית משתמשת‪.‬‬
‫‪ -‬תיאור האלגוריתמים והוכחת הסיבוכיות שלהם‪:‬‬
‫יש להסביר כיצד מימשתם כל פעולה על מב‪‬ה ה‪‬תו‪‬ים ובאיזו סיבוכיות )כולל הוכחת‬
‫הסיבוכיות( תוך כדי התייחסות לשי‪‬ויים במב‪‬ה ה‪‬תו‪‬ים‪ .‬אין צורך להוכיח סיבוכיות זמן‬
‫ידועה אלא רק של פעולות על מב‪‬י ‪‬תו‪‬ים שאי‪‬ן מופיעות בספר הלימוד‪.‬‬
‫חלק זה של התיעוד )התיעוד הכללי( עומד בפ‪‬י עצמו וצריך להיות מובן לקורא לפ‪‬י עיון בקוד‬
‫התכ‪‬ית‪.‬‬
‫תכ‪‬ית לא מתועדת ‪ -‬לא תיבדק!‬

‫ב‪ .‬תיעוד בגוף התכ‪‬ית‪:‬‬


‫לכל שגרה יש להוסיף מספר שורות‪ ,‬המסבירות באופן כללי מה מבצעת השגרה ומהו תפקיד‬
‫המשת‪‬ים המוגדרים בה‪ .‬כמו כן יש להוסיף הסברים ‪‬וספים לפי הצורך‪.‬‬

‫ז‬
‫‪ 2.3‬חומר הלימוד הדרוש לפתרון המטלות‬

‫‪‬יקוד חומר הלימוד הדרוש לפתרו‪‬ה‬ ‫המטלה‬


‫פרקים ‪ 2,1‬בספר‬ ‫‪3‬‬ ‫ממ"ן ‪11‬‬
‫פרקים ‪6,3‬בספר‬ ‫‪4‬‬ ‫ממ"ן ‪12‬‬
‫פרקים ‪ 8,7‬בספר‬ ‫‪3‬‬ ‫ממ"ן ‪13‬‬
‫פרקים ‪ 1-6‬בספר‬ ‫‪4‬‬ ‫ממ"ן ‪) 14‬ממ"ן הרצה(‬
‫פרקים ‪ 11,10‬בספר‬ ‫‪4‬‬ ‫ממ"ן ‪15‬‬
‫פרק ‪ 12‬בספר‪ ,‬הפרק במדריך הלמידה על ‪AVL‬‬ ‫‪4‬‬ ‫ממ"ן ‪16‬‬
‫אלגוריתמים בגרפים‬ ‫‪4‬‬ ‫ממ"ן ‪17‬‬
‫פרקים ‪1-10‬‬ ‫‪4‬‬ ‫ממ"ן ‪) 18‬ממ"ן הרצה(‬

‫הערה‪ :‬לצורך פתרון מטלה יש להשתמש רק בחומר ש‪‬למד עד לפרק)ים( בראש המטלה )כולל(‬
‫ולא בחומר ה‪‬מצא בפרקים מתקדמים יותר‪.‬‬

‫כאמור‪ ,‬חובה להגיש את ממ"‪‬ים ‪ 14‬ו‪ 18-‬ועוד ‪ 3‬ממ"‪‬ים רגילים‪.‬‬


‫כלומר‪ ,‬כדי שתוכל לגשת לבחי‪‬ה עליך לצבור לפחות ‪ 18‬קודות מתוך ‪ 30‬ה‪‬קודות האפשריות‪.‬‬

‫לתשומת לבכם!‬
‫כדי לעודדכם להגיש לבדיקה מספר רב של מטלות ה‪‬הג‪‬ו את ההקלה שלהלן‪:‬‬
‫אם הגשתם מטלות מעל למשקל המי‪‬ימלי ה‪‬דרש בקורס‪ ,‬המטלות בציון ה‪‬מוך‬
‫ביותר‪ ,‬שציו‪‬יהן ‪‬מוכים מציון הבחי‪‬ה )עד שתי מטלות(‪ ,‬לא יילקחו בחשבון בעת‬
‫שקלול הציון הסופי‪.‬‬
‫זאת בת‪‬אי שמטלות אלה אי‪‬ן חלק מדרישות החובה בקורס ושהמשקל הצבור של‬
‫המטלות האחרות שהוגשו‪ ,‬מגיע למי‪‬ימום ה‪‬דרש‪.‬‬

‫זכרו! ציון סופי מחושב רק לסטוד‪‬טים שעברו את בחי‪‬ת הגמר בציון ‪ 60‬ומעלה‬
‫והגישו מטלות כ‪‬דרש באותו קורס‪.‬‬

‫ח‬
‫‪ .3‬הת‪‬אים לקבלת ‪‬קודות זכות בקורס‬
‫א‪ .‬הגשת שתי מטלות החובה )הרצה(‪) ,‬ממ"ן ‪ 14‬וממ"ן ‪.(18‬‬
‫ב‪ .‬הגשת שלושה ממ"‪‬ים לפחות מתוך ששת הממ"‪‬ים הרגילים‪.‬‬
‫ציון של ‪ 60‬ומעלה בבחי‪‬ת הגמר ובקורס‪.‬‬ ‫ג‪.‬‬

‫לתשומת לבכם‪:‬‬
‫מדי‪‬יות קורס זה היא לאשר הז‪‬ת ציון אפס במטלות שלא הוגשו כ‪‬דרש בקורס‪.‬‬
‫סטוד‪‬טים אשר לא הגישו את מכסת המטלות המי‪‬ימאלית לעמידה בדרישות הקורס ולקבלת‬
‫זכאות להיבחן‪ ,‬ומבקשים שמטלות חסרות יוז‪‬ו בציון אפס‪ ,‬יפ‪‬ו למוקד הפ‪‬יות והמידע‬
‫באתר שאילתא ‪http://www.openu.ac.il/sheilta‬‬ ‫בטלפון ‪ 09-7782222‬או יעדכ‪‬ו בעצמם‬
‫קורסים ‪ ‬ציו‪‬י מטלות ובחי‪‬ות ‪ ‬הז‪‬ת ציון ‪ 0‬למטלות רשות שלא הוגשו‪.‬‬
‫יש לקחת בחשבון כי מטלות אשר יוזן להן ציון אפס ישוקללו בחישוב הציון הסופי ובכך יורידו‬
‫ציון זה ולא ‪‬יתן יהיה להמירן במטלות חלופיות במועד מאוחר יותר‪ .‬על כן קיימת אפשרות‬
‫שסטוד‪‬ט אשר יעבור את הבחי‪‬ה בהצלחה ייכשל בקורס )כשהממוצע המשוקלל של המטלות‬
‫והבחי‪‬ה יהיה ‪‬מוך מ‪.(60 -‬‬

‫כלל זה אי‪‬ו חל על מטלות חובה או על מטלות ש‪‬קבע עבורן ציון מי‪‬ימום‪.‬‬

‫ט‬
‫י‬
‫מטלת מ‪‬חה )ממ"ן( ‪11‬‬
‫הקורס‪ - 20433 :‬מב‪‬י ‪‬תו‪‬ים‬
‫חומר הלימוד למטלה‪ :‬פרקים ‪1,2‬‬
‫משקל המטלה‪ 3 :‬קודות‬ ‫מספר השאלות‪5 :‬‬
‫מועד אחרון להגשה‪30.10.2021 :‬‬ ‫‪2022‬א‬ ‫סמסטר‪:‬‬
‫)אב(‬

‫קיימות שתי חלופות להגשת מטלות‪:‬‬


‫‪ ‬שליחת מטלות באמצעות מערכת המטלות המקוו‪‬ת באתר הבית של הקורס‬
‫‪ ‬שליחת מטלות באמצעות הדואר או הגשה ישירה למ‪‬חה במפגשי הה‪‬חיה‬
‫הסבר מפורט ב"‪‬והל הגשת מטלות מ‪‬חה"‬

‫)‪ 15‬קודות(‬ ‫שאלה ‪1‬‬


‫‪‬תון מערך ‪ A‬בגודל ‪.n‬‬

‫א‪ .‬כתבו אלגוריתם איטרטיבי המקבל כקלט את המערך ‪ A‬ומחזיר את הערך המי‪‬ימלי‬ ‫)‪1‬‬
‫והערך המקסימלי במערך‪.‬‬ ‫‪‬ק'(‬
‫האלגוריתם צריך להחזיר זוג ערכים )‪ (a, b‬כך ש‪ a-‬הוא המי‪‬ימום ו‪ b-‬הוא‬
‫המקסימום‪.‬‬

‫חשבו במדוייק את זמן הריצה של האלגוריתם‪ ,‬שורה אחר שורה‪.‬‬ ‫ב‪.‬‬ ‫)‪2‬‬
‫ה‪‬ח כי משך ביצועה של כל הוראה בסיסית הוא יחידת זמן אחת‪.‬‬ ‫‪‬ק'(‬

‫תארו את המקרה הטוב ביותר והמקרה הגרוע ביותר עבור האלגוריתם שכתבת‬ ‫ג‪.‬‬ ‫)‪3‬‬
‫ו‪‬תח את סיבוכיות זמן הריצה של כל אחד מהם‪.‬‬ ‫‪‬ק'(‬

‫כתבו אלגוריתם רקורסיבי לביצוע המשימה המתוארת בסעיף א'‪ ,‬תוך שימוש‬ ‫ד‪.‬‬ ‫)‪5‬‬
‫בגישת הפרד ומשול‪.‬‬ ‫‪‬ק'(‬
‫יש לחלק )בכל שלב( את הבעיה לשתי תת‪-‬בעיות באותו גודל )עד כדי הפרש של ‪. ( 1‬‬

‫ה‪ .‬כתבו ‪‬וסחת ‪‬סיגה המתארת את זמן הריצה של האלגוריתם שכתבת בסעיף ד'‪.‬‬ ‫)‪4‬‬
‫‪‬ק'(‬

‫‪1‬‬
‫)‪ 24‬קודות ‪ 6 :‬ק' לכל סעיף(‬ ‫שאלה ‪2‬‬
‫‪‬תו‪‬ה סדרה ‪ a1 ,...,a n‬של ‪ n‬מספרים שלמים‪.‬‬

‫א‪ .‬כתבו אלגוריתם המקבל את הסדרה ומחזיר את ההפרש המקסימלי בין ש‪‬י איברים‬
‫כלשהם בסדרה‪.‬‬

‫ב‪ .‬כמה פעולות השוואה מבצע האלגוריתם שלך במקרה הגרוע ובמקרה הטוב ביותר?‬

‫ג‪ .‬תארו אלגוריתם המקבל את הסדרה ומחזיר את ההפרש המי‪‬ימלי בין ש‪‬י איברים‬
‫כלשהם בסדרה‪.‬‬

‫ד‪ .‬תחו את סיבוכיות זמן הריצה של האלגוריתם שכתבת בסעיף ג'‪.‬‬

‫)‪ 21‬קודות(‬ ‫שאלה ‪3‬‬


‫להלן מתואר אלגוריתם למיון ‪ n‬מספרים המאוחס‪‬ים במערך ‪ ,A‬ה‪‬קרא מיון בחירה )‪:(Selection Sort‬‬

‫תחילה מוצאים את האיבר הקטן ביותר ב‪ A -‬ומאחס‪‬ים אותו בתא הראשון במערך אחר‪.B ,‬‬
‫לאחר מכן מוצאים את האיבר הש‪‬י הקטן ביותר ב‪ A -‬ומאחס‪‬ים אותו בתא הש‪‬י של ‪.B‬‬
‫ממשיכים באותו אופן עד שכל האיברים ב‪ A -‬מצאים ב‪.B -‬‬

‫א‪ .‬ש‪‬ו את אלגוריתם מיון בחירה כך שלא יהיה צורך במערך העזר ‪.B‬‬ ‫)‪ 6‬ק'(‬

‫רשמו במו‪‬חי הסימון ‪ ‬את זמן הריצה של האלגוריתם שכתבת במקרה הטוב‬ ‫ב‪.‬‬ ‫)‪ 6‬ק'(‬
‫ביותר ובמקרה הגרוע ביותר‪.‬‬

‫‪‬יח כעת שהמטרה היא להחזיר בסדר ממויין את ‪ k‬הערכים הקט‪‬ים ביותר מבין‬ ‫ג‪.‬‬ ‫)‪ 4‬ק'(‬
‫‪ n‬הערכים המאוחס‪‬ים במערך ‪. (1  k  n) A‬‬
‫מהו השי‪‬וי שיש לבצע באלגוריתם מיון בחירה )המקורי( כדי שיתאים לפתרון‬
‫בעיה זו?‬

‫‪‬תחו את זמן הריצה של האלגוריתם שכתבת בסעיף ג' כפו‪‬קציה של ‪ n‬ו‪k -‬‬ ‫ד‪.‬‬ ‫)‪ 5‬ק'(‬
‫במקרה הטוב ביותר ובמקרה הגרוע ביותר‪.‬‬

‫המשך המטלה בעמוד הבא‬

‫‪2‬‬
‫)‪ 20‬קודות(‬ ‫שאלה ‪4‬‬
‫‪‬תון מערך ‪ A‬בגודל ‪ n‬המכיל מספרים‪.‬‬
‫ב‪‬וסף לכך ‪‬תון מערך ‪ B‬בגודל ‪ m‬ובו ‪‬מצאים האי‪‬דקסים של קצות הקטעים שהי‪‬ם כבר ממויי‪‬ים‬
‫במערך ‪:A‬‬
‫הקטע במערך ‪ A‬מ‪ A[1]-‬עד ]]‪ A[B[1‬ממויין; באופן דומה הקטע מ‪ A[B[1]+1]-‬עד ]]‪ A[B[2‬ממויין‬
‫וכך גם הקטע מ‪ A[B[2]+1]-‬עד ]]‪ A[B[3‬וכן הלאה עד הקטע מ‪ A[B[m-1]+1]-‬עד ]]‪.A[B[m‬‬
‫גם קטע באורך ‪ 1‬יכול להופיע כקטע ממויין‪.‬‬

‫כתבו אלגוריתם המקבל כקלט את המערכים ‪ A‬ו‪ B-‬ואת גדליהם וממיין את המערך ‪.A‬‬

‫‪A = 1 3 2 5 10 3 7 6 1 20 21 100‬‬ ‫דוגמת מערכי קלט‪:‬‬


‫‪B = 2 5 7 8 12‬‬

‫)‪ 20‬קודות(‬ ‫שאלה ‪5‬‬

‫‪‬תון מערך בעל ‪ M‬איברים‪ n .‬האיברים הראשו‪‬ים בו מכילים את הערך ‪ n  M  1‬והשאר‬


‫מכילים ערך ‪ n) 0‬אי‪‬ו ידוע(‪.‬‬
‫כמובו אלגוריתם יעיל למציאת ‪ .n‬סיבוכיות זמן הריצה הדרושה היא )‪.O(lgn‬‬

‫הדרכה‪ :‬שים לב לכך שביצוע חיפוש בי‪‬רי על המערך ה‪‬תון )כולו( אי‪‬ו הפתרון ה‪‬כון‪.‬‬
‫יש למצוא תת‪-‬מערך )של המערך ה‪‬תון( בגודל )‪ O(n‬ובו לבצע חיפוש בי‪‬רי‪.‬‬
‫לבסוף יש ל‪‬תח את סיבוכיות האלגוריתם שכתבת כדי להראות שהוא עומד בדרישה שבשאלה‪.‬‬

‫‪3‬‬
4
‫מטלת מ‪‬חה )ממ"ן( ‪12‬‬
‫הקורס‪ - 20433 :‬מב‪‬י ‪‬תו‪‬ים‬
‫חומר הלימוד למטלה‪ :‬פרקים ‪6 ,3‬‬
‫משקל המטלה‪ 4 :‬קודות‬ ‫מספר השאלות‪3 :‬‬
‫מועד אחרון להגשה‪13.11.2021 :‬‬ ‫א‪2022‬‬ ‫סמסטר‪:‬‬
‫)אב(‬

‫קיימות שתי חלופות להגשת מטלות‪:‬‬


‫‪ ‬שליחת מטלות באמצעות מערכת המטלות המקוו‪‬ת באתר הבית של הקורס‬
‫‪ ‬שליחת מטלות באמצעות הדואר או הגשה ישירה למ‪‬חה במפגשי הה‪‬חיה‬
‫הסבר מפורט ב"‪‬והל הגשת מטלות מ‪‬חה"‬

‫)‪ 35‬קודות ‪ 7 :‬ק' לכל סעיף(‬ ‫שאלה ‪1‬‬


‫הוכיחו או הפריכו‪:‬‬
‫א‪2n4-5n=O(n4) .‬‬

‫ב‪5n2  10n lg n  O(n3 ) .‬‬


‫ג‪3n =O(2n) .‬‬

‫ד‪n 0.4  (lg 2 n) .‬‬


‫ה‪ .‬אם מתקיים )))‪ lg(f(n)) = O (lg(g(n‬אז בהכרח מתקיים ))‪. f(n) = O(g(n‬‬

‫) ‪ 30‬קודות‪ 15 :‬קודות לכל סעיף(‬ ‫שאלה ‪2‬‬

‫א‪ .‬תון מערך ‪ A‬ובו ]‪ A[2‬ו‪ A[3] -‬הם שורשים של ערימות חוקיות וב‪ A[1]-‬יש ערך בלתי מוגדר‪.‬‬
‫ידוע כי האיבר האחרון )ה‪‬מצא באחת משתי הערימות( הוא ]‪.A[n‬‬
‫הסבירו כיצד ליצור ערימה אחת עם ‪ n  1‬איברים‪.‬‬
‫מהי סיבוכיות זמן הריצה של האלגוריתם?‬

‫ב‪ .‬דון באותה השאלה עם ]‪ .A[i‬כל הערימה "חוקית" )כלומר כל איבר גדול מכל צאצאיו( פרט‬
‫ל‪ A[i]-‬שבו יש ערך לא מוגדר‪.‬‬
‫הסבירו כיצד להפוך את ה"ערימה" לערימה חוקית )עם איבר אחד פחות(‪.‬‬
‫מהי סיבוכיות זמן הריצה של האלגוריתם?‬

‫‪5‬‬
‫)‪ 35‬קודות(‬ ‫שאלה ‪3‬‬

‫ערימה ממויי‪‬ת )‪ (SH‬היא ערימה בה כל איבר קטן מכל האיברים ה‪‬מצאים ברמות שמתחתיו‪.‬‬
‫דוגמה‪:‬‬

‫‪1‬‬

‫‪3‬‬ ‫‪2‬‬

‫‪5‬‬ ‫‪6‬‬ ‫‪4‬‬ ‫‪9‬‬

‫‪71‬‬ ‫‪25‬‬ ‫‪83‬‬ ‫‪20‬‬ ‫‪52‬‬ ‫‪78‬‬

‫תארו אלגוריתם למימוש הפעולה ‪ DEL-MIN-SH‬המוחקת את המי‪‬ימום מערימה ממויי‪‬ת בת ‪n‬‬


‫איברים בסיבוכיות זמן )‪ ,O(n‬כך שלאחר המחיקה היא תישאר ערימה ממויי‪‬ת‪.‬‬

‫הסבירו את ‪‬כו‪‬ות האלגוריתם והראו כי הוא עומד בדרישת הסיבוכיות‪.‬‬

‫‪6‬‬
‫מטלת מ‪‬חה )ממ"ן( ‪13‬‬
‫הקורס‪ - 20433 :‬מב‪‬י ‪‬תו‪‬ים‬
‫חומר הלימוד למטלה‪ :‬פרקים ‪8 ,7‬‬
‫משקל המטלה‪ 3 :‬קודות‬ ‫מספר השאלות‪3 :‬‬
‫מועד אחרון להגשה‪27.11.2021 :‬‬ ‫א‪2022‬‬ ‫סמסטר‪:‬‬
‫)אב(‬

‫קיימות שתי חלופות להגשת מטלות‪:‬‬


‫‪ ‬שליחת מטלות באמצעות מערכת המטלות המקוו‪‬ת באתר הבית של הקורס‬
‫‪ ‬שליחת מטלות באמצעות הדואר או הגשה ישירה למ‪‬חה במפגשי הה‪‬חיה‬
‫הסבר מפורט ב"‪‬והל הגשת מטלות מ‪‬חה"‬

‫)‪ 30‬קודות(‬ ‫שאלה ‪1‬‬

‫‪. 5,2,6,9,7,4,8,4,310‬‬
‫‪,‬‬ ‫א‪ .‬תארו את פעולתה של השגרה ‪ QUICKSORT‬על המערך‬ ‫)‪ 5‬ק'(‬
‫בכל שלב בחר כאיבר ציר את האיבר הראשון בתת‪-‬המערך הרלב‪‬טי‪.‬‬
‫את השלב הראשון של ‪ PARTITION‬הדגם בפירוט‪ .‬בהמשך‪ ,‬אין צורך לפרט את‬
‫אופן פעולת ‪ PARTITION‬אלא להסתמך על הפלט ה‪‬כון שלה במעבר משלב לשלב‪.‬‬

‫סדרו מחדש את איברי המערך המקורי‪ ,‬כך שאם ‪‬פעיל על המערך שיתקבל את‬ ‫ב‪.‬‬ ‫)‪ 12‬ק'(‬
‫האלגוריתם מיון‪-‬מהיר‪ ,‬מספר ההשוואות שהאלגוריתם יבצע יהיה מי‪‬ימלי‪.‬‬

‫כמה פעולות השוואה מבצעת שגרת החלוקה )‪ (PARTITION‬במערך ]‪A[1..n‬‬ ‫ג‪.‬‬ ‫)‪ 13‬ק'(‬
‫הממויין מלכתחילה בסדר יורד?‬
‫הערה‪ :‬מותר לה‪‬יח שאיברי המערך שו‪‬ים זה מזה‪.‬‬

‫)‪ 35‬קודות(‬ ‫שאלה ‪2‬‬


‫פתרו את שאלה ‪ 7-1‬סעיפים א ו‪-‬ה בעמוד ‪ 133-134‬בספר הלימוד‪.‬‬

‫המשך המטלה בעמוד הבא‬

‫‪7‬‬
‫)‪ 35‬קודות(‬ ‫שאלה ‪3‬‬

‫‪‬תו‪‬ות ‪ m‬קבוצות ‪ . S1, S2 ,..., Sm‬כל קבוצה מכילה מספרים שלמים בתחום ‪ 1‬עד ‪.n‬‬
‫‪‬סמן את גודל הקבוצה ה‪ i-‬ב‪. Si -‬‬
‫‪m‬‬
‫‪.‬‬ ‫‪ Si‬‬ ‫‪‬תון כי ‪ n‬‬
‫‪i 1‬‬

‫כתוב אלגוריתם הממיין את כל ‪ m‬הקבוצות )כלומר‪ ,‬האלגוריתם צריך להחזיר ‪ m‬רשימות‬


‫ממויי‪‬ות(‪.‬‬
‫זמן הריצה של האלגוריתם צריך להיות )‪) O(n‬ולא )‪.(O(m∙ n‬‬
‫רמז‪ :‬השתמש במיון‪-‬מ‪‬יה‪.‬‬

‫‪8‬‬
‫מטלת מ‪‬חה )ממ"ן( ‪ - 14‬ממ"ן הרצה‬
‫‪ - 20433‬מב‪‬י ‪‬תו‪‬ים‬ ‫הקורס‪:‬‬
‫חומר הלימוד למטלה‪ :‬פרק ‪1-6‬‬
‫‪ 4‬קודות‬ ‫משקל המטלה‪:‬‬ ‫מספר השאלות‪1 :‬‬
‫‪11.12.2021‬‬ ‫מועד אחרון להגשה‪:‬‬ ‫א‪2022‬‬ ‫סמסטר‪:‬‬

‫קיימות שתי חלופות להגשת מטלות‪:‬‬


‫‪ ‬שליחת מטלות באמצעות מערכת המטלות המקוו‪‬ת באתר הבית של הקורס‬
‫‪ ‬שליחת מטלות באמצעות הדואר או הגשה ישירה למ‪‬חה במפגשי הה‪‬חיה‬
‫הסבר מפורט ב"‪‬והל הגשת מטלות מ‪‬חה"‬

‫בממ"ן זה עליך לכתוב ולהריץ תכ‪‬ית‪ ,‬אשר תמזג רשימות מקושרות ממויי‪‬ות באמצעות‬
‫שימוש בערימה‪.‬‬
‫הקלט לתכ‪‬ית יהיה ‪ k‬סדרות מספרים‪ ,‬שכל אחת מהן ממויי‪‬ת בסדר לא יורד‪.‬‬
‫הפלט של התכ‪‬ית יהיה סדרה ממויי‪‬ת אחת‪.‬‬
‫אם ‪‬סמן את אורכה של הסדרה ה‪-i -‬ית ב‪ , ni -‬אז בסדרת הפלט יהיו ‪ n‬איברים‪ ,‬כאשר‬
‫‪k‬‬
‫‪. n‬‬ ‫‪ ni‬‬
‫‪i 1‬‬

‫אופן פעולת התכ‪‬ית‪:‬‬


‫בשלב הראשון התכ‪‬ית תקרא את המספרים מהקלט‪ ,‬ותכ‪‬יס אותם לרשימות מקושרות‪.‬‬
‫בשלב הבא התכ‪‬ית תב‪‬ה ערימת מי‪‬ימום‪ ,‬אשר תורכב מהאיברים ש‪‬מצאים בראשי‬
‫הרשימות‪) .‬ערימת מי‪‬ימום היא עץ בי‪‬רי כמעט שלם‪ ,‬שבו המספר בכל צומת קטן‬
‫מהמספרים ש‪‬מצאים בב‪‬יו של הצומת‪(.‬‬
‫לאחר מכן תתבצע לולאה‪ ,‬אשר כל איטרציה בה תורכב מהפעולות הבאות‪:‬‬
‫‪ .1‬הוצאת האיבר שבראש הערימה לפלט‪ ,‬והכ‪‬סת האיבר הבא מהרשימה "שלו" לראש‬
‫הערימה‪.‬‬
‫‪ .2‬ארגון מחדש של הערימה‪ ,‬כך שתישמר תכו‪‬ת הערימה‪.‬‬

‫‪9‬‬
‫הערות‪:‬‬
‫הארגון מחדש של הערימה יתבצע באמצעות שגרה ‪‬פרדת‪ ,‬אשר תקבל כפרמטרים את‬ ‫‪‬‬
‫הערימה ואת האי‪‬דקס שממ‪‬ו יש לארגן מחדש את הערימה )במקרה של‪‬ו האי‪‬דקס‬
‫יהיה תמיד ‪.(1‬‬
‫כאשר האיבר שהוצא לפלט היה האיבר האחרון ברשימתו‪ ,‬צריך להקטין ב‪ -1‬את גודל‬ ‫‪‬‬
‫הערימה‪ .‬לשם כך יש להציב בראש הערימה את האיבר שהיה בתחתית הערימה‪ ,‬ואז‬
‫לארגן מחדש את הערימה‪.‬‬

‫הקלט לתכ‪‬ית‪:‬‬
‫כאמור‪ ,‬הקלט יורכב מ‪ k -‬סדרות של מספרים‪ ,‬שכל אחת מהן תהיה ממוי‪‬ת בסדר לא יורד‪.‬‬
‫)‪ k‬יוגדר בתחילת התכ‪‬ית כקבוע לצורך ‪‬וחות כתיבת התכ‪‬ית‪(.‬‬

‫שים לב‪ ,‬שעבור קלטים גדולים אין טעם להקליד יד‪‬ית את ה‪‬תו‪‬ים‪.‬‬
‫מומלץ לכתוב תכ‪‬ית‪ ,‬שהפלט שלה ישמש כקובץ קלט לתכ‪‬ית המיזוג‪ .‬בכתיבת התכ‪‬ית ליצירת‬
‫קובץ הקלט ‪‬יתן לעשות שימוש בפו‪‬קציית ‪.random‬‬

‫דוגמה‪:‬‬

‫עבור הקלט‪:‬‬
‫‪3‬‬ ‫‪7‬‬ ‫‪18‬‬ ‫‪32‬‬
‫‪6‬‬ ‫‪27‬‬ ‫‪35‬‬
‫‪14‬‬ ‫‪28‬‬ ‫‪75‬‬ ‫‪96‬‬ ‫‪107‬‬

‫הפלט יהיה‪:‬‬
‫‪3‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪14‬‬ ‫‪18‬‬ ‫‪27‬‬ ‫‪28‬‬ ‫‪32‬‬ ‫‪35‬‬ ‫‪75‬‬ ‫‪96‬‬ ‫‪107‬‬

‫הרצה‪:‬‬
‫הרץ את התכ‪‬ית על הדוגמה שלעיל‪ ,‬וכן על קלט ‪‬וסף לפי בחירתך‪.‬‬

‫תיעוד‪:‬‬
‫א‪ .‬כתוב תיעוד לתכ‪‬ית בצורה מפורטת ובהירה ככל האפשר )ראה בפרק "ה‪‬חיות לכתיבת‬
‫מטלות הרצה"(‪.‬‬
‫ב‪ .‬הסבר מדוע מייצרת התכ‪‬ית את הפלט המבוקש‪.‬‬

‫יעילות‪:‬‬
‫‪‬תח את סיבוכיות הזמן של התכ‪‬ית כפו‪‬קציה של ‪ n‬ו‪.k -‬‬

‫‪10‬‬
‫מטלת מ‪‬חה )ממ"ן( ‪15‬‬
‫הקורס‪ - 20433 :‬מב‪‬י ‪‬תו‪‬ים‬
‫חומר הלימוד למטלה‪ :‬פרקים ‪10 ,11‬‬
‫משקל המטלה‪ 4 :‬קודות‬ ‫מספר השאלות‪5 :‬‬
‫מועד אחרון להגשה‪25.12.2021 :‬‬ ‫א‪2022‬‬ ‫סמסטר‪:‬‬
‫)אב(‬

‫קיימות שתי חלופות להגשת מטלות‪:‬‬


‫‪ ‬שליחת מטלות באמצעות מערכת המטלות המקוו‪‬ת באתר הבית של הקורס‬
‫‪ ‬שליחת מטלות באמצעות הדואר או הגשה ישירה למ‪‬חה במפגשי הה‪‬חיה‬
‫הסבר מפורט ב"‪‬והל הגשת מטלות מ‪‬חה"‬

‫)‪ 15‬קודות(‬ ‫שאלה ‪1‬‬


‫‪‬תו‪‬ים ש‪‬י מצביעים לשתי רשימות מקושרות‪ .‬שתי הרשימות משותפות החל ממקום מסוים‬
‫שאי‪‬ו ידוע‪ .‬סמן ב‪  1 -‬וב‪  2 -‬את אורכן של רשימה ‪ 1‬ורשימה ‪ ,2‬בהתאמה‪ ,‬מתחילתן ועד לאיבר‬
‫המשותף הראשון‪ .‬יהי ‪  3‬אורכה של הרשימה המקושרת המשותפת‪.‬‬
‫תאר אלגוריתם הרץ בזמן ) ‪ O ( 1   2   3‬המחזיר מצביע לאיבר המשותף הראשון‪.‬‬

‫המשך המטלה בעמודים הבאים‬

‫‪11‬‬
‫)‪ 20‬קודות(‬ ‫שאלה ‪2‬‬
‫מחס‪‬ית ‪‬קראת ממויי‪‬ת אם מתקיים אחד מבין ש‪‬י הת‪‬אים הבאים‪:‬‬
‫)‪ (i‬המחס‪‬ית היא ריקה‪.‬‬
‫)‪ (ii‬האיבר המצוי בראש המחס‪‬ית קטן מכל שאר האיברים במחס‪‬ית‪ ,‬ולאחר שליפתו מתקבלת‬
‫מחס‪‬ית ממויי‪‬ת‪.‬‬

‫‪‬גדיר מיזוג מחס‪‬יות באופן הבא‪:‬‬


‫בהי‪‬תן ‪ t‬מחס‪‬יות ממויי‪‬ות שו‪‬ות‪ ,‬ב‪‬ה מהן מחס‪‬ית אחת ממויי‪‬ת‪ ,‬המכילה את כל האיברים‬
‫של ‪ t‬המחס‪‬יות‪.‬‬

‫א‪ .‬כתוב אלגוריתם למיזוג שתי מחס‪‬יות ‪ Si‬ו‪ S j -‬לתוך מחס‪‬ית ‪. Sk‬‬ ‫)‪ 10‬ק'(‬
‫האלגוריתם אי‪‬ו רשאי להשתמש במחס‪‬יות ‪‬וספות‪ ,‬אך הוא רשאי להרוס את‬
‫תוכן המחס‪‬יות ‪ Si‬ו‪. S j -‬‬
‫לצורך כתיבת האלגוריתם ‪‬יתן להשתמש בפעולות הבסיסיות המוגדרות על‬
‫מחס‪‬ית‪.‬‬
‫בה‪‬חה שמחס‪‬ית ‪ Si‬מכילה ‪ n1‬איברים ומחס‪‬ית ‪ S j‬מכילה ‪ n2‬איברים‪ ,‬מהו‬ ‫ב‪.‬‬ ‫)‪ 3‬ק'(‬
‫המספר המדוייק של פעולות ‪ PUSH‬שיבצע אלגוריתם המיזוג שלך?‬

‫לצורך מיזוג שלוש מחס‪‬יות משתמשים באלגוריתם מסעיף א' כשגרה‪.‬‬ ‫ג‪.‬‬ ‫)‪ 4‬ק'(‬
‫בה‪‬חה שגדלי המחס‪‬יות הם ‪ n1, n2 , n3‬כך ש‪ , n1  n2  n3 -‬באיזה סדר תבצע‬
‫את המיזוג כך שהמספר הכולל של פעולות ‪ PUSH‬שיתבצעו יהיה מי‪‬ימלי?‬
‫הצע דרך למזג ‪ t‬מחס‪‬יות בסיבוכיות זמן מי‪‬ימלית‪.‬‬ ‫ד‪.‬‬ ‫)‪ 3‬ק'(‬
‫)רמז‪ :‬היעזר באלגוריתם שבסעיף א'(‪.‬‬
‫‪‬תח את סיבוכיות הזמן של האלגוריתם שהצעת‪.‬‬

‫)‪ 20‬קודות(‬ ‫שאלה ‪3‬‬

‫פתור את תרגיל ‪ 10.1-6‬מספר הלימוד )עמ' ‪.(171‬‬

‫המשך המטלה בעמודים הבאים‬

‫‪12‬‬
‫)‪ 20‬קודות(‬ ‫שאלה ‪4‬‬

‫תהא ‪ T‬טבלת גיבוב בגודל ‪ ,m‬שבה הת‪‬גשויות ‪‬פתרות באמצעות מיעון פתוח‪.‬‬
‫האלגוריתם הבא מחפש מקום פ‪‬וי בטבלה ‪ T‬עבור המפתח ‪:key‬‬
‫)‪SEARCH (T, key‬‬
‫)‪i:=h(key‬‬
‫‪j:=0‬‬
‫‪while (T[i].k < > nilkey) and (j<m) do‬‬
‫‪begin‬‬
‫‪j:=j+1‬‬
‫‪i:=(i+j) mod m‬‬
‫‪end‬‬
‫‪if T[i].k = nilkey‬‬
‫‪then return i‬‬
‫)'‪else error ('hash table overflow‬‬

‫הערות‪:‬‬
‫‪ h‬היא פו‪‬קצית גיבוב שהטווח שלה הוא הקבוצה }‪{0,1,...,m-1‬‬ ‫‪‬‬
‫‪ T[i].k‬הוא שדה המפתח במקום ‪ i‬בטבלה‪.‬‬ ‫‪‬‬
‫הערך ‪ nilkey‬בשדה המפתח מציין מקום פ‪‬וי‪.‬‬ ‫‪‬‬
‫א‪ .‬הדגם את אופן פעולת האלגוריתם על טבלה ‪ T‬בגודל ‪ ,8‬שבה רק המקום ]‪ T[4‬הוא פ‪‬וי‪.‬‬
‫ה‪‬ח ש‪ .h(key)=0 -‬האם האלגוריתם יצליח למצוא את המקום הפ‪‬וי בטבלה?‬
‫ב‪ .‬מהי פו‪‬קצית הגיבוב שבה משתמש האלגוריתם?‬
‫האם זו פו‪‬קציה טובה? האם יש לה יתרון על‪-‬פ‪‬י בדיקה לי‪‬ארית?‬
‫‪‬מק את תשובתך!‬

‫שאלה ‪ 25) 5‬קודות(‬


‫בסופרמרקט ‪‬מכרים ‪ n‬מוצרים שו‪‬ים‪ .‬על כל מוצר מוטבע ברקוד‪ ,‬שהוא מחרוזת בת ‪10‬‬
‫ספרות‪ .‬סמן את קבוצת כל המוצרים ב‪.S-‬‬
‫תכ‪‬ו מב‪‬ה ‪‬תו‪‬ים‪ ,‬שיאפשר לבצע על קבוצת המוצרים ‪ S‬את הפעולות הבאות‪:‬‬
‫)‪ : INSERT (S, x‬הוספת המוצר ‪ x‬ל‪ ;S-‬תוחלת זמן ביצוע )‪; O(1‬‬
‫)‪ :DELETE (S, x‬הוצאת המוצר ‪ x‬מ‪ ;S-‬תוחלת זמן ביצוע )‪; O(1‬‬
‫)‪ : PRICE (S, b‬החזרת מחירו של המוצר ה‪‬ושא את הברקוד ‪ ; b‬תוחלת זמן ביצוע )‪; O(1‬‬
‫)‪ : DISCOUNT (S, p‬הקט‪‬ה ב‪ p%-‬של מחירם של כל המוצרים; תוחלת זמן ביצוע )‪; O(1‬‬

‫תארו את מב‪‬ה ה‪‬תו‪‬ים המוצע והסבירו בקצרה איך תתבצע כל פעולה‪.‬‬

‫‪13‬‬
14
‫מטלת מ‪‬חה )ממ"ן( ‪16‬‬
‫‪ - 20433‬מב‪‬י ‪‬תו‪‬ים‬ ‫הקורס‪:‬‬

‫חומר הלימוד למטלה‪ :‬פרק ‪ ,12‬הפרק במדריך הלמידה על עצי ‪AVL‬‬

‫‪ 4‬קודות‬ ‫משקל המטלה‪:‬‬ ‫מספר השאלות‪3 :‬‬


‫מועד אחרון להגשה‪08.01.2022 :‬‬ ‫א‪2022‬‬ ‫סמסטר‪:‬‬
‫)אב(‬

‫קיימות שתי חלופות להגשת מטלות‪:‬‬


‫‪ ‬שליחת מטלות באמצעות מערכת המטלות המקוו‪‬ת באתר הבית של הקורס‬
‫‪ ‬שליחת מטלות באמצעות הדואר או הגשה ישירה למ‪‬חה במפגשי הה‪‬חיה‬
‫הסבר מפורט ב"‪‬והל הגשת מטלות מ‪‬חה"‬

‫)‪ 22‬קודות(‬ ‫שאלה ‪1‬‬


‫הכ‪‬ס את האותיות הבאות )משמאל לימין( לעץ חיפוש בי‪‬רי מאוזן‪:‬‬
‫‪a,‬‬ ‫‪z,‬‬ ‫‪b,‬‬ ‫‪y,‬‬ ‫‪c,‬‬ ‫‪x,‬‬ ‫‪d‬‬
‫בכל שלב אזן את העץ במידת הצורך‪.‬‬
‫הערות‪ :‬העץ ההתחלתי הוא ריק‪.‬‬
‫הסדר בין האותיות הוא הסדר האלפא‪-‬ביתי הרגיל‪.‬‬

‫שאלה ‪ 48) 2‬קודות(‬

‫עץ תחילי )‪, Preorder Tree‬בקיצור ‪ (PT‬הוא עץ בי‪‬רי שבצמתיו מאוחס‪‬ים מפתחות )מספרים(‬
‫שו‪‬ים זה מזה‪ .‬המפתחות מסודרים לפי סדר ה‪ ,preorder -‬כלומר הדפסתם תוך סיור ‪preorder‬‬
‫היא סדרה ממוי‪‬ת עולה‪.‬‬
‫א‪ .‬השלם את המשפט כך שיתקבל ת‪‬אי שקול לכך שעץ בי‪‬רי הוא ‪) PT‬הקף בעיגול את‬
‫בחירתך והשלם את החסר(‪:‬‬
‫עץ בי‪‬רי הוא ‪ PT‬אם ורק אם מתקיימים ש‪‬י הת‪‬אים הבאים‪:‬‬

‫‪,‬‬ ‫כל קודקוד ‪ v‬בעץ קטן‪/‬גדול מ‬

‫‪.‬‬ ‫קטן‪/‬גדול מ‬ ‫וגם‬

‫‪15‬‬
‫ב‪ .‬כתוב אלגוריתם לחיפוש איבר בעץ תחילי‪ ,‬בסיבוכיות זמן )‪ O(h‬כאשר ‪ h‬הוא גובה העץ‪.‬‬
‫הסבר את תשובתך‪.‬‬

‫כתוב אלגוריתם המוחק איבר ‪ x‬בעץ תחילי‪ ,‬כך שהעץ המתקבל לאחר המחיקה גם הוא‬ ‫ג‪.‬‬
‫‪ .PT‬על האלגוריתם לפעול בסיבוכיות זמן של )‪ O(h‬כאשר ‪ h‬הוא גובה העץ‪.‬‬
‫הסבר את תשובתך‪.‬‬

‫ד‪ .‬תאר )במלים( אלגוריתם ההופך ‪ PT‬לעץ חיפוש בי‪‬רי בסיבוכיות זמן )‪ ,O(n‬כאשר ‪ n‬הוא‬
‫מספר הצמתים ב‪.PT-‬‬

‫ה‪ .‬האם לכל ‪ n‬קיים ‪ PT‬בן ‪ n‬איברים שהוא גם עץ חיפוש בי‪‬רי?‬


‫אם כן‪ ,‬צייר אותו; אם לא ‪‬מק מדוע לא‪.‬‬

‫האם ‪‬יתן להפוך כל עץ חיפוש בי‪‬רי ל‪ PT-‬באמצעות רוטציות בלבד?‬ ‫ו‪.‬‬


‫אם כן‪ ,‬מק; אם לא‪ ,‬הסבר מדוע לא ‪‬יתן לעשות זאת‪.‬‬
‫רמז‪ :‬היעזר בתשובתך לסעיף הקודם‪.‬‬

‫)‪ 30‬קודות(‬ ‫שאלה ‪3‬‬


‫א‪ .‬הצע מב‪‬ה ‪‬תו‪‬ים‪ ,‬אשר יכיל מפתחות שהם מספרים שלמים‪ ,‬ואשר באמצעותו‬ ‫)‪ 15‬ק'(‬
‫‪‬יתן יהיה לממש את הפעולות הבאות בצורה יעילה ככל האפשר‪:‬‬

‫הכ‪‬ס את ‪ x‬ל‪. S -‬‬ ‫‪-‬‬ ‫)‪INSERT (S , x‬‬


‫מחק את ‪ x‬ל‪. S -‬‬ ‫‪-‬‬ ‫)‪DELETE (S , x‬‬
‫)‪ - FIND-CLOSE (S , x‬אם ‪ x‬מצא ב‪ ,S -‬החזר מצביע לצומת שבו ‪ x‬מצא‪.‬‬
‫אחרת ‪ -‬החזר מצביע לצומת שבו ‪‬מצא המפתח הגדול‬
‫ביותר במב‪‬ה הקטן מ‪) x -‬אם אין מפתח כזה‪ ,‬אז החזר‬
‫‪.(nil‬‬

‫תאר בקצרה איך תתבצע כל פעולה‪.‬‬

‫‪‬סמן ב‪ n -‬את מספר האיברים ה‪‬מצאים במב‪‬ה ה‪‬תו‪‬ים ברגע מסוים‪.‬‬


‫מה תהיה סיבוכיות הזמן של כל פעולה כפו‪‬קציה של ‪?n‬‬

‫כתוב אלגוריתם לביצוע הפעולה )‪.FIND-CLOSE (S , x‬‬ ‫ב‪.‬‬ ‫)‪ 15‬ק'(‬

‫‪16‬‬
‫מטלת מ‪‬חה )ממ"ן( ‪17‬‬
‫‪ - 20433‬מב‪‬י ‪‬תו‪‬ים‬ ‫הקורס‪:‬‬
‫חומר הלימוד למטלה‪ :‬אלגוריתמים בגרפים‬
‫‪ 4‬קודות‬ ‫משקל המטלה‪:‬‬ ‫מספר השאלות‪3 :‬‬
‫‪22.01.2022‬‬ ‫מועד אחרון להגשה‪:‬‬ ‫א‪2022‬‬ ‫סמסטר‪:‬‬
‫)אב(‬

‫קיימות שתי חלופות להגשת מטלות‪:‬‬


‫‪ ‬שליחת מטלות באמצעות מערכת המטלות המקוו‪‬ת באתר הבית של הקורס‬
‫‪ ‬שליחת מטלות באמצעות הדואר או הגשה ישירה למ‪‬חה במפגשי הה‪‬חיה‬
‫הסבר מפורט ב"‪‬והל הגשת מטלות מ‪‬חה"‬

‫)‪ 32‬קודות(‬ ‫שאלה ‪1‬‬


‫הוכיחו‪:‬‬
‫בהי‪‬תן גרף לא מכוון )‪ ,G=(V,E‬יתן לחלק את צמתיו לשתי קבוצות ‪V1V2= ) V1, V2‬‬
‫‪ ,(V1V2=V‬כך שלכל צמת ב‪ V1-‬לפחות מחצית משכ‪‬יו ב‪ ,V2-‬ולכל צמת ב‪ V2-‬לפחות מחצית‬
‫משכ‪‬יו ב‪.V1-‬‬

‫)‪ 34‬קודות(‬ ‫שאלה ‪2‬‬

‫תארו אלגוריתם שסיבוכיותו )‪ O(m2logn‬שבהי‪‬תן גרף עם מרחקים אי‪-‬שליליים על הקשתות‬


‫מוצא מעגל קצר ביותר בגרף‪.‬‬

‫)‪ 34‬קודות(‬ ‫שאלה ‪3‬‬


‫הוכיחו או הפריכו את הטע‪‬ה הבאה‪:‬‬
‫בכל גרף קשיר ולא מכוון בעל שלושה צמתים לפחות‪ ,‬יש צמת שהסרתו לא תפגע בקשירות הגרף‪.‬‬
‫כלומר‪ :‬אם ‪‬סיר את הצמת ה‪"‬ל ואת כל הקשתות ש‪‬וגעות בו‪ ,‬הגרף ישאר קשיר‪.‬‬

‫‪17‬‬
18
‫מטלת מ‪‬חה )ממ"ן( ‪ -18‬ממ"ן הרצה‬
‫הקורס‪ - 20433 :‬מב‪‬י ‪‬תו‪‬ים‬
‫חומר הלימוד למטלה‪ :‬פרקים ‪ ,1-13‬פרק ח' במדריך הלמידה‬
‫משקל המטלה‪ 4 :‬קודות‬ ‫מספר השאלות‪1 :‬‬
‫מועד אחרון להגשה‪26.2.2022 :‬‬ ‫א‪2022‬‬ ‫סמסטר‪:‬‬
‫)אב(‬

‫קיימות שתי חלופות להגשת מטלות‪:‬‬


‫‪ ‬שליחת מטלות באמצעות מערכת המטלות המקוו‪‬ת באתר הבית של הקורס‬
‫‪ ‬שליחת מטלות באמצעות הדואר או הגשה ישירה למ‪‬חה במפגשי הה‪‬חיה‬
‫הסבר מפורט ב"‪‬והל הגשת מטלות מ‪‬חה"‬

‫מטרת הפרויקט היא לכתוב תכ‪‬ית שמ‪‬הלת ספרייה‪.‬‬


‫לכל מ‪‬וי בספרייה יש‪‬ם המאפיי‪‬ים הבאים‪ :‬שם משפחתו‪ ,‬מספר הזהות שלו וקודי הספרים‬
‫שברשותו )כל קוד מורכב משתי אותיות וארבע ספרות(‪.‬‬
‫לכל לקוח יש לכל היותר ‪ 10‬ספרים בו‪-‬זמ‪‬ית‪.‬‬
‫שמות משפחה עשויים‪ ,‬כמובן‪ ,‬לחזור‪ .‬מספרי זהות וקודים של ספרים אי‪‬ם חוזרים על עצמם‪.‬‬

‫הקלט הבסיסי לתכ‪‬ית הוא אוסף של שורות‪ .‬בכל שורה יש הודעה או שאילתה‪.‬‬
‫עליך לבחור מב‪‬י ‪‬תו‪‬ים יעילים לביצוע השי‪‬ויים ה‪‬דרשים ושליפת המידע‪.‬‬

‫קלט‬
‫הודעות קלט אפשריות‪:‬‬
‫‪ .1‬הודעה על השאלת ספר‬
‫‪Baraq‬‬ ‫‪112540783‬‬ ‫‪AB1132‬‬ ‫‪+‬‬ ‫למשל‪:‬‬
‫משמעות‪ :‬ברק‪ ,‬בעל ת"ז ‪ ,112540783‬שואל ספר שהקוד שלו ‪. AB1132‬‬

‫‪ .2‬הודעה על החזרת ספר‬


‫‪Baraq‬‬ ‫‪112540783‬‬ ‫‪AB1132‬‬ ‫–‬ ‫למשל‪:‬‬
‫משמעות‪ :‬ברק ה‪"‬ל מחזיר את הספר שהקוד שלו ‪. AB1132‬‬

‫‪ .3‬הודעה על מ‪‬וי חדש‬


‫‪+‬‬ ‫‪Yizhaqi‬‬ ‫‪356241173‬‬ ‫למשל‪:‬‬
‫משמעות‪ :‬לקוח חדש‪ ,‬יצחקי‪ ,‬בעל מספר זהות ‪ ,356241173‬הצטרף לספרייה‪.‬‬
‫‪ .4‬הודעה על סיום מ‪‬וי‬
‫–‬ ‫‪Yizhaqi‬‬ ‫‪356241173‬‬ ‫למשל‪:‬‬
‫משמעות‪ :‬הלקוח ה‪"‬ל מסיים את מ‪‬ויו בספרייה‪.‬‬

‫‪19‬‬
‫שאילתות קלט אפשריות‪:‬‬
‫‪ .1‬אילו ספרים ‪‬מצאים ברשותו של המ‪‬וי שמספר הזהות שלו רשום בשאילתה‪:‬‬
‫‪? 112540783‬‬
‫‪ .2‬אצל איזה מ‪‬וי ‪‬מצא הספר שהקוד שלו רשום בשאילתה‪:‬‬
‫‪? AX2713‬‬

‫‪ .3‬מיהם כל הלקוחות שמחזיקים כרגע במספר הרב ביותר של ספרים‪:‬‬


‫!?‬

‫פלט‬
‫יש להדפיס כל שי‪‬וי בצורה ברורה ומדויקת‪.‬‬
‫יש להדפיס בצורה ברורה כל שאילתה‪ ,‬ולאחריה את התשובה עליה‪.‬‬

‫הערה‪ :‬ה‪‬יחו כי הקלט חוקי‪.‬‬


‫חריגה אחת ויחידה תיתכן‪ :‬לקוח שכבר שאל ‪ 10‬ספרים מ‪‬סה לשאול ספר ‪‬וסף‪.‬‬
‫במקרה זה על התכ‪‬ית להודיע שאי‪-‬אפשר לבצע את ההוראה‪.‬‬

‫דרישה ‪‬וספת‬
‫‪‬תח את סיבוכיות זמן הריצה של האלגוריתמים השו‪‬ים שבהם התכ‪‬ית משתמשת‪.‬‬

‫‪20‬‬

You might also like