תרגיל בית מספר 1#

מסמכים קשורים
תרגיל בית מספר 1#

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

אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, אביב 2019 תרגיל בית מספר - 2 להגשה עד 02/04/2019 בשעה 23:55 קיראו בעיון את הנחיות הע

שיעור 1

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

תרגיל בית מספר 1#

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

מס' ת"ז מס' מחברת מבחן בקורס מבוא מורחב למדעי המחשב CS1001.py ביה"ס למדעי המחשב, אונ' תל אביב סמסטר א' , מועד ב, 23/3/2018 מרצים: דניאל דויטש,

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

מבוא למדעי המחשב - חובלים

PRESENTATION NAME

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

שאלהIgal : מערכים דו מימדיים רקורסיה:

Microsoft Word B

תרגיל 9 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. תהי L השפה בעלת סימן פונקצייה דו מקומי G, סימן פונקציה חד מקומי T, סימן יחס תלת מקומי.c, d וקבועים L

הגשה תוך שבוע בשעת התרגול

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

תוכן העניינים

מועד: א בחינה סופית במתמטיקה דיסקרטית משך הבחינה: 2 1 שעות מרצה: פרופ' תאופיק מנסור תאריך: סמסטר: א תשע"ח m 2 הוראות לנבחן: )1( הבחינה מו

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

שאלהIgal : מערכים דו מימדיים רקורסיה:

מטלת מנחה (ממ"ן) 11 הקורס: חשבון אינפיניטסימלי II חומר הלימוד למטלה: יחידות 2,1 4 מספר השאלות: 7 משקל המטלה: נקודות סמסטר: ב 2007 מו

שאלהIgal : מערכים דו מימדיים רקורסיה:

ex1-bash

מבוא לאנליזה נומרית na191 Assignment 2 solution - Finding Roots of Nonlinear Equations y cos(x) שאלה 1 היכן נחתכים הגרפים של? y x 3 1 ושל ממש פתרונות

תוכן העניינים

מבוא למדעי המחשב - חובלים

מבוא לתכנות ב- JAVA תרגול 7

תכנון אלגוריתמים עבודת בית 4: תכנון אלגוריתמים תאריך הגשה: 02: , בצהריים,תא מספר 66 בקומת כניסה של בניין 003 מתרגל אחראי: אורי 0

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

Microsoft Word - ExamA_Final_Solution.docx

Microsoft Word - c_SimA_MoedB2005.doc

. [1,3] ו = 0 f(3) f(1) = עמוד 1 מתוך 6 דר' ז. אולחא מס' הקורס 9711 חדו''א הנ מכונות 1 f ( x) = ( x 1)( x 2)( x 3) c= f c = c (1,3), c תשובות I 1) פונ

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

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

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

234114

Microsoft Word - c_SimA_MoedA2006.doc

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

הגשה תוך שבוע בשעת התרגול

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

ב ה. ד. ג. ב. ב. אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, חורף :22 תרגיל בית מספר 6 - להגשה עד 66 בינואר 3162 בשעה קיר

מבוא למדעי המחשב

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

שאלה 2. תכנות ב - CShell

מקביליות

סדנת תכנות ב C/C++

Slide 1

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

מבחן בקורס מבוא מורחב למדעי המחשב, CS1001.py ביה"ס למדעי המחשב, אונ' תל אביב סמסטר א' 2019, מועד א', 27/01/2019 מרצים: פרופ' דניאל דויטש, ד"ר אמיר רוב

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

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

מבנים בדידים וקומבינטוריקה סמסטר אביב תשע"ט מספרי רמזי תרגול 11 הגדרה: (t R = R(s, הוא המספר הטבעי הקטן ביותר כך שבכל צביעה של צלעות הגרף וכחול(, קיים

Microsoft Word - SDAROT 806 PITRONOT.doc

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

Data Structure Assignment no.3 תאריך הגשה: p.m. 11/09/16, 23:59 את העבודה יש להגיש בזוגות במערכת ההגשות.submission system על העבודה להיות מוגשות כקובץ

תכנות מונחה עצמים א' – תש"ע

