|
||||
|
||||
וויקיפדיה איתך "אלגוריתם הוא דרך שיטתית (כלומר כזו שצעדיה מוגדרים היטב) לביצועה של משימה מסוימת *במספר סופי של צעדים.*" http://he.wikipedia.org/wiki/%D7%90%D7%9C%D7%92%D7%9... |
|
||||
|
||||
מה שמבדיל את ויקיפדיה מויקימילון הוא שאפשר לפרט גם בפסקאות שבאות אחרי ההגדרה. |
|
||||
|
||||
תודה. האמת היא, כמובן, שזה לא ממש חשוב לעצם העניין. (ניחוש לגבי ההמשך: - מישהי תטען ש"צעדיה מוגדרים היטב" הוא מה שפוסל את האלגוריתם מלהיות הכלי בעזרתו מתבצעת הבחירה. - אני אבקש הסבר מהם צעדים שאינם מוגדרים היטב. - לא אקבל תשובה, אבל אשאל בחזרה מהם צעדים שכן מוגדרים היטב. - אני אגיד שצעד שמוגדר היטב הוא צעד שהתוצאה שלו נקבעת באופן חד-משמעי. - יגידו לי שאם כך, צעד שאינו מוגדר היטב הוא צעד שהתוצאה שלו אינה נקבעת באופן חד-משמעי. - אני אטען שאם כך, התוצאה שלו נקבעת באופן אקראי או ע"י אלגוריתם כלשהו. - יגידו לי "מה פתאום"? - אני אגיד שאינני מכיר דרך נוספת, ואבקש שיראו לי כזאת. - ... - השרת של האייל יקרוס, או השמש תכבה (לא ברור מה יקרה קודם). ) |
|
||||
|
||||
זה שהשתמשת במילה ''אלגוריתם'' במקום במילה ''מנגנון''. יש אנשים שיכולים לחשוב שכשאתה אומר ''אלגוריתם'' (או כל מושג אחר שמזכיר להם מתמטיקה) אתה גורם להם לתגובה מוזרה שגורמת מהם להתעלם מכל מה שאתה כותב אחר כך. |
|
||||
|
||||
סביר שיש אנשים כאלה. לא זה המקרה כאן. |
|
||||
|
||||
יש בעיה חמורה עם "צעד שהפעולה שלו מוגדרת באופן חד משמעי". קח למשל את בעית העצירה, שהוכח שלא ניתן לפתור עם מכונת טיורינג: בהינתן קלט לבעיית העצירה, הפלט האפשרי הוא או "כן" או "לא". לכן על פי גישתך, "צעד" שבו אומרים "כן" או אומרים "לא" הוא צעד לגיטימי. כמובן שהוא לא לגיטימי, כי לא ברור איך אפשר *לדעת* אם צריך לומר כן או לא. מה שחשוב הוא לא שהתוצאה תהיה מוגדרת באופן חד משמעי (זה בכלל לא הכרחי) אלא ש*החישוב שמבוצע במהלך הצעד* יהיה ברור בצורה חד משמעית. זה אפשרי רק אם הצעד מאוד פשוט - למשל, "חשב את ערך התא א' ועוד ערך התא ב' ושים את התוצאה בתא ג"'. |
|
||||
|
||||
לדעתי הצעד באמת לגיטימי, אבל ייתכן שהאלגוריתם ייתן תוצאה שגויה. זה קורה הרבה גם למכונות וגם לאנשים. |
|
||||
|
||||
בניגוד לדרישה שהאלגוריתם יעצור, הדרישה לנכונות הרבה יותר נוקשה (אם כי גם עליה מוותרים באופן חלקי לפעמים), אבל זה עדיין לא רלוונטי. כדי שהצעד יתבצע, אתה צריך שיהיה ברור איך ניתן לבצע אותו. צעד כמו ''בדוק האם התשובה הנכונה היא כן או לא'' הוא לא צעד שניתן לבצע בהקשר של בעיית העצירה. אתה כנראה חושב על צעד כמו ''הטל מטבע וענה ''כן'' אם יצא עץ'', שהוא כן נמנה על הצעדים ה''קלים לביצוע''. |
|
||||
|
||||
אני חשבתי על הצעד "ענה "כן"". בעיני, כל קופסא שחורה שנותנת בזמן סופי תוצאה חד-משמעית לכל קלט אפשרי יכולה להיחשב כ"צעד" לגיטימי בשמלגוריתם. כמו שאתה מבין, שמלגוריתם פטור ממגבלת הנכונות שאלגוריתם חייב לעמוד בה. אני חושב שאנשים משתמשים בשמלגוריתמים לעתים קרובות. לדוגמא, שמלגוריתם נפוץ אחד נראה בערך כך: אם אתה מרגיש שהתשובה היא "כן", ענה "כן". אחרת, ענה "לא". |
|
||||
|
||||
הצעד הזה הופך אלגוריתמים לחסר כל ערך. באופן כללי, גם כשיש לך אלגוריתם הסתברותי, דרישה בסיסית ממנו היא שעל *כל* קלט יתן תשובה נכונה בהסתברות חיובית, אחרת מה הטעם בו? אלגוריתם נהדר לבדיקת ראשוניות הוא "ענה כי המספר לא ראשוני". הרי רוב המספרים לא ראשוניים, אז רוב הזמן האלגוריתם צודק. הבעיה היא שיש קלטים שעליהם האלגוריתם *תמיד* טועה. אחרי שנתתי את הנאום הזה (ולא נעים למחוק) שמתי לב שאתה לא מדבר על אלגוריתמים אלא על שמלגוריתמים. מכיוון שבני אדם לא צריכים אלגוריתמים (=פתרונות לבעיות) אלא שמלגוריתמים (=מישהו שיגיד להם מה לעשות, גם אם הם עושים טעות), אני נוטה להסכים שאין כאן בעיה. |
חזרה לעמוד הראשי |
מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים | |
RSS מאמרים | כתבו למערכת | אודות האתר | טרם התעדכנת | ארכיון | חיפוש | עזרה | תנאי שימוש | © כל הזכויות שמורות |