מה האסוציאציה שלכם ל-?=(1+2)2÷6?

מהומה בפייסבוק. מישהו פתח סקר עם השאלה הפשוטה:

\( 6\div 2(1+2)=? \)

ושתי תשובות אפשריות - 1 ו-9. התוצאה? כרגע יש בסביבות ה-1,300,000 מצביעים עבור 1, 1,700,000 מצביעים עבור 9 ודיון בן למעלה מ-100,000 תגובות. מה לעזאזל?

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

התרגיל הזה כנראה כל כך מבלבל אנשים, כי רובם זוכרים מבית הספר שהיה משהו שנקרא “כללי קדימות”, שהולכים ככה: קודם כל סוגריים, אחר כך חזקה, אחר כך כפל וחילוק, ואחר כך חיבור וחיסור. טוב ויפה, אז \( 6\div2(1+2)=6\div2\times3 \) על פי החוקים הללו, אבל מה עכשיו? הרי כפל וחילוק שניהם נמצאים באותה דרגת קדימות. אז איך מחליטים מה לעשות?

התשובה היא שאי אפשר לדעת מה לעשות, לא בלי כללים נוספים, שגם אותם אולי אמרו בבית הספר אבל מי זוכר. הביטוי הזה דורש שנשים בו עוד זוג סוגריים, אבל יש שתי דרכים שונות לשים סוגריים - או \( \left(6\div2\right)\times3 \) או \( 6\div\left(2\times3\right) \). אם שמים את הסוגריים על הביטוי השמאלי מקבלים 9; אם שמים אותן על הביטוי הימני מקבלים 1. אז סלע המחלוקת הוא בסך הכל איך בבית הספר אמרו לאנשים לטפל בעניין הזה.

שימו לב שהבעיה כאן נובעת מהחילוק. כפל לבדו לא יוצר בעיות - \( 3\times5\times2 \) הוא תמיד 30, ולא משנה אם מפרשים את הביטוי בתור \( \left(3\times5\right)\times2 \) או \( 3\times\left(5\times2\right) \). במתמטיקה קוראים לתכונה הזו “אסוציאטיביות” ובעברית קוראים לזה “כלל הקיבוץ”. זה אומר שאפשר לקבץ איברים - לשים סוגריים - באיזה אופן שנבחר וזה לא ישפיע על התוצאה הסופית. גם חיבור הוא פעולה אסוציאטיבית, אבל חיסור, חילוק והעלאה בחזקה - לא. למשל, \( \left(1-2\right)-3=-4 \) אבל \( 1-\left(2-3\right)=2 \); ולמשל \( 2^{\left(2^{3}\right)}=2^{8}=256 \) אבל \( \left(2^{2}\right)^{3}=4^{3}=64 \); ולמשל, \( \left(8\div4\right)\div2=1 \) אבל \( 8\div\left(4\div2\right)=4 \). בכל המקרים הללו צריך לקבוע מפורשות (ובאופן שרירותי לגמרי - זה עניין של הגדרות נטו) האם שמים סוגריים על שני האיברים השמאליים יותר, או על שני האיברים הימניים יותר. במקרה הראשון אומרים שלפעולה יש אסוציאטיביות שמאלית, ובמקרה השני - שיש לה אסוציאטיביות ימנית. בעולם התרבותי מגדירים בדרך כלל את פעולות החיסור והחילוק להיות בעלות אסוציאטיביות שמאלית, ואילו פעולת החזקה היא בעלת אסוציאטיביות ימנית. כלומר, \( 1-2-3=-4 \), ו-\( 8\div4\div2=1 \), ו-\( 2^{2^{3}}=256 \).

רגע, תגידו, אבל מה הולך ב-\( 6\div2\times3 \)? זה לא ביטוי שמכיל פעמיים את פעולת החילוק; הוא מכיל פעולת חילוק אחת ופעולת כפל אחת. כדי לפתור את זה, אומרים שגם לכפל יש אסוציאטיביות שמאלית; והכלל של חלוקת הסוגריים הוא “אם יש לך שתי פעולות באותה רמת קדימות שלכולן אסוציאטיביות שמאלית, שים את הסוגריים על הפעולה השמאלית יותר מביניהן”. ואם יש לנו פעולות באותה רמת קדימות שלאחת אסוציאטיביות שמאלית ולשניה ימנית? בום! המתמטיקה מתפוצצת, ולכן לא כדאי להגדיר הגדרות גרועות שכאלה.

אם כן, על פי הסטנדרט המתמטי השרירותי שהצגתי עד כה, \( 6\div2(1+2)=9 \). ומה עם ה-1,300,000 שאמרו שזה 1? ובכן, במקור כתבתי עליהם “הם כנראה פשוט לא זוכרים/מכירים את זה. אז מה? ויכוחים על הגדרות הם הצורה הנחותה ביותר של מתמטיקה, אם הם בכלל ראויים להיקרא מתמטיקה”, אבל זה לא ממש הוגן כלפיהם ואנשים נוספים שדיברו איתי על התרגיל (בתגובות כאן וגם במקומות אחרים) הצביעו על כך. טיעון אפשרי אחד בזכות ה-1 הוא שסימן הכפל הושמט מהמכפלה של 2 ב-3 ב-\( 6\div2(1+2) \), וזה עשוי לרמז על כך של-2 כפול 3 יש קדימות גבוהה יותר מאשר לחילוק, ואלו דווקא אנשי ה-9 שפשוט לא זוכרים/מכירים את הקונבנציה הזו. ושוב, גם לזה אענה - אז מה? ויכוחים על הגדרות הם הצורה הנחותה ביותר של מתמטיקה, אם הם בכלל ראויים להיקרא מתמטיקה.