Slide 1

פייתון

אוניברסיטת בן-גוריון המחלקה למדעי המחשב בוחן במבנים בדידים וקומבינטוריקה פרופ' מתיא כ"ץ, ד"ר עופר נימן, ד"ר סטוארט סמית, ד"ר נתן רובין, גב'

מבוא ללוגיקה ולתורת הקבוצות

תרגול 1

PowerPoint Presentation

חשבון אינפיניטסימלי מתקדם 1

מהוא לתכנות ב- JAVA מעבדה 3

מבוא למדעי המחשב

Microsoft Word - Ass1Bgu2019b_java docx

מדריך למרצים ומתרגלים 1

עב 001 ינואר 12 מועד חורף פתרונות עפר

<4D F736F F D20F4FAF8E5EF20EEE5F2E320E020F1EEF1E8F820E120FAF9F2E3>

2019 שאלות מומלצות לתרגול מס' דיפרנציאביליות של פונקציה סקלרית )המשך(. כלל השרשרת. S = ( x, y, z) z = x + 3y על המשטח מצאו נקודה בה מישור משיק

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

תכנון אלגוריתמים, אביב 1021, תרגול מס' 4 תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (16.1.(CLR ראשית נראה דוגמא: דוגמא: תהינה

מתמטיקה של מערכות

<4D F736F F D20EEF9E5E5E0E5FA20E3E9F4F8F0F6E9E0ECE9E5FA2E646F63>

דף נגזרות ואינטגרלים לשאלון 608 כללים למציאת נגזרת של פונקציה: n 1. y' n x n, y הנגזרת x.1 נכפול בחזקה )נרשום אותה משמאל ל- (. x א. נחסר אחד מהחזקה. ב

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

PowerPoint Presentation

איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl

ייבוא וייצוא של קבצי אקסל וטקסט

Python 2.7 in Hebrew

Slide 1

Microsoft Word - hedva 806-pitronot-2011.doc

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

ðñôç 005 î

תאריך הבחינה 30

Microsoft Word - עבודת פסח לכיתה י 5 יחל.doc

מצגת של PowerPoint

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

מבוא למדעי המחשב

עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה אפריל 5105 קשה בלימודים, קל במבחנים, קל בחיים עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה יש לפתור את כל השאלות

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

Microsoft Word - lec

בס"ד תרגיל 3 מועד אחרון ל כללי בתרגיל זה עליכם לכתוב תוכנה שמדמה מאגר נתונים של חנות. את מוצרי החנות תייצגו באמצעות עצים ורשימות מקושרות יהיה עליכם לנ

מקביליות

פתרונות לדף מס' 5

תמליל:

תרגיל בית מספר - 3 להגשה עד 15 באפריל בשעה 23:55 קיראו בעיון את הנחיות העבודה וההגשה המופיעות באתר הקורס, תחת התיקייה.assignments חריגה מההנחיות תגרור ירידת ציון / פסילת התרגיל. הגשה: תשובותיכם יוגשו בקובץ pdf ובקובץ py בהתאם להנחיות בכל שאלה. השתמשו בקובץ השלד skeleton3.py כבסיס לקובץ ה py אותו אתם מגישים. לא לשכוח לשנות את שם הקובץ למספר ת"ז שלכם לפני ההגשה, עם סיומת.py בסה"כ מגישים שני קבצים בלבד. עבור סטודנטית שמספר ת"ז שלה הוא 012345678 הקבצים שיש להגיש הם hw3_012345678.pdf ו-.hw3_012345678.py הקפידו לענות על כל מה שנשאלתם. תשובות מילוליות והסברים צריכים להיות תמציתיים, קולעים וברורים. להנחיה זו מטרה כפולה: 1. על מנת שנוכל לבדוק את התרגילים שלכם בזמן סביר. 2. כדי להרגיל אתכם להבעת טיעונים באופן מתומצת ויעיל, ללא פרטים חסרים מצד אחד אך ללא עודף בלתי הכרחי מצד שני. זוהי פרקטיקה חשובה במדעי המחש עמ' 1 מתוך 9

