יש פסי רכבת אינסופיים שמהוים ציר מספרים ממינוס אינסוף לאינסוף. על הפסים נעה רכבת בכיוון החיובי. אפשר לדגום את הציר בכל נקודה, ולדעת אם הרכבת שם או לא ברגע הדגימה. המטרה - לתפוס את הרכבת. אני תהיתי אם בדגימה אפשר לדעת אם הרכבת הייתה שם או לא, ואמרו לי שלא, אז קצת מוזר לי אם זה פתיר... רעיונות?
ועדיין לא ידוע לי אם יש לה פתרון: על ציר המספרים השלמים נפלה פצצה. צריך למצוא על איזה מספר היא נפלה. קל? אז אילוץ נוסף: O(1) זיכרון. פתרון שלא עומד ב-O(1) זיכרון: בודקים ב-0. בודקים ב-1. בודקים במינוס 1. בודקים ב-2. בודקים במינוס 2. וכו' עד שמוצאים. הסיבה: החזקת המקום שאותו בודקים דורשת O(log n) זיכרון אם עובדים בבסיס ספירה שאינו 1.
סימון המקום שנבדק? אם מותר אז אפשר אלגוריתם כזה: א- התחל בכיוון ימין ב- אם התא כבר מסומן, התקדם צעד נוסף ג- אם הגעת לתא שעוד לא סומן, סמן אותו והחלף כיוון ד- חזור ל-ב
אני חשבתי על מודל תיאורטי שבו נתון מערך (ביטים נניח) "אינסופי" ואז אין צורך לשמור דבר והסימון לא עולה לך בזכרון נוסף. אם המודל הוא "בחרתי מספר בין מינוס אינסוף לאינסוף, נחשו מהו" אז אתה צודק. במקרה כזה אני לא חושבת שזה פתיר, כיוון שהכרחי לשמור מידע שיתאר את "המצב" (=מה כבר נבדק) ובזיכרון קבוע ניתן לשמור רק מספר סופי של מצבים.
שאלתי, וכנראה לא הייתי ברור: מה זה "בודקים את 1"? מה זה "בודקים", בכלל? איך אתה בודק משהו? אתה קורא לפונקציה שבודקת? אם כן, אני מניח שהפונקציה נקראת עם פרמטר כלשהו, והפרמטר הזה צריך להיות, מן הסתם, המספר הנבדק, ואם כן - LogN הוא הזכרון הנדרש.
"להיות במקום כלשהו" בלי לדעת איפה אתה נמצא, אז זה המודל שדיברתי עליו קודם (מערך אינסופי נתון שאתה מטייל עליו) ובמודל כזה אתה יכול לסמן תאים מבלי להשתמש בזיכרון נוסף.
פתירה, כשהיא לא מוגדרת עד הסוף. לא נתת כלים לביצוע הבדיקה, מה אתה מצפה לקבל? זה כמו שאומר לך שאתה צריך לקרוא קובץ מהדיסק אבל אני לא אומר לך מה הפונקציות שעומדות לרשותך, או מה מערכת הקבצים הספציפית, וכו'. הבעיה לא מוגדרת. זה לא עניין של "לדעתי". תגדיר אותה כמו שצריך, ויהיה אפשר לראות אם היא פתירה או לא. לכל היותר, ב"הגדרה" שנתת, אפשר להוכיח שאי אפשר לפתור את הבעיה ב-(O(1 זכרון.