את מי הויכוח הזה כן צריך לעניין, קצת? למשל, את האנשים שבונים מהדרים ומפרשים של תוכניות מחשב (מהדר לוקח קוד של תוכנית מחשב וממיר אותו לקוד בשפת מכונה; מפרש לוקח קוד של תוכנית מחשב ומריץ אותו). כל כלי אוטומטי לבנייה של מהדרים/מפרשים מתבסס על הגדרה של דקדוק פורמלי, שמגדיר כיצד נבנה טקסט חוקי של תוכנית מחשב. בהינתן קוד התוכנית, המהדר מנסה לגלות את האופן שבו התוכנית “נגזרה” מהדקדוק - את האופן הזה אפשר לתאר באמצעות עץ, “עץ גזירה”. הבעיה היא שלפעמים יש יותר מעץ גזירה אפשרי אחד, והמשמעות של התוכנית היא שונה עבור עצים שונים. הביטוי \( 6\div2)1+2(=? \) הוא בדיוק דוגמה לביטוי בעל שני עצי גזירה. כדי לפתור את הבעיה, הדקדוק הפורמלי כולל גם כללי קדימות ואסוציאטיביות, ולכן היכרות עם המושגים הללו היא הכרחית לכל מי שכותב מהדר.

לסיום, אי אפשר בלי להזכיר שיטת כתיבה לביטויים אריתמטיים שבה כל בלבול המוח הזה של קדימות ואסוציאטיביות לא קיימת בכלל - השיטה הפולנית, שנקראת כך בשל ממציאה הפולני, הלוגיקאי יאן לוקשביץ’. בשיטה הזו קודם כל נכתבת הפעולה, ואחר כך נכתבים איבריה. למשל, במקום לכתוב \( 2\times3 \) נכתוב \( \times2\ 3 \). מבלבל? בוודאי, כי אנחנו לא רגילים. את הביטוי \( 6\div2\times3 \) יכתוב לוקשביץ’ כ-\( \times\div6\ 2\ 3 \). כלומר, כשנתחיל לקרוא את הביטוי נראה \( \times \) ונדע שכעת אמורים לבוא שני מספרים שעלינו לכפול. מייד אחר כך יבוא \( \div \) ונדע שהראשון מבין שני המספרים שעלינו לכפול יהיה בעצמו תוצאה של פעולה אריתמטית - הפעלת \( \div \). שני המספרים הבאים הם אלו שעליהם יש להפעיל את \( \div \), ולכן אפשר להחליף את כל ה-\( \div6\ 2 \) ב-\( 3 \); הביטוי הוא אם כן \( \times3\ 3 \)שאכן שווה ל-9.

וריאציה פופולרית על השיטה הפולנית היא השיטה הפולנית ההפוכה, Reverse Polish Notation, שבה קודם כל נכתבים המספרים ורק לאחר מכן הפעולה. את הביטוי \( 6\div2\times3 \) כותבים בשיטה זו \( 6\ 2\ \div3\ \times \). נראה נורא? בוודאי, אבל מבחינה חישובית קל הרבה יותר לטפל בביטוי כזה מאשר ב-\( 6\div2\times3 \). את \( 6\div2\times3 \) צריך לנתח תחבירית ולבדוק את כללי הקדימויות והאסוציאטיביות וכאב ראש; ואילו כדי לקבל את ערכו של \( 6\ 2\ \div3\ \times \) קיים אלגוריתם פשוט בתכלית שמשתמש במחסנית. בכל פעם שבה קוראים מספר, דוחפים אותו למחסנית; ובכל פעם שבה פוגשים אופרטור, שולפים מהמחסנית את כמות האיברים שעליהם האופרטור פועל, מחשבים את התוצאה ודוחפים אותה למחסנית. במקרה של \( 6\ 2\ \div3\ \times \) קודם כל יידחפו 6 ו-2 למחסנית; לאחר מכן ייקרא \( \div \) ולכן שניהם יישלפו מהמחסנית ו-3 יידחף במקומם; לאחר מכן יידחף ה-3 הנוסף, ולבסוף ייקרא \( \times \) ולכן שני ה-3-ים יוצאו מהמחסנית ויוכפלו לקבלת 9.

אם כן, למחשב זה פשוט וקל, אך אנחנו כנראה נוסיף להשתמש בביטויים אריתמטיים באופן המוכר והחביב לנו; xkcd הפליא לתאר את הסיבה העיקרית לכך:

A sausage is sitting to the right of an empty bun.


נהניתם? התעניינתם? אם תרצו, אתם מוזמנים לתת טיפ:

Buy Me a Coffee at ko-fi.com