שאלה 1 הוכיחו או הפריכו את הטענות הבאות. ציינו תחילה בברור האם הטענה נכונה או לא, ואח"כ הוכיחו / הפריכו באופן פורמלי תוך שימוש בהגדרת O. הנחיה: יש להוכיח / להפריך כל סעיף בלא יותר מ- 4 שורות. הפתרונות הם קצרים, ואינם דורשים מתמטיקה מתוחכמת. אם נקלעתם לתשובה מסורבלת וארוכה, כנראה שאתם לא בכיוון. אלא אם צוין אחרת, log הוא לפי בסיס 2. log (( n 2 2 k=1 (k)) 8 log 2 n = O(n 2 ) 3 ) = O(log 3 n) לכל פונקציה,f(n) אם n),f(n) = O(log אז O(n).2 f(n) = אם (n)) f 1 (n) = O(g 1 וגם (n)) f 2 (n) = O(g 2 אז (n)) f 1 (n) f 2 (n) = O(g 1 (n) g 2 טרנזיטיביות: אם O(g(n)) f(n) = וגם O(h(n)) g(n) = אז O(h(n)) f(n) = סימטריות: g(n) = O(f(n)) אז f(n) = O(g(n)) אם.a.1.2.3.4.5.6 g(n) O(f(n)) אז f(n) = O(g(n)) אם.b.7 הוכיחו: n!).n log n = O(log n רמז: היעזרו בחסם תחתון על סכום חצי מהאיברים )למשל, 1=i log i n log n (. 2 2 לכל אחת מהפונקציות הבאות, נתחו את סיבוכיות זמן ריצתה כתלות ב- n )אורך הרשימה L(. הניחו כי כל פעולה בודדת )ובכלל זה פעולת כתיבה של איבר ברשימה לזיכרון( דורשת (1)O זמן. ציינו את התשובה הסופית, ונמקו. על הנימוק להיות קולע, קצר וברור, ולהכיל טיעונים מתמטיים או הסברים מילוליים, בהתאם לצורך. על התשובה להינתן במונחי ( )O, ועל החסם להיות הדוק ככל שניתן. למשל, אם הסיבוכיות של פונקציה היא O(n) ובתשובתכם כתבתם,O(nlogn) התשובה לא תקבל ניקוד )על אף שפורמלית O הוא חסם עליון בלבד(. def f1(l): n = len(l) for i in range(n): if i in L: L.append(i) return L.1 def f2(l): n = len(l) res = [] for i in range(500, n): for j in range(i,3*i): k=1 while k<n: k*=2 res.append(k) return res.2 עמ' 2 מתוך 9

ג. להלן שתי פונקציות שמקבלות רשימה ואובייקט כלשהו, ומוסיפות את האובייקט לרשימה. def add_to_list_1(lst, item): lst = lst + [item] return lst def add_to_list_2(lst, item): lst += [item] return lst יוסי הריץ את הפקודה הבאה: l = [1,2,3] for e in l: l = add_to_list_1(l, "a") וקיבל כפי שציפה, את הרשימה [ a, a, a,3,1].,2 ואולם, כאשר קרא לפונקציה add_to_list_2 במקום,add_to_list_1 גילה שהתוכנית נכנסת ללולאה אינסופית. הסבירו בקצרה מדוע זה קרה, ומדוע קיים הבדל בין הפעלת שתי הפונקציות. היעזרו במה שלמדנו על מודל הזיכרון של פייתון. עמ' 3 מתוך 9

