שיחה:88-280 תשעג סמסטר א/ארכיון
תרגיל 1
עד כמה צריך לפרט בהוכחת קצבי הגידול (האם ניתן להשתמש בגבולות שהוכחנו באינפי לפני שנתיים?)
תשובה:
אפשר פשוט להשתמש בהגדרה:
[math]\displaystyle{ f(n)=o(g(n)) }[/math] (סימון אחר [math]\displaystyle{ f(n)\ll g(n) }[/math]) אם [math]\displaystyle{ \lim_{n\to\infty}\left|\frac{f(n)}{g(n)}\right|=0 }[/math].
(כלומר g גדלה מהר יותר מ-f)
וככה לדרג את כל הפונקציות
תרגיל 1 שאלה 4
נראה לי שיש טעות באלגוריתם.
בשורה: return j, זה צריך להיות לדעתי return i.
כמו שזה עכשיו הוא תמיד יחזיר את אותו הערך, את n.
אגב, קצת פחות חשוב, אבל צריך להיות רשום A[j]==i במקום a[j]==i
תשובה: נכון, זה צריך להיות return i. אני מעלה מחדש את קובץ התרגיל עם התיקון. תודה
שאלה 1 פונקציה 1
[math]\displaystyle{
e^{\log_d n^3} = e^{3\log_d n} = e^{3\frac{\log_e n}{\log_e d}} = n^{\frac{3}{\log_e d}}
}[/math]
מדוע במקרה זה לא חשוב לדעת את הבסיס של הלוגריתם?
לדוגמא, במידה ו
[math]\displaystyle{
d=\sqrt[100]{e}
}[/math]
אז הפונקציה שייכת ל:
[math]\displaystyle{
O(n^{300})
}[/math]
ואילו אם
[math]\displaystyle{
d=e^3
}[/math]
אז הפונקציה שייכת ל:
[math]\displaystyle{
O(n)
}[/math]
וזה משפיע כמובן על היחס של קצב הגידול שלה לעומת פונקציה 2 לדוגמא.
תשובה:
נכון
בסיס הלוגריתם אינו משנה רק כאשר מדובר בלוגריתם רגיל או לוגריתם בחזקה כלשהי.
אך כאשר מדובר בלוגריתם באקספוננט זה זה כן משנה.
המשך שאלה:
אז איך אני אמור לדרג את הפונקציה הזאת לעומת פונקציות 2,6 או 8 כשהבסיס אינו ידוע?
תשובה: אתם יכולים להניח שהבסיס הוא e, כלומר זה ln. --Jeniiiiibee 11:59, 4 בנובמבר 2012 (IST)
שאלות (טכניות) לגבי תרגיל 2
- לכותבים ב-c++, מהם שמות ההגשה? בקובץ עצמו רשומים אותם שמות הגשה לשני החלקים. שמות הגשה צוינו בתרגיל
- בקבצים עצמם, הפונקצייה שאני צריך להגיש היא פונקציית main? פונקציית ה-main צריכה להיות הראשית בקובץ
- האם צריך להגיש גם מייקפייל? לא, כל התוכנית צריכה להיות בקובץ אחד (אתם מגישים קובץ יחיד)
- בעבור חלק 1 כתוב שאם יש מסלול הוא יחיד, מצד שני בדוגמה השנייה שנתת יש שתי אפשרויות למסלולים (פעם אחת המסלול שנפל, ופעם השנייה המסלול שנפלט בתוספת ה-W האחרונה). האם להניח שאכן יש מסלול אחד? אם אי אפשר להניח זאת, איזה מסלול לפלוט? אפשר להניח שקיים מסלול יחיד. אני אתקן את הדוגמא
- בחלק 1, האם המחסנית חייבת להיות מחסנית של האותיות במבוך, או לחילופין אפשר שהמחסנית תכלול בתוכה מבני נתונים אחרים (למשל, structים בסיסיים או מחרוזות).המחסנית צריכה להכיל את הנקודות של המסלול בלבד
- בחלק 2, בדוגמות - עבור הדוגמה הראשונה, האם הפלט לא אמור להיות 6 (עבור המסלול A -> B -> b -> p -> t -> g), ובדוגמה השנייה, האם הפלט לא אמור להיות 5? כתוב ששתי אותיות זהות לא יכולות להיות צמודות במסלול
תודה מראש.
שאלה על תרגיל 2
בחלק הראשון, מטריצת העזר יכולה להיות של סטראקטים (המכילים כמה נתונים עוזרים?) תודה! לא - מטריצת העזר צריכה להיות מטריצה בינארית (רמז)
דוגמה בחלק 1 של תרגיל 2
הי, האם המטריצה המתקבלת בחלק 1 אמורה להיות ריבועית? אם כן, נראה לי שיש טעות בדוגמה הראשונה... תודה מראש. נכון- הוספתי שורת "#", גם בדוגמא של החלק השני
סוג המחסנית
האם המחסנית חייבת להכיל נתונים מטיפוס char או שניתן להשתמש ב-int יחיד כדי לסמל מיקום? היא אמורה להכיל את המסלול, אז לא צריך char
- אז היא יכולה להכיל סטראקטים (המכילים את מיקומי הנקודות במסלול?)
- לא צריך סטראקט בשביל מיקום, Int יחיד יכול לתת לך מיקום בצורה חח"ע.
- אוקי, תודה
- לא צריך סטראקט בשביל מיקום, Int יחיד יכול לתת לך מיקום בצורה חח"ע.
בדיקה אוטומטית במערכת
הי ג'ניפר,
האם תוכלי להעלות את הקבצים שבהם את משתמשת לבדיקה האוטומטית הראשונית? אני שואל זאת כי כרגע אני לא מקבל את הציון המקסימלי, ואם היית מפרסמת (כפי שעושים בקורסים אחרים) אז זה יוכל לכוון אותי (שאדע במה אני טועה). מה גם שכרגע הציון המקסימלי שהגיעו אליו הוא 40 (מבדיקה עם רבים מהסטודנטים בקורס) ולכן זו בעיה שכנראה חוזרת אצל הרבה מאיתנו ואנחנו לא מוצאים פתרון לה. תודה רבה מראש, ושבת שלום :)
אני צריכה לדבר עם יורם על זה. בכל מקרה אחד מכם קיבל 50 בחלק הזה, כך שזה אפשרי --Jeniiiiibee 19:01, 10 בנובמבר 2012 (IST)
החלטנו לא תת את הקלטים של הבדיקה. אתם אמורים לתכנת לפי כל מקרי הקצה, ולא לפי קלטים מסוימים כדי שיעובד לכם בבדיקה
אני מעלה לדף התרגילים דוגמא נוספת שאמורה לכוון אתכם. בהצלחה --Jeniiiiibee 12:27, 11 בנובמבר 2012 (IST)
תקלה בהגשת תרגיל 2, חלק 2
כשאני מנסה להגיש את תרגיל 2, חלק 2 (ב-c++) אני מקבל חזרה למייל את הודעת השגיאה הבאה
There is a problem with the configuration files:
Could not find "targil2_2_cpp" in "auto.cfg".
תוכלי לתקן את זה, כדי שנוכל להגיש ולקבל ציון? תודה מראש. תוקן --Jeniiiiibee 18:59, 10 בנובמבר 2012 (IST)
תרגיל 3, שאלה 3
אם חלק מהפעולות שלנו הן כמעט זהות לפעולות שכבר מימשנו בהרצאה או בתרגול (הוספה או הוצאה מעץ וכו'), האם יש צורך לממשן מחדש, או שאפשר לכתוב משהו בסגנון "כמו פעולת הכנסה לעץ, רק עם השינוי הקטן הזה (..)"? תודה!
כן, אבל תשתדלו לרשום בכל זאת בצורה של פסאודו קוד כמה שאפשר --Jeniiiiibee 16:40, 12 בנובמבר 2012 (IST)
מה זה אומר? צריך להתחיל לממש בפסאודו קוד סיבובי עץ, הכנסת והוצאת איברים? ABAB 18:55, 20 בנובמבר 2012 (IST)
- לדעתי לא זו הייתה הכוונה של ג'ניפר. אם אתה משתמש בפעולות המוכרות אז אין בעיה להשתמש בהן כמו "קופסה שחורה" אבל אם אתה למשל משתמש בפעולה שהיא "כמו פעולת החיפוש אבל מחפשת 5 איברים בו זמנית במקום 1 בכל פעם" אז תממש. אשמח אם ג'ניפר תתקן במידה ואני טועה.
נכון - אם יש שינויים אתה חייב לפרט. פשוט תפרט בקצרה את השינוי בפונקציה הקיימת. לא ירדו נקודות על צורת הפסאודו-קוד. פשוט שיהיה ברור מה הפונקציה עושה --Jeniiiiibee 12:49, 22 בנובמבר 2012 (IST)
שאלה לגבי תרגיל 4
איך יכול להיות שהפלט הראשון הוא Already inside, כשבהתחלה העץ שלי ריק? לא לכל שורה בקלט צריך להדפיס פלט. למשל כשמכניסים ספר, אז אין צורך בפלט. יהיה פלט אם מנסים להכניס ספר שכבר קיים! אז השורה "already inside" מתייחסת לשורה ה-4 בקלט...
- תודה רבה, לא שמתי לב לזה...
שאלה לגבי תרגיל 4
1) האם מותר להשתמש בספריות STL לדברים שהם לא יישום של העץ? מחסנית, תור וכאלה... כן, אפשר, אבל שוב רק בשביל זה. אל תשכחו שיש בדיקה ידנית... --Jeniiiiibee 11:58, 23 בנובמבר 2012 (IST)
2) מה התנאי עצירה של התכנית? התוכנית וצרת כאשר נגמרו הפקודות --Jeniiiiibee 11:58, 23 בנובמבר 2012 (IST)
הוצאת איבר מעץ (תרגיל 4)
כשאני מוציא איבר מעץ avl שאינו עלה, אמרנו בהרצאה שעושים את אחד מהדברים הבאים:
- מחליפים אותו באיבר הכי ימני בתת העץ השמאלי שלו.
- מחליפים אותו באיבר הכי שמאלי בתת העץ הימני שלו.
התוצאה, בשני המקרים, היא שהאיבר שלנו הופך להיות עלה ואז אין לי בעיה למחוק אותו (וכמובן שאחרי זה אני גם צריך לאזן את העץ).
עם זאת, בכל מקרה הנתונים יהיו שמורים בעץ בצורה שונה, ולכן כשאני ארצה להדפיס מהעץ (ע"י Inorder או אחת מהסריקות האחרות) אני אקבל שהנתונים יודפסו בסדר שונה. מכיוון שבבדיקה האוטומטית מתקבל רק סדר מסוים, לפי איזו משתי האופציות מעלה עליי לפעול? תודה.
תחליפו אותו באיבר הכי ימני בתת העץ השמאלי שלו. ב-Inorder זה לא משנה כי זה מדפיס את הערכים בסדר הטבעי שלהם מהקטן לגדול. זה משנה ב-Postorder ו-Preorder.
--Jeniiiiibee 09:52, 25 בנובמבר 2012 (IST)
עוד בדיקות לתרגיל 4
אפשר להוסיף בבקשה עוד דוגמאות לבדיקות והפלט שלהם עבור תרגיל 4? ספציפית בדיקות עם שימוש ב-Remove.
שאלה בתרגיל4
האם יכול להיות ספר שאין לו משאיל? אם כן, מה יהיה במידע על המשאיל, אם לא זה הכי טוב! לא, לא יכול להיות כזה מצב
תרגיל 5 - זמן ריצה
לא נרשמה הגבלה לזמן הריצה של תרגיל 1 ו-3. מה היא? תציע אלגוריתמים יעילים ככל שאפשר
תרגיל 5 שאלה 1
האם אפשר להשתמש במבנה הנתונים vector (כלומר, זה שממומש ב-stl של c++, כמעין מערך שגדל באופן דינמי ועם גישה של o(1))? תודה. כן, רק תסביר בקצרה על מבנה הנתונים --Jeniiiiibee 11:56, 9 בדצמבר 2012 (IST)
תרגיל 6 שאלות 1-2
כתוב למצוא את המסלול "הקצר ביותר". הכוונה מבחינת משקל או מבחינת כמות קודקודים בדרך? המסלול הקצר ביותר זה המסלול בעל המשקל הנמוך ביותר
תרגיל 6 שאלה 3 א' b
מהו גודל הצעד? ב- linear probing, אם המקום אליו הגענו תפוס, הולכים למקום הבא במערך, כלומר הצעד הוא 1. אם גם זה תפוס, הולכים למקום הבא וכו' עד שנמצא מקום ריק.
ציונים בתרגיל 2
את יכולה בבקשה להעלות את הציונים בתרגיל 2? יש עדיין עיכוב עם הציונים (הבודק חולה). עד סוף השבוע נפרסם את הציונים של תרגיל 2 ו-3. מצטערים...
שאלה 3 סעיף א' c
האם בסעיף c בשאלה 3 א', גודל הטבלה הוא m*2 או שאחרי שמבצעים h1+h2 עושים שוב mod11? עושים שוב מודולו
שאלה לגבי שיעורים בשבוע הבא
ביום א: יש שש שעות הרצאה לבסוף?
ביום ג: יש הרצאה או תרגול?
תודה מראש.
בקשר ליום ראשון פרסמתי הודעה לפני מה ימים - יש לכם 6 שעות (זה יהיה קשה אבל לפחות תסיימו את החומר מספיק זמן לפני המבחן). יום שלישי יש תרגול
שאלה לגבי תרגיל 7, חלק 1
באשר לפונק' גיבוב שהמלצת - בסופו של דבר, יש לי טבלה קטנה, אבל פונק' הגיבוב מחזירה לי תוצאה שהיא מודולו מספר ראשוני גדול, כלומר התוצאה הזו יכולה לחרוג בהרבה מגבולות הטבלה. האם לעשות על התוצאה שיצאה לי מודולו גודל הטבלה?
תודה.
תמיד צריך לעשות מודולו גודל הטבלה כדי לקבל אינדקס מתאים לטבלה שלנו
שימוש ברשימה מקושרת
האם אפשר להשתמש ברשימה מקושרת של STL בתרגיל 7 חלק 1 על מנת לממש טבלת גיבוב פתוחה? האם מותר להשתמש ב <stdlib> כדי להשתמש בatoi בשביל להפוך את n בארגומנט לתכנית למספר? והאם אפשר להשתמש בsort של STL? תודה!
כן. ציינתי בתרגיל שניתן להשתמש ב-Vector של STL. וכן מותר להשתמש ב-stdlib וגם ב-sort של STL.
דוגמאות נוספות עבור תרגיל 7
ג'ניפר שלום, תוכלי להוסיף דוגמאות נוספות לקלט ופלט עבור תרגיל 7? תודה