שאלה (יש לי מחר מבחן)

johnny d

New member
שאלה (יש לי מחר מבחן)

אין שום מענה מצוות הקורס ולא קיימים סטודנטים, אז אם אפשר את דעתכם על הפתרון שלי. הבעיה: על סרט מגנטי רשומות מיליון מילים בינריות באורך 20 ביט כל אחת. עומד לרשותכם זכרון של 2000 ביטים, הציעו שיטה הסתברותית למצוא מילה בינארית בעלת 20 ביטים השונה מכל המילים שרשומות על הסרט, שתמתמש במספר קטן ככל האפשר של מעברים על הסרט. מה ההסתברות למצוא מילה כזו, בשיטה שהצעתם במעבר אחד על הסרט. הפתרון שלי: עבור על הסרט וספור כמה פעמים מופיע כל ביט מסויים בכל המילים. בסיום המעבר בנה מילה שבה כל ביט דלוק רק אם ההסתברות שהוא מופיע במילה קטנה מ 50%. נאתחל counter ל-1. מכאן והלאה כל פעם עוברים על הסרט ואם המילה קיימת אז נשנה את הביט במיקום ה counter, נקדם את הcounter ונחזור על צעד זה. כמובן שלולאה זו יכולה לרוץ מקסימום log 1000000 פעמים כאשר בזמן זה ה counter אינו חורג מגודל המילה ולכן נמצא מילה שונה בטוח והאלגוריתם יעצור. בנוגע להסתברות, כאן אני בטוח לא סגור על עצמי כי זה לא ממש הסתברות אלא יותר סטטיסטיקה. ישנם 20 ביטים והסיכוי שביט יהיה שווה לביט שבחרנו במילה שלנו הוא מקסימום חצי ולכן הסיכוי שבמילה כל הביטים יהיו שווים הוא 0.5 בחזקת 20, כלומר סה"כ הסיכוי שקיימת מילה כזו בסרט היא: 1000000 * 0.5^20 - במילים: מיליון כפול חצי בחזקת 20.
 

vinney

Well-known member
אני שונא הסתברות

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

johnny d

New member
גם אני

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

ron369

New member
אני אוהב הסתברות, המרכזת נחמדה

חשבתי עכשיו (אולי) על פתרון. בעצם, זו שיטה די עלובה. ההסתברות למילה רנדומית כלשהיא באורך 20 ביטים להופיע על הסרט היא 1/20 (מחשבים). זהו. סיימנו. לא?
 

vinney

Well-known member
המם.... לא.

יש לך מליון מילים בינאריות כשכל אחת מהן 20 ביט. ההסתברות שאחת מהן תתאים למילה המסוימת שיש לך היא (תן לי רגע להזכר): עבור מילה בודדת ההסתברות שהיא תתאים למילה נתונה היא 2 בחזקת 20. עבור כל הסרט - תכפיל את המספר ב1000000 (כי זה מילים בלתי תלויות שיכולות לחזור על עצמן). מליון זה בערך 2 בחזקת 20 (אבל קצת פחות), לכן אלגוריתם הסתברותי יכול להיות כזה: תגריל מילה של 20 ביטים. תעבור על כל מליון המילים לוודא שהיא לא אף אחת מהן. הסתברות הצלחה זה 1 חלקי ( 2 בחזקת 20 חלקי מליון ), שזה נמוך נורא
 

vinney

Well-known member
אבל אני שונא הסתברות אז יכול להיות

שאני מברבר שטויות
 

ron369

New member
חכה שניה...

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

vinney

Well-known member
כן, תוך כדי שכתבתי שמתי לב שזה יוצא

אותו מספר
זה פשוט לא היה כזה ברור מההודעה שלך, שזה מה שהיה לך בראש
 

ron369

New member
לא חשוב. זה "טריק" טפשי...

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

shirbi

New member
מה זה כל החישובים המוזרים הללו?

נבחר מילה אקראית כלשהי. ההסתברות שהיא כן תופיע במקום הi במערך, היא 1 חלקי מספר המילים היכולות להופיע במקום ה i במערך. כלומר, אחד חלקי 2 בחזקת 20. לכן ההסתברות שהיא לא תופיע שם היא 1 פחות (1 חלקי 2 בחזקת 20). לכן ההסתברות שהיא לא תופיע באף מקום במערך היא (1 פחות (1 חלקי 2 בחזקת 20)) בחזקת מליון. מכיוון ש 2 בחזקת 20, זה בערך מליון, הערך של הביטוי הזה הוא בערך 1 חלקי e.
 

ron369

New member
מה הבעיה?

יש לך טעות. כמה, בעצם. 1) החישוב שלי היה חסם על הפתרון, לא טעות. החישוב שלך היה "מדוייק" יותר. 2) עשית את אותה הטעות כמו ויני. יש בסרט רק 50000 מילים, לא מליון. ולכן, התשובה הנכונה (יותר), באדיבות DERIVE, היא: 0.9534352742 (תוצאת קירוב של ((1 - 1/2^20)^50000) עם 10 ספרות אחרי הנקודה (ל-20: 0.95343527421558161363)). כלומר סיכוי לתשובה נכונה של בערך: 1-1/20 וסיכוי לטעות של בערך: 1/20 (הקירוב נכון עד כדי: 0.0034352742155816136340 ~ (1/20 - (1 - (1 - 1/2^20)^50000)) כלומר שלוש-ארבע ספרות אחרי הנקודה). אבל אהבתי את השימוש (השגוי) ב-e ובקירוב (עד כדי 0.017443005594753807388, בערך
) שלו. בכל אופן, שים לב שבתרגיל הזה חישוב במקרה הממוצע הוא בכלל שגוי - אנחנו רוצים את ההסתברות לטעות במקרה הכי גרוע. כלומר, ההסתברות לטעות כאשר הסרט מניאק ככל האפשר, ומרנדם לנו מילים קשות ככל האפשר.
 

ron369

New member
ו, מצטער על עודף הספרות בהודעה,

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

ron369

New member
../images/Emo6.gif

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

shirbi

New member
50,000 מילים?

אבל הוא רשם: " על סרט מגנטי רשומות מיליון מילים בינריות באורך 20 ביט כל אחת" כלומר - מליון(!) מילים. איך הגעת למסקנה שיש רק 50,000 מילים?
 

ron369

New member
כנראה הנחתי אוטומטית אפשרות שונה,

שהוא התכוון לסרט באורך 20
מצטער ויני ו-shirbi
עכשיו, ההתסברות לכשלון היא בערך:
1M/2^20 ~ 0.95343527421558161363​
ולפי זה נוכל לחזור על התהליך 15 פעמים, ולקבל סיכוי לטעות של פחות מחצי. כלומר, אלגוריתם הסתברותי תקין ומגעיל. עכשיו זה בסדר? *אנחה*
 

shirbi

New member
מה פירוש סיכוי לטעות?

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

ron369

New member
ברור שאני מבצע את הבדיקות...

נכון, יש סיכוי לכשלון. כלומר, טעות חד-צדדית.
 

עריסטו

Active member
אני לא חושב שהפתרון שלך

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