שאלה 2 תהי :f R R פונקציה רציפה שמקבלת כקלט מספר ממשי ומחזירה כפלט מספר ממשי. בכל הסעיפים הבאים, הניחו כי: קיימים שני מספרים ממשיים a ו- b אשר מקיימים f(b).f(a) < 0 < לכל הקלטים בשאלה )כלומר, a ו- b, ε וקלטי הפונקציה f( בדיוק d ספרות עשרוניות אחרי הנקודה. הניחו כי רמת הדיוק d מספיקה כדי לקיים f(x) ε עבור ה- ε שניתן כקלט. סיבוכיות הזמן עבור הפעלת f על קלט כלשהו הינה (1)O. אין להניח כי הפונקציה f הינה גזירה )או במילים אחרות - אין להשתמש בשאלה זו בשיטת ניוטון רפסון(. I. השלימו בקובץ השלד את הפונקציה find_root_range שמקבלת כקלט פונקציה :f R R רציפה ושני מספרים אשר מקיימים f(b) f(a) < 0 < ומחזירה את השורש של f )עד כדי דיוק של ε( בקטע [b,a] )כלומר, החזירו מספר x המקיים.) f(x) ε על הפתרון להיות בסיבוכיות זמן ריצה נמוך ככל האפשר. דוגמת הרצה: ציינו בקובץ ה- והסבירו בקצרה. >>> f = lambda x: x**2 + x - 1 >>> find_root_range(f, -1, 12, epsilon=1e-4) 0.6180572509765625 pdf מהי הסיבוכיות של הפונקציה שכתבתם כתלות ב- a, b ו- d במונחים אסימפטוטיים.II.I השלימו בקובץ השלד את הפונקציה find_root שמחזירה גם היא את השורש של f עד כדי דיוק של ε. הפעם, הקלט הוא הפונקציה f בלבד. בנוסף, ידוע כעת כי הפונקציה היא מונוטונית עולה ממש, כלומר, עבור כל זוג מספריים ממשיים,x y מתקיים: אם x < y אזי: f(y).f(x) < לפונקציה מונוטונית עולה ממש יש שורש ממשי יחיד: נסמנו ב r, ונניח כי הוא מספר עם d ספרות עשרוניות אחרי הנקודה. על הפונקציה להשתמש בפונקציה find_root_range שכתבתם בסעיף א'. >>> f = lambda x: x**3-100 >>> find_root(f, epsilon=1e-4) 4.641590118408203 דוגמת הרצה: עמ' 4 מתוך 9

ציינו בקובץ ה- pdf מהי הסיבוכיות של הפונקציה שכתבתם כתלות ב- r ו- d במונחים אסימפטוטיים והסבירו בקצרה..III עמ' 5 מתוך 9

שאלה 3.1 בתרגול ראינו מיזוג של m תתי רשימות ממוינות. כעת נכתוב מימוש יעיל יותר מזה שראינו בתרגול. נתאר את אלגוריתם המיון הבא עבור רשימה של n איברים ומספר שלם חיובי k נתון:.2.3 ניצור n רשימות קטנות באורך k כל אחת )למעט הרשימה האחרונה שאולי קטנה יותר( כך שכל איבר k מרשימת הקלט יופיע ברשימה קטנה אחת בדיוק. נמיין כל רשימה קטנה באמצעות מיון בחירה sort(.)selection נמזג את הרשימות הקטנות לרשימה אחת חדשה, וזו תהיה רשימת הפלט. השלימו את הפונקציה (k generate_sorted_blocks(lst, שמקבלת כקלט רשימה lst של n איברים ומספר k n, ומחזירה רשימה חדשה שבה האיבר ה- i הינו הרשימה הקטנה ה- i -ית שמתקבלת משלבים 1 ו- 2 לעיל. כלומר הפלט הינו רשימה של n k כבר ץ השלד(. רשימות קטנות ממויינות. יש להשתמש ב selection_sort מהכיתה ללא שינוי )מופיעה בקוב >>> import random >>> lst = [random.choice(range(1000)) for i in range(10)] >>> lst [610, 906, 308, 759, 15, 389, 892, 939, 685, 565] >>> generate_sorted_blocks(lst, 2) [[610, 906], [308, 759], [15, 389], [892, 939], [565, 685]] >>> generate_sorted_blocks(lst, 3) [[308, 610, 906], [15, 389, 759], [685, 892, 939], [565]] >>> generate_sorted_blocks(lst, 10) [[15, 308, 389, 565, 610, 685, 759, 892, 906, 939]] מהי סיבוכיות זמן הריצה של generate_sorted_blocks כפונקציה של,n. k תנו ביטוי במונחי ( )O הדוק ככל האפשר, ונמקו. ג. ממשו בקובץ השלד את הפונקציה merge_sorted_blocks(lst) שמקבלת כקלט רשימה lst של m רשימות קטנות ממויינות ומחזירה רשימה אחת שמכילה את אוסף כל האיברים מכל הרשימות בסדר ממויין. נסמן ב m את אורך רשימת הקלט, כלומר את מספר הרשימות הקטנות, ונסמן ב t את האורך המקסימלי של רשימה קטנה. על הפתרון להיות מסיבוכיות זמן (m.o(m t log יש להשתמש ב merge מהכיתה ללא שינוי ( הפונקציה מופיעה כבר בקובץ השלד(. >>> import random >>> block_lst1 = [[610, 906], [308, 759], [15, 389], [892, 939], [565, 685]] >>> merge_sorted_blocks(block_lst1) [15, 308, 389, 565, 610, 685, 759, 892, 906, 939] ד. להלן מימוש הפונקציה (k sort_by_block_merge(lst, שמממשת את האלגוריתם הנ"ל: def sort_by_block_merge(lst,k): return merge_sorted_blocks(generate_sorted_blocks(lst, k)) מהי סיבוכיות זמן הריצה הכוללת של sort_by_block_merge כפונקציה של,n? k הסבירו בקצרה. ה. בקרוב נלמד על שיטת מיון יעילה הקרויה merge_sort שממיינת רשימה של n איברים בסיבוכיות זמן. O(nlogn) מהו הערך האסימפטוטי )במונחי (.)O( הגדול ביותר של k כפונקציה של n כך שסיבוכיות זמן הריצה של האלגוריתם הנ"ל )sort_by_block_merge( תהיה זהה לזו של?merge_sort עמ' 6 מתוך 9

שאלה 4 בשאלה זו עליכם לממש את הפונקציה (m count(lst, שמקבלת רשימה ממוינת בסדר עולה lst שכל איבריה הם מספרים שלמים, ומספר שלם m. הפונקציה מחזירה את מספר הפעמים שהאיבר m מופיע ב- lst. ניתן להניח שהקלט תקין. דוגמת הרצה: >>> lst = [0,1,3,3,4] >>> count(lst, 3) 2 השלימו את מימוש הפונקציה בקובץ השלד. על המימוש שלכם להיות בסיבוכיות זמן נמוכה ככל האפשר. ציינו מהי סיבוכיות הזמן במקרה הגרוע ביותר של המימוש שלכם, ביחס למספר האיברים ב- lst ובמונחים אסימפטוטיים. הסבירו בקצרה. עמ' 7 מתוך 9

שאלה 5 בכיתה ראינו את האלגוריתם מיון-בחירה sort( )selection למיון רשימה נתונה. האלגוריתם כזכור רץ בסיבוכיות זמן ) 2 O(n עבור רשימה בגודל n. בקרוב נראה גם אלגוריתם מיון-מהיר יעיל יותר,)quicksort( שרץ בסיבוכיות זמן ממוצעת.O(nlogn) לפעמים, כאשר יש לנו מידע נוסף על הקלט, אפשר למיין בסיבוכיות זמן טובה מזו. למשל, בשאלה זו, נעסוק במיון של רשימה שכל איבריה מוגבלים לתחום מצומצם יחסית: מחרוזות באורך, k עבור 0<k נתון כלשהו, מעל האלפבית a, b, c, d, e שמכיל 5 תווים. ההשוואה בין זוג מחרוזות תהיה לקסיקוגרפית, כלומר השוואה מילונית רגילה. הערות: 1. בשאלה זו אסור להשתמש בפונקציות מיון מובנות של פייתון. 2. בניתוח הסיבוכיות בשאלה זו נניח שהשוואה של זוג מחרוזות באורך k מבצעת בפועל השוואה של התווים של המחרוזות משמאל לימין, ובמקרה הגרוע תהיה מסיבוכיות זמן.O(k) לשם פשטות ניתוח הסיבוכיות נתייחס הן לפעולות אריתמטיות והן לפעולות העתקה של מספרים ממקום למקום בזכרון כפעולות שרצות בזמן קבוע..3 השלימו בקובץ השלד את הפונקציה string_to_int(s) שמקבלת כקלט מחרוזת s באורך k בדיוק שמורכבת מהתווים a, b, c, d, e ומחזירה מספר שלם בין 0 ל 1 k 5 כולל, המייצג את הערך הלקסיקוגרפי היחסי של המחרוזת. על הפונקציה להיות חד-חד-ערכית. סיבוכיות הזמן שלה צריכה להיות.O(k) השלימו בקובץ השלד את הפונקציה (n, int_to_string(k, ההפוכה לזו מסעיף א', שמקבלת כקלט מספר שלם k גדול מ 0, וכן מספר שלם n בין 0 ל 1 k 5 כולל ומחזירה מחרוזת s באורך k בדיוק שמורכבת מהתווים.O(k) גם על פונקציה זו להיות חד-חד-ערכית. סיבוכיות הזמן שלה צריכה להיות.,a,b,c,d e שימו לב שפונקציה זו צריכה לקיים לכל 1 k i 5 :0 string_to_int(int_to_string(k, i)) == i דוגמת הרצה: >>> for i in range(5**3): if string_to_int(int_to_string(3, i))!= i: print("problem with ", i) >>> alphabet = ["a","b","c","d","e"] >>> lst = [x+y+z for x in alphabet for y in alphabet for z in alphabet] >>> for item in lst: if int_to_string(3, string_to_int(item))!= item: print("problem with ", item) >>> #Nothing was printed ג. השלימו בקובץ השלד את הפונקציה (k sort_strings1(lst, שמקבלת כקלט רשימה lst של n מחרוזות כמתואר ומספר חיובי k כך שכל מחרוזת ברשימה הינה באורך k בדיוק. )הניחו כי הקלט תקין ואין צורך לבדוק את עמ' 8 מתוך 9

ד. ה. תקינותו.( על הפונקציה להחזיר רשימה חדשה ממויינת בסדר עולה )ולא לשנות את lst עצמה(. בנוסף לרשימת הפלט שהיא בגודל n כמובן, על הפונקציה להשתמש ברשימת עזר (list) בעלת 5 k איברים. עליכם להשתמש בפונקציות מסעיפים א', ב'. על הפונקציה sort_strings1 להיות מסיבוכיות זמן ) k.o(kn + 5 בקובץ ה pdf הסבירו מדוע הפונקציה מסעיף ג' עומדת בדרישות הסיבוכיות. השלימו בקובץ השלד את הפונקציה (k sort_strings2(lst, שמקבלת קלטים כמו הפונקציה מסעיף ג', ובדומה לפונקציה הקודמת עליה להחזיר רשימה חדשה ממויינת בסדר עולה )ולא לשנות את lst עצמה(. הפעם מותר להשתמש בזכרון עזר מגודל הפונקציה להיות מסיבוכיות זמן kn) 5)O. k O(k), לא כולל רשימת הפלט שעליכם לייצר שגודלה הוא n. על ו. בקובץ ה pdf הסבירו מדוע הפונקציה מסעיף ה' עומדת בדרישות סיבוכיות הזמן והזיכרון. דוגמת הרצה: >>> import random >>> k = 4 >>> lst = ["".join([random.choice(["a", "b", "c", "d", "e"]) for i in range(k)]) for j in range(10)] >>> lst ['aede', 'adae', 'dded', 'deea', 'cccc', 'aacc', 'edea', 'becb', 'daea', 'ccea'] >>> sort_strings1(lst, k) ['aacc', 'adae', 'aede', 'becb', 'cccc', 'ccea', 'daea', 'dded', 'deea', 'edea'] >>> sort_strings2(lst, k) ['aacc', 'adae', 'aede', 'becb', 'cccc', 'ccea', 'daea', 'dded', 'deea', 'edea'] >>> sorted(lst) == sort_strings1(lst, k) True >>> sorted(lst) == sort_strings2(lst, k) True סוף עמ' 9 מתוך 9