עקרון ההכלה וההפרדה, ואז הכללה והפחדה

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

מהו עקרון ההכלה וההפרדה

קומבינטוריקה אנומרטיבית היא התחום המתמטי שעוסק, פחות או יותר, בבעיה הבאה: "הנה לך קבוצה סופית, כמה איברים יש בה?", כאשר לרוב הקבוצה הזו תלויה באיזה פרמטר \(n\) ואנו רוצים את התשובה כפונקציה של \(n\). הנה כמה דוגמאות לבעיות שבכולן נטפל בקרוב: קבוצת המספרים הטבעיים בין \(1\) ל-\(n\) שאינם מתחלקים ב-2, 3 או 5; קבוצת המספרים בין 1 ל-\(n\) שזרים ל-\(n\) (כלומר, אין להם מחלקים טבעיים משותפים הגדולים מ-1), וקבוצת הפרות הסדר על \(n\) איברים – בלשון ציורית, מספר הדרכים שבהן יכול דוור מבולבל (אם אנחנו שונאים את ניומן מסיינפלד) או מזכירה מבולבלת (אם אנחנו שונאים נשים) לחלק \(n\) מכתבים ל-\(n\) האנשים שאמורים לקבל אותם באופן כזה שאף מכתב לא יגיע ליעדו (למשל, אם האנשים הם 1,2,3 אז אפשרות אחת היא שהמכתב של 3 יגיע ל-1, שהמכתב של 2 יגיע ל-3, ושהמכתב של 1 יגיע ל-2).

בואו נתחיל מגרסה עוד יותר פשוטה של הבעיה הראשונה: כמה מספרים בין 1 ל-100 כן מתחלקים ב-2 או ב-3? ובכן, בדיוק 50 מספרים מתחלקים ב-2 – כל הזוגיים. כמו כן, 33 מתחלקים ב-3; כל המספרים שהם כפולות של 3 עד 99, ו-100 לא עוזר לנו כי אינו מתחלק ב-3. קצת מחשבה מראה לנו את הנוסחה הכללית: מספרים מ-\(1\) ועד \(n\) שמתחלקים ב-\(k\) יש בדיוק, אבל בדיוק, \(\left\lfloor \frac{n}{k}\right\rfloor \), כשהקווים מייצגים ערך שלם תחתון: אם התקבלה תוצאה שברית, מעגלים למטה למספר השלם הקרוב.

אם כן, הפיתוי גדול לומר שיש \(50+33=83\) מספרים בין 1 ו-100 שמתחלקים ב-2 או ב-3. אבל ספירה מהירה תראה שזה לא נכון. בעצם, עזבו אתכם ממספרים בין 1 ל-100 שקשה לספור; אם ננסה באותה שיטה לספור מספרים בין 1 ל-10 נקבל \(8\) מספרים, אבל בבירור יש רק 7: \(\left\{ 2,3,4,6,8,9,10\right\} \). איפה הטעות שלנו? במספר המעצבן 6, שמתחלק בו זמנית גם ב-2 וגם ב-3. ספרנו אותו פעמיים: פעם אחת כחבר בקבוצה \(\left\{ 2,4,6,8,10\right\} \) של מספרים שמתחלקים ב-2, ופעם אחת בקבוצה \(\left\{ 3,6,9\right\} \) של מספרים שמתחלקים ב-3. את הספירה הכפולה הזו צריך לתקן – פשוט נחסיר 1 מהתוצאה.

עבור מספרים בין 1 ל-100 הרעיון דומה; יש 83 מספרים פחות כמות המספרים בין 1 ל-100 שמתחלקים גם ב-2 וגם ב-3. למזלנו קל לדעת מיהם – אלו בדיוק המספרים שמתחלקים 6, כלומר \(\left\lfloor \frac{100}{6}\right\rfloor =16\). קיבלנו שיש \(50+33-16=67\) מספרים בין 1 ל-100 שמתחלקים או ב-2, או ב-3, או בשניהם.

את הרעיון הכללי אפשר לנסח כך: אם \(A,B\) הן קבוצות, אז \(\left|A\cup B\right|=\left|A\right|+\left|B\right|-\left|A\cap B\right|\) – גודל הקבוצה \(A\cup B\) שמכילה את כל האיברים של \(A,B\) הוא כסכום גדלי הקבוצות \(A,B\) פחות הגודל של הקבוצה \(A\cap B\) של איברים ששייכים הן ל-\(A\) והן ל-\(B\). השלב הבא הוא לנסח את המשפט עבור שלוש קבוצות, \(A,B,C\). הניחוש הראשוני הוא לומר ש-

\(\left|A\cup B\cup C\right|=\left(\left|A\right|+\left|B\right|+\left|C\right|\right)-\left(\left|A\cap B\right|+\left|A\cap C\right|+\left|B\cap C\right|\right)\)

וזה כמעט נכון, אבל לא נכון עד הסוף, כי אם יש איבר שנמצא הן ב-\(A\), הן ב-\(B\) והן ב-\(C\) הוא אמנם נספר שלוש פעמים ב-\(\left|A\right|+\left|B\right|+\left|C\right|\) אבל לאחר מכן הוא גם מוחסר שלוש פעמים ב-\(-\left(\left|A\cap B\right|+\left|A\cap C\right|+\left|B\cap C\right|\right)\) ובסופו של דבר יוצא שהוא לא נספר כלל. לכן צריך לתקן את הנוסחה על ידי הוספת \(\left|A\cap B\cap C\right|\).

מכאן כבר אפשר לנחש את המקרה הכללי: אם יש לנו קבוצות \(A_{1},\dots,A_{k}\) ואנו רוצים לדעת מה הגודל של \(\bigcup_{i=1}^{k}A_{i}\), קודם כל נסכום את הגדלים של כל הקבוצות, אחר כך נחסיר את הגודל של כל החיתוכים של שתי קבוצות, נחבר את הגודל של חיתוכים של שלוש, נחסיר את הגודל של חיתוכים של ארבע… אני אומר את זה מילולית כי לכתוב את זה בנוסחה – ובכן, איך נאמר זאת בעדינות – זה כואב. הנה הנוסחה:

\(\left|\bigcup_{i=1}^{n}A_{i}\right|=\sum_{i=1}^{n}\left|A_{i}\right|-\sum_{1\le i<j\le n}\left|A_{i}\cap A_{j}\right|+\dots+\left(-1\right)^{n+1}\left|\bigcap_{i=1}^{n}A_{i}\right|\)

לקצרנים שבינינו, אפשר גם עם סכום כפול:

\(\left|\bigcup_{i=1}^{n}A_{i}\right|=\sum_{t=1}^{n}\sum_{1\le i_{1}<i_{2}<\dots<i_{t}\le n}\left(-1\right)^{t+1}\left|\bigcap_{j=1}^{t}A_{i_{j}}\right|\)

לא נעים כל כך, אבל העיקרון עצמו ברור למדי. עם זאת, צריך גם להוכיח שהוא עובד. הרעיון הוא להסתכל על איבר כלשהו \(x\in\bigcup_{i=1}^{n}A_{i}\) ולשאול את עצמנו – מה הוא תורם לאגף ימין, ומה הוא תורם לאגף שמאל? לאגף שמאל הוא תורם בדיוק 1; אגף ימין קצת יותר מסובך. נניח ש-\(x\) נמצא בדיוק ב-\(k\) קבוצות, אז לכל \(t>k\), פשוט לא ייתכן ש-\(x\in\bigcap_{j=1}^{t}A_{i_{j}}\) כי אנחנו חותכים פה יותר קבוצות מאשר יש קבוצות שמכילות את \(x\) ולכן הוא לא בחיתוך. לכן מה שרלוונטי מראש הוא רק \(t\le k\), וגם אז – רק חיתוכים \(\bigcap_{j=1}^{t}A_{i_{j}}\) שבהם כל הקבוצות כוללות את \(x\), כלומר כל הקבוצות נלקחות מתוך \(k\) הקבוצות שכוללות את \(x\) מלכתחילה. המספר שלהן הוא מה שמסמנים כ-\({k \choose t}\): מספר האפשרויות לבחור \(t\) מתוך \(k\). זה אומר ש-\(x\) תורם לסכום באגף ימין בדיוק את תת-הסכום הבא:

\(\sum_{t=1}^{k}{k \choose t}\left(-1\right)^{t+1}\)

כדי לחשב את הסכום הזה משתמשים בנוסחת הבינום של ניוטון, שקל לראות ממנה שמתקיים \(0=\left(1-1\right)^{k}=\sum_{t=0}^{k}{k \choose t}\left(-1\right)^{t}\). לכן אנו מקבלים:

\(\sum_{t=1}^{k}{k \choose t}\left(-1\right)^{t}=\sum_{t=0}^{k}{k \choose t}\left(-1\right)^{t+1}+1=1-\sum_{t=0}^{k}{k \choose t}\left(-1\right)^{t}=1\)

כפי שרצינו.

ואיך עושים איתו דברים מעניינים

סיימנו את ההוכחה ואפשר לעבור לאקשן – פתרון של דברים אמיתיים. נתחיל עם המספרים בין 1 ל-\(n\) שאינם מתחלקים ב-\(2\) או \(3\) או \(5\): כאן הקבוצות הן של המספרים שכן מתחלקים ב-2, וכן מתחלקים ב-3, וכן מתחלקים ב-5, ואנחנו רוצים לחסר את זה מהקבוצה של כלל המספרים, שהיא מגודל \(n\). לכן נקבל:

\(n-\left(\left\lfloor \frac{n}{2}\right\rfloor +\left\lfloor \frac{n}{3}\right\rfloor +\left\lfloor \frac{n}{5}\right\rfloor \right)+\left(\left\lfloor \frac{n}{6}\right\rfloor +\left\lfloor \frac{n}{10}\right\rfloor +\left\lfloor \frac{n}{15}\right\rfloor \right)-\left\lfloor \frac{n}{30}\right\rfloor \)

חייבים להודות שהנוסחה הזו לא נראית הכי מלהיבה בעולם; אבל חשבו לרגע על הדרך הנאיבית לחשב את המספר הזה – לעבור על כל המספרים מ-\(1\) עד \(n\) ולכל אחד לבדוק אם הוא מתחלק ב-2 או 3 או 5. אם \(n\) קטן זה לא נורא, אבל מה אם \(n=10^{100}\)? במקרה הזה האלגוריתם שלנו לעולם לא יסתיים, ואילו בעזרת הנוסחה שלנו צריך יהיה לבצע 7 פעולות חילוק ולחבר/לחסר את התוצאות וזהו, כלומר החישוב יסתיים בחלקיקי שניה גם אם \(n\) מפלצתי בגודלו. זו המחשה ראשונה לכוח שבהכלה והפרדה.

בואו נעבור לדוגמה השניה: עבור טבעי \(n\), \(\varphi\left(n\right)\) ("פונקצית אוילר") מסמן את מספרם של המספרים הטבעיים בין 1 ל-\(n\) שזרים ל-\(n\), כלומר שהמספר היחיד שמחלק את שניהם הוא \(1\) עצמו. למשל, עבור \(6\), המספרים היחידים שקטנים ממנו וזרים לו הם 1 ו-5 ולכן \(\varphi\left(6\right)=2\); עבור \(8\) אלו הם \(1,3,5,7\) ולכן \(\varphi\left(8\right)=4\), וכן הלאה. אם תסתכלו בגרף של הפונקציה הזו תראו שהיא מתנהגת בצורה די מטורללת – כל הזמן קופצת בין ערכים קטנים לגדולים. נקודות השיא הן בראשוניים (מספרים שמתחלקים רק ב-1 ובעצמם): לכל מספר ראשוני \(p\) מתקיים \(\varphi\left(p\right)=p-1\) ולכן הערכים הגדולים ביותר של \(\varphi\) יתקבלו על הראשוניים, שהם עצמם מפוזרים בצורה שנראית כמעט אקראית.

ועם זאת, יש נוסחה ל-\(\varphi\left(n\right)\), שמתבססת על כך שאנו יודעים בדיוק מהם הראשוניים שמחלקים את \(n\). יש לנוסחה הזו מספר הוכחות והאהובה עלי עושה שימוש במשפט חשוב למדי מאלגברה – "משפט השאריות הסיני". לא נדבר על זה בכלל הפעם, ובמקום זאת נראה איך גישת ההכלה וההפרדה מחסלת גם היא את הבעיה בקלות.

האבחנה האלגברית שבבסיס העניין היא שאם \(n\) ו-\(m\) לא זרים, אז קיים ראשוני \(p\) כלשהו שמחלק את שניהם. נניח שהמחלקים הראשוניים השונים של \(n\) הם בדיוק \(p_{1},\dots,p_{k}\), אז הקבוצה \(A_{i}\) שלנו הפעם תהיה "קבוצת כל המספרים הטבעיים הקטנים או שווים ל-\(n\) שמתחלקים ב-\(p_{i}\)". את הגודל המדויק של הקבוצה הזו אנחנו יודעים – הוא בדיוק \(\frac{n}{p_{i}}\), מהנימוקים שנתתי קודם. וכמות המספרים שמתחלקים בשני ראשוניים \(p_{i},p_{j}\) היא \(\frac{n}{p_{i}p_{j}}\) וכן הלאה. אז הכלה והפרדה נותנת את הדבר הבא:

\(\varphi\left(n\right)=n-\sum_{i}\frac{n}{p_{i}}+\sum_{i,j}\frac{n}{p_{i}p_{j}}-\dots+\left(-1\right)^{k}\frac{n}{p_{1}\cdots p_{k}}\)

על פניו, לא ברור מה הנוסחה הזו עזרה לנו, אבל שימו לב לכך ש-\(n\) הוא גורם בכל אחד מהמחוברים, כך שניתן להוציא אותו החוצה ולהיוותר עם סכום מהצורה \(\left(1-\sum\frac{1}{p_{i}}+\sum\frac{1}{p_{i}p_{j}}-\dots+\left(-1\right)^{k}\frac{1}{p_{1}\cdots p_{k}}\right)\). מה שטוב בסכום הזה, שעדיין נראה מפלצתי, הוא שאפשר לכתוב אותו בצורה הרבה יותר פשוטה ומסודרת כמכפלה: \(\prod_{i=1}^{k}\left(1-\frac{1}{p_{i}}\right)\). כדי לראות את זה, שימו לב שאם פותחים את המכפלה הזו, מקבלים סכום של איברים כך שכל איבר הוא בעצמו מכפלה, שכל איבר בה הוא או \(1\) או \(-\frac{1}{p_{i}}\) (הדרך הפשוטה ביותר לראות זאת – נסו לעשות זאת עם שני ראשוניים בלבד).

אם כן, קיבלנו את הנוסחה \(\varphi\left(n\right)=n\prod_{p|n}\left(1-\frac{1}{p}\right)\) (\(p|n\) פירושו "מכפלה שנלקחת על כל הראשוניים \(p\) שמחלקים את \(n\)") שהיא קלה ביותר לחישוב, אם יודעים מיהם ה-\(p\)-ים המתאימים (ולדעת מי הם – זו כבר בעיה לא פשוטה כלל).

בואו נעבור עכשיו להפרות סדר, שגם בהן הכלה והפרדה נותנת נוסחה סגורה, אבל מרשימה אפילו יותר מאשר במקרה הקודם שכן היא לא תכלול שום מכפלה ושום סכום, בזכות תעלול מחדו"א שנשתמש בו. הפרת סדר היא בבסיסה תמורה – סידור בשורה של המספרים מ-\(1\) עד \(n\). יש באופן כללי \(n!=1\cdot2\cdots n\) תמורות; מהן אנחנו רוצים לחסר את מספר התמורות שבהן יש לפחות אינדקס אחד \(i\) כך שהמספר במקום ה-\(i\) הוא \(i\) עצמו (למשל, \(4132\) היא תמורה כזו עם האינדקס \(i=3\)).

למרבה המזל, את החישובים כאן קל מאוד לבצע. מספר התמורות שבהן \(k\) איברים ספציפיים נמצאים במקום הנכון שלהם הוא כמספר האפשרויות לסדר את כל יתר \(n-k\) האיברים בסדר שרירותי כלשהו, כלומר \(\left(n-k\right)!\). שימו לב לכך שאני מרשה לאיברים נוספים פרט ל-\(k\) האיברים הספציפיים להיות במקום הנכון שלהם; אני פשוט לא דורש זאת במפורש. לכן \(\left(n-k\right)!\) אינו מספר התמורות שבהן בדיוק \(k\) איברים נמצאים במקום הנכון שלהם; צריך להיזהר לא לחשוב כך בטעות.

עקרון ההכלה וההפרדה מניב לנו עכשיו את הנוסחה הבאה ל-\(D\left(n\right)\), מספר הפרות הסדר של \(n\) איברים:

\(D\left(n\right)=n!-{n \choose 1}\left(n-1\right)!+{n \choose 2}\left(n-2\right)!-\dots+\left(-1\right)^{n}{n \choose n}\left(n-n\right)!\). כדי להבין מה פשר המקדם \({n \choose k}\) שמופיע שם בואו נחשוב שניה איך אמורה להיראות הנוסחה: היא אמורה להתחיל עם \(n!\), ואז אמורים לחסר ממנה, לכל מקום בין 1 ל-\(n\), את מספר התמורות שבהן מקום זה מקובע. לכל מקום נקבל אותו מספר – \(\left(n-1\right)!\), ויש \({n \choose 1}\) מקומות כאלו, ומכאן הכפל. בדומה, \({n \choose 2}\) מתאים למספר האפשרויות לבחור זוג מקומות לקבע, וכן הלאה.

בואו נכתוב שוב את הנוסחה שקיבלתי, בצורה יותר קומפקטית: \(D\left(n\right)=\sum_{k=0}^{n}\left(-1\right)^{k}{n \choose k}\left(n-k\right)!\). האם יש דרך לפשט אותה עוד יותר? ובכן, \({n \choose k}=\frac{n!}{k!\left(n-k\right)!}\) כך שאפשר לעשות כאן צמצום קטן ולקבל \(D\left(n\right)=\sum_{k=0}^{n}\left(-1\right)^{k}\frac{n!}{k!}=n!\left(\sum_{k=0}^{n}\frac{\left(-1\right)^{k}}{k!}\right)\). הקומבינטוריקה מביאה אותנו עד כאן ותו לא, אבל עכשיו החדו"א יכול להיכנס לפעולה.

כל מי שמכיר חדו"א ובוהה בנוסחה \(\sum_{k=0}^{n}\frac{\left(-1\right)^{k}}{k!}\) כנראה ירגיש משהו מצלצל לו – זה נראה כמו פונקציית האקספוננט \(e^{x}=\sum_{k=0}^{\infty}\frac{x^{k}}{k!}\), רק שכאן הטור סופי ולא אינסופי. במילים אחרות, \(\sum_{k=0}^{n}\frac{\left(-1\right)^{k}}{k!}=e^{-1}-\sum_{k=n+1}^{\infty}\frac{\left(-1\right)^{k}}{k!}\). אז קיבלנו שהסכום הוא "כמעט" \(\frac{1}{e}\), רק שיש גם שארית מעצבנת \(\sum_{k=n+1}^{\infty}\frac{\left(-1\right)^{k}}{k!}\) שצריך להבין מה בדיוק, או לפחות בערך, הגודל שלה. במקרה הספציפי שלנו זה קל במיוחד כי הטור הוא מה שנקרא "טור לייבניץ" – טור מהצורה \(\sum\left(-1\right)^{n}a_{n}\) כש-\(a_{n}\) שואפת מונוטונית לאפס, וידוע שסכום של טור שכזה, בערכו המוחלט, הוא קטן או שווה לגודל האיבר הראשון בו. כלומר, \(\left|\sum_{k=n+1}^{\infty}\frac{\left(-1\right)^{k}}{k!}\right|\le\left|\frac{\left(-1\right)^{n+1}}{\left(n+1\right)!}\right|=\frac{1}{\left(n+1\right)!}\).

אם כן, קיבלנו את הנוסחה \(D\left(n\right)=n!\cdot\left(e^{-1}+\xi\left(n\right)\right)=\frac{n!}{e}+n!\xi\left(n\right)\), כשכתבתי את השגיאה ב-\(\xi\) בדיוק כדי שתיראה מכוערת ונרצה להיפטר ממנה. מה אנחנו יודעים עליה? ש-\(\left|n!\xi\left(n\right)\right|\le\frac{n!}{\left(n+1\right)!}=\frac{1}{n}\). במילים אחרות, עבור \(n\ge3\), השגיאה קטנה מחצי. זה מאפשר לנו לטעון את הטענה הנועזת הבאה: \(D\left(n\right)=\left[\frac{n!}{e}\right]\), כאשר הסוגריים המרובעים פירושם "ערך שלם" – המספר השלם הקרוב ביותר ל-\(\frac{n!}{e}\). זה עובד מכיוון שלכל מספר ממשי, הערך השלם שלו הוא במרחק לכל היותר \(\frac{1}{2}\) ממנו, בעוד שכל מספר שלם אחר הוא מרחק של לפחות \(\frac{1}{2}\) ממנו, ולכן אם כל ה"תיקון" שנדרש כדי לעבור מ-\(\frac{n!}{e}\) ל-\(D\left(n\right)\) הוא פחות מחצי, הערך השלם יביא אותנו ל-\(D\left(n\right)\) בודאות. את זה ש-\(D\left(n\right)=\left[\frac{n!}{e}\right]\) גם עבור \(n=1,2\) אפשר לבדוק בצורה ישירה, והנה קיבלנו נוסחה סגורה ופשוטה ל-\(D\left(n\right)\). אפשר גם להסיק מסקנה הסתברותית – ככל ש-\(n\) שואף לאינסוף, כך ההסתברות לקבלת הפרת סדר כשמגרילים תמורה באקראי שואפת ל-\(\frac{1}{e}\); הנה לנו דוגמה נאה למקום שבו \(e\) צץ באופן טבעי לגמרי בבעיה קומבינטורית שבכלל לא מזכירה אותו.

הכללה והפחדה

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

אם כן, תהא \(X\) קבוצה כלשהי בת \(n\) איברים (אפשר לחשוב עליה כעל קבוצה של "תכונות" אם זה עוזר לנו). ניקח מרחב וקטורי \(V\) של כל הפונקציות \(f:\mbox{P}\left(X\right)\to\mathbb{R}\), כאשר \(\mbox{P}\left(X\right)\) פירושו קבוצת החזקה של \(X\) – אוסף כל תת-הקבוצות של \(X\). במילים אחרות, כל פונקציה \(f\) כזו מגדירה ערך כלשהו שמתאים לתת-קבוצה של \(X\). קל לראות ש-\(V\) הוא באמת מרחב וקטורי מעל \(\mathbb{R}\) (למעשה, \(\mathbb{R}\) לא ממש חשוב כאן וכל שדה אחר היה עובד באותה מידה). כעת נגדיר טרנספורמציה לינארית \(T:V\to V\) באופן הבא:

\(\left(Tf\right)\left(A\right)=\sum_{B\supseteq A}f\left(B\right)\)

כלומר, בהינתן \(f\), הפונקציה החדשה ש-\(Tf\) מגדירה היא כזו שערכה על כל תת-קבוצה \(A\subseteq X\) הוא סכום ערכי \(f\) על כל ה-\(B\) שמכילות את \(A\). חשבו על זה כך: \(f\left(A\right)\) אומרת כמה איברים ביקום שלנו מקיימים בדיוק את התכונות שבקבוצה \(A\) ושום דבר אחר; \(Tf\left(A\right)\) אומר כמה איברים ביקום שלנו מקיימים לפחות את התכונות שב-\(A\), ואולי עוד דברים. בדרך כלל את \(f\) קשה לחשב ואילו את \(Tf\) קל, ולכן מה שאנחנו רוצים לעשות הוא "להפוך" את \(T\); לקבל איכשהו מ-\(Tf\) את \(f\) עצמה. לצורך כך צריך שהטרנספורמציה הלינארית שלנו תהיה הפיכה, ועקרון ההכלה וההפרדה אומר שזה בדיוק מה שקורה, וגם נותן לנו את הנוסחה המדוייקת של \(T^{-1}\):

\(\left(T^{-1}f\right)\left(A\right)=\sum_{B\supseteq A}\left(-1\right)^{\left|B-A\right|}f\left(B\right)\)

תכף נראה איך זה מתקשר לדברים שראינו עד כה, אבל לפני כן בואו נוכיח. מה שאנחנו בעצם רוצים להראות הוא שאם נגדיר טרנספורמציה לינארית \(S:V\to V\) על ידי \(\left(Sf\right)\left(A\right)=\sum_{B\supseteq A}\left(-1\right)^{\left|B-A\right|}f\left(B\right)\) אז יתקיים ש-\(ST=TS=I\). עכשיו, כמו שבדרך כלל קורה באלגברה לינארית, כל מה שצריך לעשות הוא להציב והכל כבר מסתדר מעצמו. הבה ונראה מהו \(\left(TSf\right)\):

\(\left(TSf\right)\left(A\right)=T\left(\sum_{B\supseteq A}\left(-1\right)^{\left|B-A\right|}f\left(B\right)\right)=\sum_{B\supseteq A}\left(-1\right)^{\left|B-A\right|}Tf\left(B\right)\)

\(=\sum_{B\supseteq A}\left(-1\right)^{\left|B-A\right|}\left(\sum_{C\supseteq B}f\left(C\right)\right)\)

כעת ננקוט בתעלול הטכני הסטנדרטי של שינוי סדר הסכימה. הסכום שלמעלה שווה ממש לסכום הבא:

\(\sum_{C\supseteq A}\left(\sum_{A\subseteq B\subseteq C}\left(-1\right)^{\left|B-A\right|}\right)f\left(C\right)\)

האינדקס בסכום האמצעי הוא \(B\). אז למה \(\left|B-A\right|\) יכול להיות שווה? ברור שערכיו נעים בין 0 ובין \(m=\left|C-A\right|\). כמה קבוצות \(B\) מקיימות ש-\(\left|B-A\right|=i\) עבור \(0\le i\le m\)? ובכן, בדיוק כמספר האיברים לבחור \(i\) מתוך \(m\) האיברים של \(C\) שאינם ב-\(A\), כלומר \({m \choose i}\). לכן את הסכום האמצעי אפשר לכתוב גם כ-\(\sum_{i=0}^{m}\left(-1\right)^{i}{m \choose i}=\left(1-1\right)^{m}\) (כאן השתמשתי בבינום של ניוטון), ולכן אם \(m>0\) אז הסכום האמצעי שווה לאפס, ואם \(m=0\) אז הסכום האמצעי שווה ל-1 (אני משתמש כאן בקונוונציה לפיה \(0^{0}=1\), אבל מי שלא מאמין לי יכול לבדוק ולהיווכח בכך ש-\(\sum_{A\subseteq B\subseteq C}\left(-1\right)^{\left|B-A\right|}\) אכן שווה 1 כאשר \(A=C\), מה שמצדיק את השימוש בקונוונציה \(0^{0}=1\) כאן).

לסיכום, קיבלנו ש-\(\left(TSf\right)\left(A\right)=f\left(A\right)\), וזאת לכל \(A\), ולכן \(TS=I\) כנדרש. זה מסיים את הוכחת עקרון ההכלה וההפרדה הכללי ביותר שאני מכיר, אבל – מה בעצם עשינו כאן, לעזאזל?

התחלתי את הפוסט עם הנוסחה \(\left|\bigcup_{i=1}^{n}A_{i}\right|=\sum_{i=1}^{n}\left|A_{i}\right|-\sum_{1\le i<j\le n}\left|A_{i}\cap A_{j}\right|+\dots+\left(-1\right)^{n+1}\left|\bigcap_{i=1}^{n}A_{i}\right|\). כאן חשבנו על \(A_{i}\) בתור "קבוצת כל האיברים שמקיימים את התכונה ה-\(i\) לפחות" (לא בדיוק!), ולכן על \(A_{i}\cap A_{j}\) בתור כל האיברים שמקיימים לפחות את התכונות \(i,j\) וכן הלאה. בלשון הקבוצות של המשפט שלמעלה, \(S=\left\{ 1,2,\dots,n\right\} \) ו-\(f\left(A\right)=\left|\bigcap_{i\in A}A_{i}\right|\) (כן, יש לי כאן שימוש כפול מוזר ב-\(A\) וב-\(A_{i}\) במשמעויות שונות לגמרי. אל תגידו לי שזה מה שיחסל אתכם עכשיו).

הנוסחה שלעיל מתארת את \(\bigcup_{i=1}^{n}A_{i}\), שהוא מספר האיברים שמקיימים לפחות אחת מהתכונות, אבל בדרך כלל התעניינו דווקא במספר האיברים שלא מקיימים אף אחת מהתכונות, מה שגרם לנו לחסר את הגודל של \(\bigcup_{i=1}^{n}A_{i}\) ממספר האיברים הכולל ב"עולם" שלנו, שזו דרך אחרת להגיד "מספר האיברים שמקיימים לפחות אפס תכונות" (מעין "חיתוך ריק" שלא ממש ברור איך לכתוב אותו).

בואו נחדד את העניין, אם כן. נגדיר פונקציה\(f_{=}\left(A\right)\) ששווה למספר האיברים שמקיימים בדיוק את התכונות שב-\(A\). אנחנו מעוניינים לרוב למצוא את \(f_{=}\left(\emptyset\right)\), אבל לפעמים גם עבור קבוצות מחוכמות יותר. כעת, נגדיר גם \(f_{\ge}\left(A\right)\) בתור מספר האיברים שמקיימים לפחות את התכונות ב-\(A\), כלומר בדיוק \(f_{\ge}\left(A\right)=\left|\bigcap_{i\in A}A_{i}\right|\). כעת קל לראות שמתקיים הקשר

\(f_{\ge}\left(A\right)=\sum_{B\supseteq A}f_{=}\left(B\right)\) (הסבירו לעצמכם למה!) כלומר \(f_{\ge}=Tf_{=}\), ולכן \(f_{=}=T^{-1}f_{\ge}\), כלומר

\(f_{=}\left(A\right)=\sum_{B\supseteq A}\left(-1\right)^{\left|B-A\right|}f_{\ge}\left(B\right)\)

ובפרט עבור \(A=\emptyset\) נקבל

\(f_{=}\left(\emptyset\right)=\sum_{A}\left(-1\right)^{\left|A\right|}f_{\ge}\left(A\right)\)

וזוהי בדיוק נוסחת ההכלה וההפרדה המוכרת והאהובה שלנו, רק בניסוח יותר קומפקטי ויותר קל להבנה (כן! יותר קל! אחרי שבוהים בה הרבה, כנראה…).

אם כן, ראינו שעקרון ההכלה וההפרדה ניתן להצגה בתור מעין "היפוך" – מתחילים מפונקציה א' שמוגדרת באמצעות סכום על ערכים של פונקציה ב', "הופכים" ומקבלים את פונקציה ב' מוצגת בתור סכום משוקלל מסויים על ערכים של פונקציה א'. זה, על רגל אחת, גם התוכן של נוסחת ההיפוך של מביוס; מיהי, מהי ואיך היא מתקשרת למה שראינו פה – בפעם הבאה.

פונקציות יוצרות – והפעם ברצינות

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

נתחיל עם המה ולמה. פונקציות יוצרות הן מושג בקומבינטוריקה אנומרטיבית – הענף שבו מתעסקים בשאלת "כמה?". בעיה קומבינטורית ממוצעת היא זו: כמה דרכים יש להחזיר ל-\(n\) אנשים את המעיל שהם מסרו בתחילת המסיבה כך שאף אחד לא יקבל בחזרה את המעיל שלו? כמה דרכים יש לפרק את המספר \(n\) לסכום של מספרים טבעיים קטנים או שווים לו? כמה ססמאות מאורך \(n\) אפשר לבחור? וכו' וכו'.

שימו לב שלא שאלתי שאלה בסגנון "כמה תוצאות אפשריות יש בלוטו?". זה מחדד את מה שאנחנו מדברים עליו כאן – בעיית ספירה שתלויה בפרמטר. בכל הבעיות שתיארתי למעלה כיכב \(n\) בתור פרמטר שמאפיין את ה"גודל" של האובייקטים שאנחנו סופרים כרגע. אני שם את המילה "גודל" במרכאות כי הפירוש שלה יכול להשתנות מבעיה לבעיה; מה שחשוב כאן הוא שאנחנו סופרים את כמות האיברים במחלקה אינסופית של אובייקטים, נקרא לה \(A\), שבה לכל \(n\) יש רק מספר סופי של אובייקטים מגודל \(n\), והאתגר שלנו הוא למצוא את \(a_{n}\) – מספר האובייקטים ב-\(A\) שהם מגודל \(n\), לכל \(n\).

האופן שבו אנחנו חושבים בדרך כלל על פתרון לבעיה כמו זו הוא נוסחה סגורה עבור \(a_{n}\). נוסחה סגורה היא ביטוי אלגברי פשוט שנותן לנו את \(a_{n}\) כפונקציה כלשהי של \(n\), למשל \(a_{n}=\frac{n\left(n+1\right)}{2}\) או \(a_{n}=\frac{n!}{\left(n-3\right)!}\) הן נוסחאות סגורות. לרוע המזל, בקומבינטוריקה נוסחאות סגורות הן עניין נדיר למדי ולרוב פשוט לא ניתן למצוא כאלו. זו הבעיה הבסיסית. בעיית החלוקה שלעיל של \(n\) למספרים טבעיים היא דוגמה לבעיה שלא ידועה לה נוסחה סגורה; לא מזמן כתבתי פוסט בעניין. לפעמים הנוסחה הסגורה היא "מוזרה" קצת באופיה – למשל, לבעיה עם המעילים יש נוסחה סגורה פשוטה: \(a_{n}=\left[\frac{n!}{e}\right]\), כאשר הסוגריים המרובעים פירושם לעגל את \(\frac{n!}{e}\) למספר הטבעי הקרוב ביותר, ו-\(e\) הוא פשוט הקבוע המפורסם (איך מגיעים לנוסחה הזו? זה עוד תרגיל חביב בקומבינטוריקה שאדבר עליו בפעם אחרת), אבל בדרך כלל פשוט אין נוסחה כזו. לפעמים יש נוסחה אבל היא מסובכת להחריד וקשה להבין ממנה משהו, בעיקר כשרוצים פריט מידע שלא דורש לדעת את \(a_{n}\) בדיוק מוחלט – למשל, רק את סדר הגודל של \(a_{n}\).

אם כן, לפעמים צריך גישה שונה לגמרי לבעיות קומבינטוריות ופונקציות יוצרות מציעות גישה שונה לגמרי שכזו. בעוד שנוסחה סגורה עבור \(a_{n}\) מתארת איבר בודד בסדרה, פונקציה יוצרת היא דרך לתאר את כל הסדרה (האינסופית!) "בבת אחת".

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

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

בהינתן הסדרה \(a_{n}\) (כש-\(n\ge0\)), הפונקציה היוצרת שמתאימה לסדרה היא הביטוי \(\sum_{n=0}^{\infty}a_{n}x^{n}\). אני בכוונה כותב "ביטוי" ולא "פונקציה", כי על הדבר הזה לא חושבים בהכרח בתור פונקציה. פונקציה פירושה שמציבים ערכים בתוך \(x\), אבל אף אחד לא מבטיח לנו שאם נציב ערך בתוך \(x\) התוצאה שנקבל תתכנס (במובן של חשבון אינפיניטסימלי). מבחינתנו, לפחות כרגע, היצור הזה הוא ביטוי פורמלי בלבד.

טוב, זה נשמע די מטופש, חייבים להודות, אבל כדאי לזכור שבמתמטיקה גם פולינומים הם כאלו. למשל, היצור \(x^{2}+7x\) – אנחנו יכולים לחשוב עליו בתור פונקציה, אבל אז נאבד חלק מהמידע – מה בדיוק המקדמים של כל חזקה של \(x\) (ולפעמים זה אובדן של ממש; כך למשל בשדה סופי עם \(q\) איברים הפולינום \(x^{q}-x\) והפולינום \(0\) מגדירים בדיוק את אותה פונקציה, אבל כפולינומים הם שונים). החשיבות של פולינומים באלגברה היא אדירה – למשל, בניית שדות הרחבה מתוארת, פורמלית, כבניה של חוגי מנה של חוגי פולינומים. למעשה, יצורים מהצורה \(\sum_{n=0}^{\infty}a_{n}x^{n}\) הם הכללות טבעיות של פולינומים; גם על כל פולינום אפשר לחשוב כיצור מהצורה הזו, עבור סדרה שכולה אפסים החל ממקום מסויים. לביטוי \(\sum_{n=0}^{\infty}a_{n}x^{n}\) קוראים "טור חזקות פורמלי".

אחת הסיבות שבגללן פולינומים הם יצורים מעניינים היא שיש להם מבנה אלגברי מעניין – פעולות חיבור וכפל שהופכות אותם למה שנקרא חוג (שהוא, אה, קבוצה שעל אבריה מוגדרות פעולות חיבור וכפל; כמובן שיש כמה דרישות ספציפיות מהחיבור והכפל הללו). בפרט, כפל פולינומים הוא פעולה מעניינת מאוד, וכפל של טורי חזקות הוא הכללה טבעית שלו. אם יש לנו שני טורי חזקות, \(a\left(x\right)=\sum_{n=0}^{\infty}a_{n}x^{n}\) ו-\(b\left(x\right)=\sum_{n=0}^{\infty}b_{n}x^{n}\), אז אפשר להגדיר חיבור וכפל שלהם כך (אני אשתמש ב-\(c\left(x\right)=\sum_{n=0}^{\infty}c_{n}x^{n}\) בתור תוצר הפעולה):

\(c\left(x\right)=a\left(x\right)+b\left(x\right)\) אם \(c_{n}=a_{n}+b_{n}\); זהו חיבור טבעי "איבר איבר".

\(c\left(x\right)=a\left(x\right)\cdot b\left(x\right)\) אם \(c_{n}=\sum_{i=0}^{n}a_{i}b_{n-i}\). זה אותו הדבר עם כמו עם כפל פולינומים; נסו להסביר לעצמכם למה זו הגדרה נכונה והגיונית. אפשר לחשוב על הכפל הזה כך – אנחנו לוקחים את שתי הסדרות וכותבים אותן זו מעל זו, "הופכים" את הסדרה של ה-\(b_{n}\)-ים, מזיזים אותה קצת (\(n\) צעדים) ואז אנחנו מקבלים שיש רק איזור חפיפה מוגבל בין שתי הסדרות. אנחנו כופלים כל איבר בזה שמתחתיו, וסוכמים את הכל. לפעולה הזו קוראים קונבולוציה, והיא מופיעה באינספור תחומים מתמטיים. כפל פולינומים וטורי חזקות תופס אותה באופן טבעי.

מה שצריך לשים לב אליו כאן הוא שלמרות ששני טורי החזקות הם אינסופיים, כל מקדם \(c_{n}\) נקבע באמצעות כמות סופית של איברים, כלומר \(c\left(x\right)\) מוגדר היטב בלי להיכנס בכלל לשאלות של התכנסות של טורים אינסופיים. זה בדיוק מה שמאפשר לנו להישאר פורמליים מבלי לגלוש לאנליזה.

בואו נעבור לדוגמה – הסדרה \(1,1,1,\dots\). האם יש משהו (אינסופי) פשוט מזה? הפונקציה היוצרת המתאימה היא \(1+x+x^{2}+x^{3}+\dots=\frac{1}{1-x}\). איך הגעתי לכך שאגף שמאל שווה ל-\(\frac{1}{1-x}\) אתם שואלים? אה, בקלות – סכום של טור הנדסי! אבל, אתם צועקים עכשיו, טור הנדסי אינסופי מתכנס רק כש-\(\left|x\right|<1\), ובכלל מה הולך כאן, אמרת שלא מדברים על התכנסות!

כאן אני שולף שפן מהכובע, ואני מקווה שאני מפיל אסימון כלשהו למי שמכיר פונקציות יוצרות רק בערך – את השוויון \(\sum_{n=0}^{\infty}x^{n}=\frac{1}{1-x}\) אפשר להוכיח באופן הכי פורמלי שאפשר באמצעות ההגדרות שכבר נתתי, ובלי להשתמש כלל באנליזה! מה שאנחנו רוצים להראות הוא ש-\(1=\left(1-x\right)\cdot\sum_{n=0}^{\infty}x^{n}\). אם נחשוב על זה קצת, על \(1\) אפשר לחשוב כטור חזקות פורמלי (שמתאים לסדרה \(1,0,0,\dots\)) וגם על \(\left(1-x\right)\) אפשר לחשוב כטור חזקות פורמלי (שמתאים לסדרה \(1,-1,0,0,\dots\)) ולכן הטענה שבשוויון למעלה היא בעצם טענה פשוטה על כפל של טורי חזקות.

אם כן, הבה ונסמן \(\sum_{n=0}^{\infty}c_{n}=\left(1-x\right)\cdot\sum_{n=0}^{\infty}x^{n}\). מהו \(c_{0}\)? על פי הגדרה, \(c_{0}=a_{0}b_{0}=1\cdot1=1\). יופי, ומהו \(c_{1}\)? על פי הגדרה, \(c_{1}=a_{0}b_{1}+a_{1}b_{0}=1\cdot1-1\cdot1=0\). ומה יהיה \(c_{2}\)…?

קל לראות ש-\(c_{n}\), לכל \(n\ge1\), יהיה אפס, כי תמיד נקבל \(c_{n}=a_{0}b_{n}+a_{1}b_{n-1}\) (כל שאר ה-\(a_{i}\)-ים מתאפסים) ומכיוון שכל ה-\(b_{i}\)-ים הם תמיד 1 ו-\(a_{0}=1,a_{1}=-1\) נקבל תמיד אפס. מכאן שקיבלנו את השוויון \(\sum_{n=0}^{\infty}x^{n}=\frac{1}{1-x}\) בצורה הכי פורמלית שרק אפשר (כל עוד זוכרים לחשוב על ביטוי מהצורה \(\frac{1}{f\left(x\right)}\) בתור "הפונקציה ההופכית של \(f\left(x\right)\); זו שכשכופלים אותה ב-\(f\left(x\right)\) מקבלים 1"; זה תרגיל נחמד להראות שלטור חזקות כלשהו קיימת פונקציה הופכית אם ורק אם המקדם הראשון בו שונה מאפס).

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

נניח ש-\(A,B\) הם קבוצות של אובייקטים. \(a_{n}\) הוא מספר האובייקטים מגודל \(n\) ב-\(A\) ו-\(b_{n}\) הוא מספר האובייקטים מגודל \(n\) ב-\(B\), ו-\(a\left(x\right),b\left(x\right)\) הפונקציות היוצרות המתאימות. מה מתאר \(a\left(x\right)+b\left(x\right)\)? ובכן, את הפונקציה היוצרת של \(A\cup B\) (הקבוצה שמכילה את כל האיברים של \(A\) וגם את כל האיברים של \(B\)), בתנאי ש-\(A,B\) זרות, כלומר ללא איברים משותפים (כי אחרת איבר משותף היה מופיע רק פעם אחת ב-\(A\cup B\) אבל נספר פעמיים). בשביל שהסימונים יישארו פשוטים אני אסמן ב-\(A+B\) תמיד את האיחוד \(A\cup B\) תחת ההסכמה שאם יש ב-\(A,B\) איברים זהים, כל אחד מהם זוכה לאיזה סימון ייחודי שמבדיל אותו כך שהאיחוד הוא תמיד זר (תרגיל – איך עושים כזה תעלול פורמלית?)

ומה מתאר \(a\left(x\right)\cdot b\left(x\right)\)? או, עכשיו זה נהיה כיפי. הוא מתאר את \(A\times B\) – אוסף הזוגות של איבר מ-\(A\) ואיבר מ-\(B\), אבל יש טוויסט כלשהו – בעצם בנינו כאן סוג חדש של אובייקטים – אובייקטים שהם זוגות, ולכן צריך להגדיר עבורם מושג חדש של "גודל". ההגדרה מתבקשת: הגודל של האיבר \(\left(a,b\right)\), כש-\(a\in A\) ו-\(b\in B\) הם איברים כלשהם (ממש לא בהכרח מאותו הגודל) הוא פשוט הגודל של \(a\) ועוד הגודל של \(b\). לא קשה לראות ש-\(a\left(x\right)\cdot b\left(x\right)\) אכן מתאר את הפונקציה היוצרת של \(A\times B\) תחת ההגדרה הזו.

אפשר כמובן לכפול קבוצה בעצמה; נסמן ב-\(A^{n}\) את מה שמקבלים כשכופלים את \(A\) בעצמה \(n\) פעמים (כדי לא להסתבך יותר מדי פורמלית, חשבו על כך כעל סדרה של \(n\) איברים מתוך \(A\), והגודל של הסדרה הוא סכום הגדלים של אבריה). כמו כן לצרכי נוחות הסימון מגדירים את \(A^{0}\) בתור קבוצה שמכילה איבר בודד מגודל 0 שמסומן ב-\(\varepsilon\) – כל מטרת היצור הזה היא לפשט לנו את הסימונים אז אל תחפשו בו יותר מדי משמעות.

כעת נגדיר את הפעולה הבאה: \(A^{*}=\bigcup_{n=0}^{\infty}A^{n}\). דהיינו, \(A^{*}\) מכילה סדרות מכל גודל סופי שהוא של איברי \(A\). נניח ש-\(a\left(x\right)\) היא הפונקציה היוצרת של \(A\); אז הפונקציה היוצרת של \(A^{*}\) היא – הפתעה הפתעה – \(\frac{1}{1-a\left(x\right)}\). קרוב לודאי שחלקכם צועקים כרגע "הא! תפסנו אותך! מה אם \(a\left(x\right)=1\) ותו לא?" ואתם צודקים – הבניה \(A^{*}\) היא בעייתית אם \(A\) מכיל איבר כלשהו מגודל 0, שכן אז הדרישה שלנו שלכל \(n\) יהיה רק מספר סופי של איברים מגודל \(n\) הולכת לפח (למשל, אם \(\alpha\) הוא איבר ב-\(A\) מגודל 0, ו-\(\gamma\) הוא איבר מגודל \(n\), אז אינסוף איברים ב-\(A^{*}\) שכולם מגודל \(n\) הם כל האיברים מהצורה \(\left(\gamma,\alpha,\alpha,\dots\alpha\right)\)), לכן עבור קבוצות \(A\) שכאלו ממילא אין משמעות קומבינטורית סבירה ל-\(A^{*}\); אבל לכל קבוצה אחרת \(\frac{1}{1-a\left(x\right)}\) מוגדר היטב. למה זה מה שיוצא? ובכן, מכללי החיבור והכפל שכבר הראיתי ברור שהפונקציה היוצרת של \(A^{*}\) היא \(1+a\left(x\right)+a^{2}\left(x\right)+\dots=\frac{1}{1-a\left(x\right)}\).

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

נגדיר \(A=\left\{ 0,1\right\} \) כשהגודל של 0,1 הוא 1. מיידי לראות ש-\(A^{*}\) היא בדיוק המחלקה שאנחנו מעוניינים בה (\(\varepsilon\) מתפרש כאן כסדרה חסרת איברים). מה הפונקציה היוצרת של \(A\)? פשוט מאוד, \(a\left(x\right)=2x\) (שני איברים מגודל 1 ותו לא). מכאן שהפונקציה היוצרת שאנחנו רוצים היא \(\frac{1}{1-2x}\), סוף הסיפור. זו גם פונקציה יוצרת שקל לפתח חזרה לטור חזקות כדי לקבל נוסחה מפורשת למקדמים: \(\sum\left(2x\right)^{n}=\sum2^{n}x^{n}\), כלומר יש \(2^{n}\) סדרות בינאריות מאורך \(n\). כמובן, זה דבר שקל לדעת גם בשיטות קומבינטוריות אחרות, אבל קיבלנו את זה כאן בדרך חדשה ושונה לגמרי – בעצם, דרך שהיא חפה כמעט לחלוטין מטיעונים קומבינטוריים (טיעונים שמוחבאים אי שם בהוכחה של ההתאמה בין פעולות אלגבריות על פונקציות יוצרות ופעולות קומבינטוריות על המחלקות המתאימות).

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

תחת ההגדרה הזו צץ תיאור פשוט מאוד של עצים באופן רקורסיבי – "עץ" הוא זוג שכולל צומת יחיד וסדרה של אפס או יותר עצים (הצומת הוא האיבר הראשון בזוג והסדרה היא האיבר השני). אם נסמן ב-\(G\) את מחלקת העצים וב-\(A\) קבוצה שיש בה איבר בודד מגודל 1 (\(A=\left\{ \bullet\right\} \) – חשבו על \(\bullet\) בתור צומת), אז קיבלנו את המשוואה הבאה שמגדירה את \(G\):

\(G=A\times G^{*}\)

המשוואה הזו היא בסך הכל תיאור פורמלי של התיאור המילולי שנתתי למעלה (זוג שכולל את הצומת הבודד של \(A\) ואז סדרה של עצים – \(G^{*}\) היא בדיוק זה). כעת, אם \(g\left(x\right)\) היא הפונקציה היוצרת של \(G\) ו-\(a\left(x\right)=x\) היא הפונקציה היוצרת של \(A\), נקבל מייד ש-\(g=\frac{x}{1-g}\). זה מוביל למשוואה \(g-g^{2}=x\), או בניסוח טיפה שונה \(g^{2}-g+x=0\), ועל ידי נוסחת השורשים הרגילה נקבל \(g=\frac{1-\sqrt{1-4x}}{2}\).

כמובן שעולות מיד שתי שאלות. ראשית, נוסחת השורשים נותנת שני פתרונות; למה \(\frac{1+\sqrt{1-4x}}{2}\) אינו הפתרון ה"נכון"? ושנית, מה זה בכלל \(\sqrt{1-4x}\) בהקשר ה"פורמלי" שלנו? ובכן, זהו טור חזקות שכאשר כופלים אותו בעצמו מקבלים את \(1-4x\). האם הוא בהכרח קיים? כאן נחלצת לעזרתנו תוצאה מוכרת – ההכללה של הבינום של ניוטון לחזקות לא שלמות:

\(\left(1+y\right)^{\alpha}=1+\alpha y+\frac{\alpha\left(\alpha-1\right)}{2!}y^{2}+\dots\). האופן שבו מוכיחים את הנוסחה הזו הוא באמצעות אנליזה – מפתחים את הפונקציה \(\left(1+y\right)^{\alpha}\) לטור חזקות. אנחנו עובדים בעולם פורמלי ולא יכולים להשתמש בנימוקים הללו אבל זה לא מונע מהבינום של ניוטון להצביע על האופן שבו \(\sqrt{1+y}\) חייב להיראות, אם יש לו משמעות כטור חזקות: הוא חייב להיות \(1+\frac{1}{2}y-\frac{1}{8}y^{2}+\frac{1}{16}y^{3}-\frac{5}{128}y^{4}+\dots\) (יש גם צורה כללית סגורה לביטוי: \(\sqrt{1+y}=\sum_{n=0}^{\infty}\frac{\left(-1\right)^{n}\left(2n\right)!}{\left(1-2n\right)\left(n!\right)^{2}4^{n}}y^{n}\) – לא הכי יפה, חייבים להודות). אם טורחים לשבת ולכפול את טור החזקות הזה בעצמו, פורמלית, מקבלים את \(1+y\), כך שגם מבחינה פורמלית לחלוטין אין לנו בעיות עם שורשים פשוטים.

כעת, אם מציבים במקום \(y\) את \(-4x\) מקבלים \(1-2x-2x^{2}-4x^{3}-10x^{4}+\dots\). אם לזה היינו מוסיפים 1 ומחלקים ב-2, היינו מקבלים תוצאה לא קומבינטורית בעליל – טור חזקות שיש לו מקדמים שליליים, כך שהפתרון \(\frac{1+\sqrt{1-4x}}{2}\) אינו יכול להיות הפתרון המתאים לבעיה שלנו; הפתרון חייב להיות \(\frac{1-\sqrt{1-4x}}{2}\), שנותן לנו את הסדרה \(x+x^{2}+2x^{3}+5x^{4}+\dots\). אם נאזור אומץ ונציב \(y=-4x\) בנוסחה הכללית שתיארתי למעלה ונבצע את כל הפישוטים, נקבל שהפונקציה היוצרת היא \(\sum_{n=1}^{\infty}\frac{\left(2n\right)!}{2\left(2n-1\right)\left(n!\right)^{2}}x^{n}\). אפילו את זה אפשר לפשט עוד טיפה אם שמים לב לכך ש-

\(\frac{\left(2n\right)!}{2\left(2n-1\right)\left(n!\right)^{2}}=\frac{\left(2n\right)\cdot\left(2n-1\right)\cdot\left(2n-2\right)!}{2\left(2n-1\right)n^{2}\left(\left(n-1\right)!\right)^{2}}=\frac{1}{n}{2n-2 \choose n-1}\)

כלומר, בסופו של דבר \(g\left(x\right)=\sum_{n=1}^{\infty}\frac{1}{n}{2n-2 \choose n-1}x^{n}\). שימו לב לטכניקות הלא קומבינטוריות בעליל שהשתמשנו בהן כאן; הקומבינטוריקה נגמרה באבחנה הפשוטה (והיפה) לפיה \(G=A\times G^{*}\); מכאן זה היה תהליך אלגברי/אנליטי סטנדרטי לגמרי – קצת מלוכלך כשעושים אותו ביד בפעם הראשונה, אבל לא משהו רציני למי שכבר משופשף בעניינים הללו ובוודאי שלא בעיה למערכת אלגברה ממוחשבת שתפקידה להתמודד עם משוואות כאלו. בסופו של דבר הגענו אפילו לנוסחה סגורה: מספר העצים הוא \(\frac{1}{n}{2n-2 \choose n-1}\). עכשיו כבר אפשר לגלות את הסוד: המספרים \(C_{n}=\frac{1}{n+1}{2n \choose n}\) מוכרים מאוד בקומבינטוריקה ונקראים "מספרי קטלן"; מה שהוכחנו פה הוא שמספר העצים על \(n\) קודקודים הוא בדיוק מספר קטלן ה-\(n-1\) (למי שמכיר את מספרי קטלן אולי נופל פתאום אסימון; מספרי קטלן ניתנים להגדרה באמצעות נוסחת נסיגה שגם היא משתמשת בקונבולוציה).

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

משפט רמזי

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

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

אוקיי, ולמה כשיש שישה אנשים זה כן עובד? נתחיל שוב מצ'נדלר. יש לו חמישה חברים שמשתתפים במשחק, ולכן לפחות שלושה מהם שונאים אותו, או שלפחות שלושה מהם אוהבים אותו (הפעם זה לא בדיוק "או" מתמטי – במובהק רק אחת משתי האפשרויות תתרחש) – זו דוגמה נאה לשימוש בעקרון שובך היונים הכללי יותר שאומר שאם מחלקים \(n\) עצמים ל-\(m\) תאים יש בהכרח תא שמכיל לפחות \(\left\lceil \frac{n}{m}\right\rceil \) עצמים (הסימון הזה הוא לערך שלם עליון – המספר הטבעי הקרוב ביותר מלמעלה ל-\(\frac{n}{m}\)).

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

התרגיל הבא בתור הוא להראות שאם יש 9 אנשים, אז מובטח שתהיה שלישיית שונאים או רביעיית אוהבים (או לחילופין, תהיה שלישיית אוהבים או רביעיית שונאים – הסבירו לעצמכם למה זה לא אותו דבר כמו לומר שתהיה רביעיית אוהבים או רביעיית שונאים, מה שדורש כבר 18 אנשים), ונראה לי שהעיקרון כבר ברור. השאלה שאנו שואלים את עצמנו היא – האם זה תמיד עובד? האם לכל \(r,s\) קיים מספר חברים, שנסמן \(R\left(r,s\right)\), כך שבקבוצה עם לפחות \(R\left(r,s\right)\) אנשים מובטחת לנו קבוצה של \(r\) אוהבים או קבוצה של \(s\) שונאים? משפט רמזי אומר שהתשובה חיובית בכך שהוא נותן חסם עליון על \(R\left(r,s\right)\) לכל \(r,s\). מה שדיברנו עליו בתחילת הפוסט הוא בדיוק המקרה של \(R\left(3,3\right)\) וראינו כי \(R\left(3,3\right)=6\).

ההוכחה של המשפט היא באינדוקציה, ואינדוקציה קצת יותר מחוכמת מהרגיל במובן זה שהיא "דו ממדית". ראשית שמים לב לכך ש-\(R\left(1,s\right)=R\left(r,1\right)=1\) תמיד, באופן די טיפשי – קבוצה של אדם בודד היא תמיד קבוצה של אוהבים/שונאים "באופן ריק". למי שזה נשמע לו לא הגיוני בעליל, תחשבו על זה כך – קבוצת אנשים היא קבוצה של אוהבים או שונאים כל עוד לא הוכח אחרת; כדי להוכיח שקבוצה איננה קבוצת אוהבים צריך להביא זוג שונאים בתוכה, וכדי להוכיח שהיא לא קבוצת שונאים צריך להביא זוג אוהבים בתוכה. בקבוצה בעלת אדם אחד אי אפשר להביא זוג שכזה ממילא, ולכן הקבוצה נחשבת הן לקבוצת אוהבים והן לקבוצת שונאים בו זמנית. כן, זה מוזר וקשה לעיכול למדי למי שטרם נתקל בשיקולים שכאלו, אבל במתמטיקה הם נפוצים למדי ותקינים לחלוטין.

השלב הבא באינדוקציה הוא זה: אנחנו רוצים למצוא חסם עליון על \(R\left(r,s\right)\) בהינתן שאנחנו כבר יודעים חסמים עליונים על \(R\left(r-1,s\right)\) ו-\(R\left(r,s-1\right)\). החסם העליון יהיה פשוט למדי – נוכיח שמתקיים \(R\left(r,s\right)\le R\left(r-1,s\right)+R\left(r,s-1\right)\), וחסל.

אם כן, הבה ונתבונן על קבוצה בעלת \(R\left(r,s\right)\) אנשים. ניקח איש אחד, נקרא לו צ'נדלר, ונחלק את שאר האנשים לשתי קבוצות – חברי צ'נדר ואויבי צ'נדלר. אני מניח שאתם מבינים לאן אני הולך – הפתרון של המקרה הכללי יהיה הכללה פשוטה של המקרה של \(R\left(3,3\right)\). מה שאנחנו רוצים לראות הוא שיש לצ'נדלר מספיק חברים או מספיק אויבים כדי להפעיל אחת מהנחות האינדוקציה.

אם לצ'נדלר יש לפחות \(R\left(r-1,s\right)\) חברים, סיימנו – בקבוצה הזו או שיש \(s\) אויבים (ואז סיימנו) או שיש בה \(r-1\) חברים ואז יחד עם צ'נדלר נקבל קבוצה של \(r\) חברים וסיימנו. בדומה, אם יש לו לפחות \(R\left(r,s-1\right)\) אויבים סיימנו באותו האופן. למה לא ייתכן שאין לו לא מספיק חברים ולא מספיק אויבים?

כדי לא להתבלבל נכניס עוד כמה סימונים למשחק. \(A\) יהיה מספר החברים של צ'נדלר, \(B\) יהיה מספר האויבים שלנו, וראינו ש-\(A+B+1=R\left(r-1,s\right)+R\left(r,s-1\right)\) (הפלוס 1 הוא כי גם את צ'נדלר סופרים). אז אם \(A<R\left(r-1,s\right)\) וגם \(B<R\left(r,s-1\right)\) זה אומר ש-\(A+B\le R\left(r-1,s\right)+R\left(r,s-1\right)-2\), כלומר שלא ייתכן ש-\(A+B+1=R\left(r-1,s\right)+R\left(r,s-1\right)\) (למי שעדיין לא רואה את זה, \(a<b\) שקול לאמירה ש-\(a\le b-1\) אם \(a,b\) הם טבעיים; זו אבחנה מועילה מאוד לעתים).

זה מסיים את ההוכחה; עוד הרחבה לא מסובכת מטפלת במקרה יותר כללי, שבו זוג אנשים יכול להיות יותר מסתם חברים או אויבים, אלא יש \(s\) סוגים שונים אפשריים של קשרים ביניהם – ושוב, אפשר להראות שלכל סדרת מספרים \(r_{1},r_{1},\dots,r_{s}\) קיימת כמות אנשים שהחל ממנה, מובטח שעבור \(i\) כלשהו יש קבוצה של \(r_{i}\) אנשים שהקשרים ביניהם הם רק מסוג \(i\). בניסוח אינטואיטיבי יותר ופחות פורמלי – במבנים גדולים מספיק חייבות לצוץ תבניות מסויימות (זה, על רגל אחת, הרעיון של תורת רמזי; משפט רמזי מטפל בסוג ספציפי של תבניות – בלשון מתמטית, הוא מטפל בתת-גרפים מונוכרומטיים של גרף עם קשתות צבועות).

לסיום, הנה שאלה קטנה וחביבה. ראינו ש-\(R\left(3,3\right)=6\), כלומר שאם יש 6 אנשים מובטחת לנו שלישיית חברים או שלישיית שונאים, וש-5 אנשים אינם מספיקים. אפשר להראות גם ש-\(R\left(4,4\right)=18\). אם כן, מהו \(R\left(5,5\right)\)?

באופן מפתיע למדי, ממבט ראשון, התשובה אינה ידועה עד היום. משפט רמזי אמנם נותן חסם עליון פשוט על \(R\left(5,5\right)\), אבל לא עוזר למצוא את הערך המדויק שלו. בדי עמל הצליחו המתמטיקאים להראות ש-\(43\le R\left(5,5\right)\le49\), אבל זהו זה. הרי לכם בעיה פתוחה במתמטיקה שתיאוריה הוא אלמנטרי דיו כדי להיות מוסבר בפוסט קצר. אתם עשויים לתהות מה הקושי הגדול כל כך – האם לא ניתן לגייס מחשבים לעבודה ולעשות חיפוש ממצה כלשהו? נאמר, ניקח את כל הקבוצות האפשריות של יחסי אהבה/שנאה על 43 אנשים ונבדוק לכל אחת… כן, ובכן, תשכחו מזה. אם יש לנו 43 אנשים אז יש לנו \(\frac{43\cdot42}{2}=903\) זוגות בסך הכל. לכל אחד מהם אנחנו יכולים לבחור, באופן בלתי תלוי באחרים, ביחס אהבה/שנאה, כך שיש לנו כבר \(2^{903}\) קבוצות אפשריות. המספר \(2^{903}\) הוא גדול. ממש, ממש גדול. כמה גדול? גדול להחריד גם בהשוואה למספרים הגדולים שדיברתי עליהם בפוסט הזה. אז חיפוש ממצה הוא כיוון אבוד לחלוטין; הכרחי יהיה לעשות הרבה עבודת הכנה מתמטית תיאורטית כדי שתהיה תקווה להריץ איזה חיפוש מחשב שגם יתן את התוצאה הנכונה. ונניח שנצליח, האתגר הבא יהיה מציאת \(R\left(6,6\right)\). כדי להבין עד כמה הקפיצה הזו בקושי בין \(R\left(5,5\right)\) ו-\(R\left(6,6\right)\) תהיה משמעותית כדאי לתת את הבמה לרגע לג'ואל ספנסר שמצטט את ארדש:

Erdős asks us to imagine an alien force, vastly more powerful than us, landing on Earth and demanding the value of R(5,5) or they will destroy our planet. In that case, he claims, we should marshal all our computers and all our mathematicians and attempt to find the value. But suppose, instead, that they ask for R(6,6). In that case, he believes, we should attempt to destroy the aliens.

הציטוט הנפלא הזה לבדו שווה את כל הפוסט.

כל כך קשה לבחור…

אני ממשיך את סדרת הפוסטים שלי על קומבינטוריקה ברמה תיכונית, והפעם אני רוצה לנקוט בגישה "מתמטית" לדברים שכבר גילינו. המתמטיקאי תמיד מנסה לבחון מחדש את ההנחות שלו ולהקל על הדרישות בכדי להכליל את התוצאות שלו, וזה גם מה שאני רוצה לעשות. הנוסחה המרכזית שגילינו עד כה הייתה כי \(\frac{n!}{k!\left(n-k\right)!}\), שאותו סימנו בקיצור \({n \choose k}\) וכינינו "מקדם הבינום"(מסיבות שהסברתי בפוסט קודם) הוא מספר הדרכים לבחור \(k\) מתוך \(n\) עצמים. אלא שכאן יש לי שתי הנחות סמויות: שהבחירה היא ללא החזרה, וללא חשיבות לסדר. בפוסט הזה אנסה להסביר מה זה אומר, ומה מקבלים כשמשחקים עם ההנחות הללו.

בואו נזכור מה \({n \choose k}\) אומר באמצעות דוגמה: בלוטו, אם נשכח לרגע מהמספר הנוסף, נבחרים שישה מספרים מתוך 49. הבחירה הזו היא ללא חשיבות לסדר: אם המכונה הגרילה קודם כל את 1 ואז את 2, זו אותה הסיטואציה מבחינתנו כמו זו שבה המכונה הגרילה קודם כל את 2 ורק אז את 1. די ברור שאם הייתה חשיבות לסדר, המשחק היה הופך לקשה פי כמה, כי לא היה מספיק לנחש מי יזכה; היה צריך לנחש גם באיזה סדר הם יופיעו.

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

הנה תרגיל בקומבינטוריקה: אם סוגי הבחירות השונות נקבעים לפי השאלות א) האם יש חשיבות לסדר או לא ו-ב) האם יש החזרה או לא, כמה סוגי בחירות יש? התשובה היא כמובן 4 (מעקרון הכפל). הבה ונטפל בכולן. בכל המקרים יהיה מדובר על בחירה של \(k\) אובייקטים כשיש \(n\) אובייקטים לבחור מהם.

ובכן, בחירה בלי החזרה ובלי חשיבות לסדר היא כמו שראינו \({n \choose k}\). לפעמים משתמשים גם בסימון המבלבל \(C_{n}^{k}\) וקוראים לזה "צירופים", אך זה הרבה פחות מקובל במתמטיקה ואני לא משתמש בסימונים הללו אף פעם.

נעבור לבחירה בלי החזרה אך עם חשיבות לסדר, מה שנקרא לעתים בעברית "חליפות"ומסומן ב-\(A_{n}^{k}\). הדרך לחשב את מספר האפשרויות לבחור בלי החזרה ועם חשיבות לסדר \(k\) מתוך \(n\) עצמים היא פשוטה למדי כי אפשר לחשוב עליה כתהליך דו-שלבי: קודם כל נבחר \(k\) עצמים מתוך ה-\(n\) בלי חשיבות לסדר, ואז נבחר את האופן שבו "מסדרים"אותם. כבר ראינו שיש \({n \choose k}\) אפשרויות לבחור את העצמים בלי חשיבות לסדר, ושבהינתן \(k\) עצמים יש \(k!\) דרכים לסדר אותם, כך שהתוצאה היא \({n \choose k}k!=\frac{n!}{k!\left(n-k\right)!}k!=\frac{n!}{\left(n-k\right)!}\). אפשר גם להגיע לתוצאה הזו בדרך ישירה: בהתחלה יש לנו \(n\) איברים לבחור מהם, אחר כך יש לנו \(n-1\) איברים, אחר כך \(n-2\) וכן הלאה… עד שבסופו של דבר יש לנו \(n-k\) איברים ואז אנחנו כבר לא בוחרים. נקבל את המכפלה \(n\cdot\left(n-1\right)\cdot\left(n-2\right)\cdots\left(n-k+1\right)\) (ה-\(+1\) בסוגר האחרון נובע מכך שהבחירה האחרונה מתבצעת רגע לפני שאנו נשארים עם \(n-k\) איברים) – לא קשה לראות שמכפלה זו אכן שווה ל-\(\frac{n!}{\left(n-k\right)!}\), אבל היא יותר מסורבלת לכתיבה. שימו לב, אגב, שאם היינו בוחרים \(k=n\) היינו מקבלים את התוצאה \(n!\) – כלומר, הכללנו גם את הרעיון של סידור \(n\) איברים בשורה.

אני רוצה להציג עוד נקודת מבט שתכליל הן את הצירופים והן את החליפות, ותיתן לנו עוד נוסחה מאוד פופולרית. בואו נחשוב לרגע שיש לנו \(n\) כדורים, ש-\(k\) מתוכם אדומים והיתר כחולים, ואנחנו שואלים את עצמו בכמה דרכים ניתן לסדר אותם בשורה. שימו לב שכל הכדורים מאותו צבע נראים לנו זהים – אם נחליף את המקומות של שני כדורים בעלי אותו צבע נקבל תוצאה שנראית לנו זהה לקודמת, ולכן אין צורך לספור אותה שוב. מה עושים? דרך אחת היא זו: ראשית נחשוב על כל הכדורים כעל אובייקטים שונים זה מזה, ואז יש \(n!\) דרכים שונות לסדר אותם בשורה. כעת צריך "לתקן"את הספירות הכפולות שביצענו, והדרך לעשות זאת היא לספור בכמה דרכים שונות ניתן לשנות את הסדר הפנימי בין הכדורים האדומים, ובכמה דרכים שונות ניתן לשנות את הסדר הפנימי בין הכדורים הכחולים, ולחלק בתוצאה זו. יש \(k\) כדורים אדומים ולכן \(k!\) סידורים פנימיים שלהם, ובאופן דומה יש \(\left(n-k\right)!\) סידורים פנימיים של הכדורים הכחולים, ולכן התוצאה היא \(\frac{n!}{k!\left(n-k!\right)}\) – בדיוק \({n \choose k}\) וזה לא כל כך מפתיע כי אפשר לחשוב על הסידור הנ"ל כעל "בחר \(k\) מקומות עבור הכדורים האדומים ושים את הכחולים ביתר". למעשה, הגישה הזו הייתה האופן שבו הוכחתי את הנוסחה עבור \({n \choose k}\) מלכתחילה.

כעת להכללה המבוקשת – מה קורה אם יש לי כדורים אדומים, ירוקים, צהובים וכחולים? ומה אם יש עוד צבעים? באופן כללי אפשר לחשוב על כך ש-\(n\) האיברים מתחלקים לקבוצות, כך שמספרי האיברים בקבוצות הם \(k_{1},k_{2},\dots,k_{t}\). קבוצה יכולה להכיל גם איבר בודד; לכן אנחנו יכולים להניח שה-\(k\)-ים מתארים את כל האיברים, כלומר מתקיים \(n=k_{1}+k_{2}+\dots+k_{t}\). על פי אותו הגיון שתיארתי קודם, מספר הסידורים האפשריים בשורה של האיברים הללו, כשאנחנו מתעלמים מהסידורים הפנימיים בין איברים מאותו צבע, הוא \(\frac{n!}{k_{1}!k_{2}!\cdots k_{t}!}\). שימו לב ש-\({n \choose k}\) מתאים למקרה בו יש לנו בדיוק שתי קבוצות, ואילו מספר החליפות, \(\frac{n!}{\left(n-k\right)!}\) מתאים בדיוק למקרה שבו יש לנו \(n-k\) עצמים זהים והיתר שונים זה מזה (כך שהנוסחה היא בעצם \(\frac{n!}{\left(n-k\right)!1!1!\cdots1!}\) ואין צורך לכתוב את ה-\(1\)-ים במכנה כי \(1!=1\)). למה הסיטואציה הזו אכן מתארת חליפות? כי ניתן לחשוב על כך שאנחנו מניחים על העצמים שלנו פתקים שבהם או שכתוב מספר כלשהו מ-\(1\) עד \(k\) (שמתארים את מספרם בבחירה) או שכתוב עליהם "לא נבחר", וכל פתקי ה"לא נבחר" זהים זה לזה ויש \(n-k\) מהם.

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

הנוסחה לבחירה עם החזרה ועם חשיבות לסדר היא תוצאה ישירה של עקרון הכפל. תהליך הבחירה שלנו הוא בן \(k\) שלבים; בכל שלב אנחנו בוחרים אחת מ-\(n\) אפשרויות שונות. יש לנו אם כן בסך הכל \(n\cdot n\cdots n=n^{k}\) אפשרויות שונות. קל להתבלבל ולשכוח מי במעריך החזקה ומי בבסיס (כלומר, האם זה \(k^{n}\) או \(n^{k}\)) ולכן אני ממליץ לנקוט בגישה הבאה: כמה מספרים דו ספרתיים יש, אם מרשים גם לאפס להופיע (כלומר, \(3\) הוא המספר ה"דו ספרתי" \(03\) וכדומה)? \(2^{10}\) או \(10^{2}\)? ובכן, \(2^{10}=1024\) כך שברור שיש כאן בעיה; לעומת זאת \(10^{2}\) מתאים בדיוק, וזה לא מפתיע כי מספר דו ספרתי מורכב מבחירה של אחת מ-10 הספרות האפשריות בתור ספרת האחדות, ואחת מ-10 הספרות האפשריות בתור ספרת העשרות.

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

הדרך הנוחה ביותר לתאר זאת היא באמצעות סיפור מעשיות. בחירה של \(k\) מתוך \(n\) איברים ללא חשיבות לסדר ועם החזרה ניתן לתאר בתור סידור כדורים בתאים: נניח שיש לנו שורה של \(n\) תאים ממוספרים, ו-\(k\) כדורים זהים. אנחנו זורקים כדורים לתוך התאים ובסוף רואים מה קיבלנו. אם בתא מס' 1 יש שני כדורים, אנחנו אומרים שבחרנו את האיבר מס' 1 בדיוק שתי פעמים; אם בתא 2 אין כדורים כלל אנו אומרים שאת איבר מס' 2 בכלל לא בחרנו, וכן הלאה.

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

בגישה הזו מה שאני "בוחר" הוא את המקומות שבהם אני רוצה לשים את המחיצות. על פניו כל רווח בין שני כדורים, או בין כדור והקיר, הוא מיקום חוקי. יש \(k\) כדורים ולכן \(k+1\) רווחים (ציירו שני כדורים ותראו את שלושת הרווחים: מימין לכדור הימני, משמאל לשמאלי, ובין שניהם). לכן יש לי בחירה של \(n-1\) איברים מתוך קבוצה של \(k+1\) איברים, בלי חשיבות לסדר ועם החזרה, כי אפשר לבחור באותו רווח כמה פעמים… היי, רגע, אז מה בעצם השגתי כאן? אני עדיין תקוע עם בעיה של בחירה עם החזרה ולא שיפרתי כלום!

אם לגלוש לרגע למתמטיקה יותר מתקדמת, כשכזה דבר קורה זה לא בהכרח סוף העולם. אפשר לחזור על אותו תהליך שוב ושוב ולראות האם זה הופך את הבעיה בהדרגה לפשוטה יותר. לרוע המזל, זה לא מה שקורה כאן – מבעיה של בחירת \(k\) מתוך \(n\) עברתי לבעיה של בחירת \(n-1\) מתוך \(k+1\), ואם אעשה את התעלול שוב אחזור לבעיה של בחירת \(k\) מתוך \(n\). צריך להוסיף עוד תעלול לתמונה, אם כך. והתעלול הזה פשוט – אני הולך לאסור על תאים ריקים.

הטענה שלי היא כזו: מספר הדרכים השונות לחלק \(k\) כדורים ל-\(n\) תאים (בלי חשיבות לסדר) שווה בדיוק למספר הדרכים השונות לחלק \(n+k\) כדורים ל-\(n\) תאים כשבסוף החלוקה אין תאים ריקים. למה? זה פשוט: כי נתחיל את החלוקה בלשים כדור אחד בכל תא. כך הבטחנו שמה שחייב להתקיים, מתקיים, ואז \(k\) הכדורים שנותרו אפשר לחלק בשקט ובלי מגבלות כלשהן. אם כן, המרנו את הבעיה שלנו לבעיה אחרת, שאותה יהיה לנו קל יותר לתקוף.

נחזור לבעיית השמת המחיצות. אם אסור שיהיו תאים ריקים, זה אומר שאסור לשים שתי מחיצות בין אותו זוג כדורים, ואסור לשים מחיצה בין כדור ובין הקיר. מצד שני, יש לנו הפעם \(n+k\) כדורים, ולכן יש בסך הכל \(n+k-1\) רווחים שבהם ניתן לשים את \(n-1\) המחיצות. הפעם הבחירה היא בלי החזרות כי כאמור, אסור לשים שתי מחיצות בין אותו זוג כדורים – אסור לבחור פעמיים באותו רווח שבין כדורים. לכן יש לנו בחירה של \(n-1\) איברים מתוך \(n+k-1\) איברים, וזה בדיוק \({n+k-1 \choose n-1}\), ואת זה ניתן לכתוב גם כ-\({n+k-1 \choose k}\). בזאת מצאנו את הנוסחה לשיטת החלוקה הרביעית והאחרונה.

לפני שנסיים להפעם אני רוצה לתאר שימוש פשוט אחד בבחירה עם החזרה ובלי חשיבות לסדר, שבינתיים אולי נראית מפחידה ומסובכת ולא מועילה כלל. נביט במשוואה \(x_{1}+x_{2}+\dots+x_{n}=k\), כאשר \(k\) הוא מספר שלם והערכים שאנחנו מרשים למשתנים לקבל הם רק ערכים שלמים אי שליליים (משוואות כאלו צצות בפועל! בעולם האמיתי! תאמינו לי!). כמה פתרונות יש למשוואה הזו? בדיוק מספר האפשרויות לבחור \(k\) איברים מתוך \(n\), עם החזרה ובלי חשיבות לסדר. למה? אשאיר זאת כתרגיל לקורא.

משולש פסקל

אחד הדברים היפים במתמטיקה הוא האופן שבו אובייקטים שנראים תמימים בהתחלה מתגלים כבעלי תכונות רבות ומעניינות. במבט ראשון, קשה לחשוב שאוסף הפתרונות של משוואה מוזרה כמו \(y^{2}=x^{3}+ax+b\) יתגלה כבעל מבנה עשיר ומעניין מאין כמוהו, אך אוספי פתרונות שכאלו (שמכונים "עקומים אליפטיים") הם אובייקט שנחקר בצורה אינטנסיבית במתמטיקה המודרנית, והתפרסמו בפרט בגלל הקשר שלהם לפתרון בעיית המשפט האחרון של פרמה בת שלוש מאות השנים.

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

משולש פסקל

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

עולות שתי שאלות – ראשית, את מי הדבר הזה מעניין? ושנית, איך זה קשור לקומבינטוריקה, שעליה אני מדבר בפוסטים האחרונים? אתחיל מהשאלה השניה ובתקווה זו גם תהיה התחלה של תשובה לשאלה הראשונה – פשוט כי המספרים שמופיעים במשולש פסקל הם חברים ותיקים שראינו בשני הפוסטים הקודמים – מקדמי הבינום, \({n \choose k}\), מספר האפשרויות לבחור בדיוק \(k\) מתוך \(n\) איברים. באופן מדוייק יותר – אם נלך לשורה ה-\(n\)-ית (כשהספירה מתחילה מאפס) ונסתכל על האיבר ה-\(k\)-י מצד שמאל (כשהספירה מתחילה, שוב, מאפס), הערך שלו יהיה בדיוק \({n \choose k}\). נסו ולא תתאכזבו.

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

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

אם כן, כל מסלול שמגיע לתא מס' \(k\) בשורה מס' \(n\) הוא מסלול שיש בו בדיוק \(k\) צעדי "ימינה" (ו-\(n-k\) צעדי "שמאלה") וכל מה שנשאר לעשות הוא לבחור אילו \(k\) מתוך \(n\) הצעדים יהיו צעדי ה"ימינה"המדוברים – ולכן יש בדיוק \({n \choose k}\) אפשרויות.

יפה, אז הבנו יותר טוב מהו משולש פסקל – הוא משולש שמתאר בדיוק את מקדמי הבינום. האם למדנו מכך משהו חדש על מקדמי הבינום? בהחלט! מכיוון שכל תא הוא סכום של שני התאים שמעליו, קיבלנו את הנוסחה הבאה: \({n \choose k}={n-1 \choose k-1}+{n-1 \choose k}\). כמובן, יש אלף ואחת דרכים להוכיח את הנוסחה הזו; אבל רובן סתם טכניות ולא ציוריות כמו זו של משולש פסקל – ויותר מכך, זו של משולש פסקל עוזרת לזכור בעל פה את הנוסחה (ש-בינינו? היא די מכוערת למראה). בגלל שמדובר במשולש פסקל קל לזכור ששני המחוברים הם עם \(n-1\) "למעלה", שהרי מדובר על השורה שמעל השורה הנוכחית.

אם אתם בכל זאת רוצים הוכחה ישירה יותר לנוסחה שלמעלה, הנה אחת שמשתמשת בעיקרון החיבור בקומבינטוריקה: \({n \choose k}\) הוא מספר הדרכים לבחור \(k\) מספרים מבין המספרים \(1,2,\dots,n\). אפשר לפצל את הבחירה הזו לשתי בחירות נפרדות – או ש-\(1\) הוא אחד מ-\(k\) האיברים שאנו בוחרים, ולכן נותר לדבר על בחירה של \(k-1\) איברים מתוך \(n-1\) האיברים שאינם 1; או ש-\(1\) איננו אחד מ-\(k\) האיברים שאנחנו בוחרים ולכן נותר לדבר על מספר הדרכים לבחור \(k\) איברים מתוך \(n-1\) האיברים שאינם 1.

נעבור לדבר על עוד תכונות של משולש פסקל – שעל פי מה שראינו, הן בבסיסן תכונות של מקדמי הבינום. תכונה מעניינת אחת היא שבכל שורה שמספרה הוא ראשוני \(p\), כל אברי השורה (חוץ מה-1-ים שבקצוות) מתחלקים ב-\(p\) (הסיבה לכך – כזכור, \({p \choose k}=\frac{p!}{k!\left(p-k!\right)}\), מה שאומר בפרט שהמונה הוא כפולה של \(p\), אבל במכנה אין כפולות של \(p\) כי כל המספרים שם קטנים ממנו, ומכיוון ש-\(p\) ראשוני גם מכפלה של איברים במכנה לא תיתן לנו את \(p\)). זו תכונה שבפני עצמה נראית בלתי מזיקה ובלתי מעניינת, אבל היא הופכת לחשובה מאוד כאשר עוסקים במתמטיקה יותר מתקדמת (לסקרנים שלא חוששים מהרבה ג'יבריש: זה מראה שבשדה ממציין \(p\) מתקיים \(\left(x+y\right)^{p}=x^{p}+y^{p}\) ולכן הפונקציה \(\varphi\left(x\right)=x^{p}\) היא הומומורפיזם; למעשה זה אפילו הומומורפיזם עם שם מיוחד – "אנדומורפיזם פרובניוס", ובאלגברה קומוטטיבית ובתורת גלואה יש לו חשיבות לא מבוטלת).

עוד תכונה משעשעת ובלתי מזיקה היא שסכום השורה ה-\(n\)-ית במשולש הוא בדיוק \(2^{n}\). כדי לראות את זה כדאי להיזכר בנוסחת הבינום של ניוטון: \(\left(x+y\right)^{n}=\sum_{k=0}^{n}{n \choose k}x^{k}y^{n-k}\). מה קורה כאשר מציבים \(x=y=1\)? מקבלים בדיוק \(2^{n}=\sum_{k=0}^{n}{n \choose k}\), כשהסכום באגף ימין הוא בדיוק סכום האיברים של השורה ה-\(n\)-ית. גם לתכונה הזו ניתן לתת הוכחה קומבינטורית ישירה: מספר הדרכים לבחור תת קבוצה של איברים מתוך \(n\) איברים קיימים היא בדיוק \(2^{n}\) (אסביר מדוע בפוסט הבא), ומצד שני אפשר להשתמש כאן בעיקרון החיבור ולפצל את בחירת תת הקבוצה לבחירה של תת קבוצה מגודל 0, או תת קבוצה מגודל 1, או תת קבוצה מגודל 2 וכן הלאה.

אותו תעלול של הצבה בנוסחת הבינום של ניוטון נותן את התכונה הבאה: לכל שורה, סכום האיברים במקומות הזוגיים פחות סכום האיברים במקומות האי זוגיים הוא אפס (במקרה זה ההצבה היא \(x=1,y=-1\) – בדקו זאת!).

תעלול חביב במיוחד הוא זה: אם אתם רוצים לראות מהי השורה ה-\(n\)-ית במשולש פסקל, חשבו את \(11^{n}\). כך למשל תגלו ש-\(11^{4}=14641\) – בדיוק איברי השורה הרביעית (\(1,4,6,4,1\)). הסיבה לכך פשוטה למדי – כשכופלים מספר ב-11, מחברים אותו עם עצמו כשהוא מוזז בצעד אחד שמאלה. זה אומר שכל ספרה בתוצאה תהיה סכום של שתי הספרות הסמוכות "בשורה שמעליה". רק מה? צריך להיזהר כאן קצת. \(11^{5}=161051\) שלא נראה כלל כמו משולש פסקל, אבל זה נובע מכך שאנחנו משתמשים בבסיס ספירה 10 (כלומר, עם הספרות 0 עד 9 ותו לא), ואילו בשורה החמישית של משולש פסקל כבר יש מספרים גדולים מ-9 שלא ניתן לייצג באמצעות ספרה אחת. אם היינו מציגים את המספרים הגדולים הללו בבסיס אחר – משתמשים, למשל, באות \(A\) כדי לייצג את המספר 10 כספרה בודדת (זה דבר מקובל ולגיטימי לחלוטין – למשל, במחשבים, שפועלים על פי בסיס 16, אכן משתמשים ב-\(A\) למטרה זו, וביתר האותיות הלטיניות עד \(F\). אם אתם רואים כתובת מחשב מוזרה שכוללת בה גם אותיות (כחלק מקריסת המערכת), קרוב לודאי שאתם רואים מספר בבסיס 16), אז היינו מקבלים \(11^{5}=15AA51\).

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

הבינום של ניוטון

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

בשלב כלשהו בתיכון נלמדת הנוסחה הפשוטה הבאה: \(\left(a+b\right)^{2}=a^{2}+2ab+b^{2}\). למה? ככה. לפעמים גם נלמדת נוסחה יותר מסובכת: \(\left(a+b\right)^{3}=a^{3}+3a^{2}b+3ab^{2}+b^{3}\). כשהייתי בתיכון תיעבתי את הנוסחה הזו, עם החזקה השלישית – אף פעם לא זכרתי בדיוק איך היא הולכת ונאלצתי לבדוק בדף הנוסחאות. כעת, כשאני כותב את הפוסט, לא נזקקתי כלל לדף נוסחאות כלשהו – וזה לא שהזכרון שלי השתפר במיוחד או שאני משתמש בנוסחה הזו על בסיס יומיומי. אני מקווה שעד סיום הפוסט גם כל הקוראים יוכלו לכתוב את הנוסחה הזו "מהראש" וללא צורך בשום דף נוסחאות או אפילו חישובים ידניים.

הבינום של ניוטון הוא נוסחה כללית עבור ביטויים כאלו – ביטויים שנראים כמו \(\left(a+b\right)^{n}\), כאשר \(n\) הוא מספר טבעי כלשהו. כמובן שעולה מאליה השאלה בשביל מה זה טוב; קשה לתת לה תשובה, פשוט כי הבינום אינו מטרה בפני עצמה אלא כלי שצץ לעתים קרובות כחלק מחישובים מסובכים יותר – זה אחד מהדברים שפשוט "טוב לדעת". רק אציין שלרוב השימושים הם דווקא לא טכניים-חישוביים, אלא כחלק מהוכחה תיאורטית כללית (למשל, מציאת הנגזרת של פונקציה מהצורה \(f\left(x\right)=x^{n}\) כוללת שימוש בבינום). לא אציג את הנוסחה עדיין פשוט כי היא מפחידה במבט ראשון; קודם כל נבין מה הולך כאן ונגיע אליה באופן טבעי.

במתמטיקה באופן כללי הדרך הטובה להבין מקרה כללי היא לעתים קרובות דרך בחינת מקרים פרטיים פשוטים, אפילו פשוטים ברמה מגוחכת. \(\left(a+b\right)^{1}\) הוא פשוט \(a+b\), וזה לא מלמד אותנו הרבה; אבל \(\left(a+b\right)^{2}\) זה כבר סיפור שונה. איך באמת מגיעים לאותה נוסחה מפורסמת של \(a^{2}+2ab+b^{2}\)?

לצורך כך בואו ונחזור רגע ליסודות. תשכחו מהבינום – איך מבצעים את פעולת הכפל הבאה – \(\left(a+b\right)\cdot c\)? כאן בא לעזרתנו אחד מחוקי החשבון הבסיסיים ביותר – חוק הפילוג, שקובע פשוט ש-\(\left(a+b\right)c=ac+bc\).

השלב הבא הוא המכפלה \(\left(a+b\right)\left(c+d\right)\). גם כאן אפשר להשתמש בחוק הפילוג בדיוק באותו האופן כמו קודם, ולקבל \(\left(a+b\right)\left(c+d\right)=a\left(c+d\right)+b\left(c+d\right)\). כעת אפשר להשתמש בחוק הפילוג שוב (הפעם בגרסה שלו שאומרת ש-\(c\left(a+b\right)=ca+cb\)) ולקבל \(a\left(c+d\right)+b\left(c+d\right)=ac+ad+bc+bd\). עד כאן חשבון פשוט – מה הקשר לקומבינטוריקה?

ובכן, אני רוצה שנחשוב על המכפלה \(\left(a+b\right)\left(c+d\right)\) באופן שונה – בתור תהליך של בחירה. בפתיחת הסוגריים, כל מחובר שנקבל בסכום הסופי מתקבל מבחירה של איבר אחד בסוגר השמאלי, בחירה של איבר אחד בסוגר הימני, והכפלתם. כך \(ac\) מתקבל כשנבחר האיבר הראשון בכל זוג סוגריים, \(bd\) מתקבל כשנבחר האיבר השני, וכן הלאה. שימו לב לסדר שבו כתבתי את האיברים: כתבתי \(ac\) ולא \(ca\) (למרות ששני ערכים אלו שווים אלו לאלו) כדי להבליט את העובדה ש-\(a\) נבחר מהסוגריים השמאליים ואילו \(c\) מהסוגריים הימניים.

עכשיו בואו נעבור לטפל ב-\(\left(a+b\right)^{2}\), שהוא מקרה פשוט יותר מהמקרה הכללי: \(\left(a+b\right)^{2}=\left(a+b\right)\left(a+b\right)\) ואחרי פתיחת הסוגריים נקבל את הסכום \(aa+ab+ba+bb\). כעת אפשר לשפר את מראה הסכום הזה: את \(aa\) אפשר להחליף ב-\(a^{2}\), ובמקום להסתבך עם \(ab\) ו-\(ba\) אפשר להשתמש בחוק החילוף ולקבל \(ab+ba=ab+ab=2ab\). הנה כי כן הגענו ל-\(a^{2}+2ab+b^{2}\), אבל לדעתי יותר חשוב לזכור דווקא את התוצאה ה"גולמית": \(aa+ab+ba+bb\).

בואו נעבור לטפל במקרה קשה הרבה יותר: \(\left(a+b\right)^{3}=\left(a+b\right)\left(a+b\right)\left(a+b\right)\). כאן אפשר לחשוב על תהליך פתיחת הסוגריים כעל תהליך של בחירת שלושה איברים והכפלתם – איבר אחד מכל סוגר. התוצאה הסופית תהיה סכום שבו כל מחובר מתקבל מבחירת איבר מכל אחד מזוגות הסוגריים. אם נכתוב במפורש את כל התוצאות (קצת טרחני, אני יודע) נקבל: \(aaa+aab+aba+abb+baa+bab+bba+bbb\). האם תוכלו להגיד לי, בלי לספור, כמה מחוברים יש? זו כבר שאלה קומבינטורית לגמרי: יש שלושה זוגות סוגריים, ומכל זוג אנו בוחרים אחד משני איברים – על כן, לפי עיקרון הכפל, יש לנו \(2\cdot2\cdot2=8\) אפשרויות בחירה (כי הבחירה שלנו מורכבת משלושה שלבים שבכל אחד מהם יש שתי אפשרויות בחירה) ולכן יש שמונה מחוברים בסכום – עכשיו אפשר לבדוק זאת ידנית.

כעת, כיצד ניתן לפשט את הזוועה של שמונת המחוברים? את \(aaa\) אפשר להחליף ב-\(a^{3}\). את \(aab\) אפשר להחליף ב-\(a^{2}b\). גם את \(aba\) אפשר להחליף ב-\(a^{2}b\) וגם את \(baa\) אפשר להחליף ב-\(a^{2}b\). אם כן, כמה פעמים יופיע \(a^{2}b\) בסכום הסופי? כמספר הפעמים שבהן אפשר לבחור מבין שלושת הסוגריים פעמיים את \(a\), ופעם אחת את \(b\). אלו בדיוק שלוש פעמים – אפשר לחשוב על כך בשתי דרכים שונות: או שאנו בוחרים את שני זוגות הסוגריים שמהם ניקח \(a\) ואז ממה שנשאר לוקחים \(b\), או שבוחרים את הסוגר שממנו ניקח את \(b\) ואומרים שמשני הנותרים ניקח \(a\). בדרך השנייה ברור לגמרי שיש רק שלוש אפשרויות (יש שלושה זוגות סוגריים). בדרך הראשונה זה קצת פחות ברור ולכן הגיע הזמן לקרוא לעזרת הכלי שלמדנו בפעם הקודמת: מספר האפשרויות לבחור \(k\) איברים מתוך \(n\) הוא \(\frac{n!}{k!\left(n-k\right)!}\) – ביטוי שלצורך פשטות סימנו בסימון \({n \choose k}\), ואצלנו \(n=3\) ו-\(k=2\) כך שנקבל \(\frac{3!}{2!1!}=\frac{6}{2}=3\).

בואו נחזור לרגע אל \(a^{3}\) ידידנו – כמה פעמים הוא יופיע בסכום? כמספר הפעמים שבהן ניתן לבחור \(a\) בכל שלושת זוגות הסוגריים – אבל יש בדיוק רק בחירה אחת שכזו. פורמלית זה שווה למספר האפשרויות לבחור שלושה איברים מתוך שלושה: \({3 \choose 3}=1\).

כעת הגיע הזמן לבצע קפיצת מדרגה כלשהי ולהתחיל להכליל את כל מה שעשינו פה ולתאר אותו באופן אחיד יותר. כשאנו פותחים את \(\left(a+b\right)^{3}\), מה אנחנו מקבלים? איברים שצורתם הכללית היא \(a^{i}b^{j}\), כך ש-\(i+j=3\) (כי כל איבר מתקבל מבחירת שלושה איברים בדיוק – השאלה היא רק כמה מתוכם הם \(a\) וכמה מתוכם הם \(b\)). אם כן, אפשר לכתוב זאת בצורה יותר פשוטה: \(a^{i}b^{3-i}\). כעת נשאלת השאלה – כמה פעמים האיבר \(a^{i}b^{3-i}\) מופיע? זהו בדיוק מספר האפשרויות לבחור את \(a\) בדיוק \(i\) פעמים מתוך 3 זוגות הסוגריים האפשריות, כלומר \({3 \choose i}\). זה מוביל אותנו לניסוח האחיד הבא: \(\left(a+b\right)^{3}={3 \choose 0}a^{0}b^{3}+{3 \choose 1}a^{1}b^{2}+{3 \choose 2}a^{2}b+{3 \choose 3}a^{3}\).

אוקיי, עכשיו אתם ככל הנראה שואלים את עצמכם מה לעזאזל עשיתי כאן. במקום לקבל, כמו שהבטחתי, משהו פשוט ויפה קיבלתי ביטוי שנראה כמו זוועת עולם. אלא שאני טוען שהביטוי כלל אינו מזוויע, אחרי שעובר ההלם הראשוני, ויש בו יתרון גדול – קל לזכור אותו. שימו לב לכך שהוא מאוד תבניתי: סכום של איברים מהצורה \({3 \choose i}a^{i}b^{3-i}\) כשהדבר היחיד שמשתנה הוא ערכו של ה-\(i\). זה דבר שקל לזכור. לא באמת צריך לזכור מה ערכו המדוייק של כל מקדם, אלא רק שכל מקדם הוא מהצורה \({3 \choose i}\) עבור ה-\(i\) המתאים. כשכתבתי את הנוסחה שבתחילת הפוסט "מהראש", זה מה שהשתמשתי בו.

כעת אני רוצה לקפוץ קצת קדימה ולהציג סימון שבתיכון לא נהוג להשתמש בו (וחבל). כבר אמרתי שהנוסחה שלי ל-\(\left(a+b\right)^{3}\) היא סכום של איברים שכולם נראים כמעט אותו דבר: \({3 \choose i}a^{i}b^{3-i}\), כשהדבר היחיד שמשתנה הוא ה-\(i\). הדרך המתמטית לכתוב זאת היא באמצעות האות היוונית \(\Sigma\) (סיגמה גדולה) שבאה לציין את המילה "סכום" (בשפה המתאימה, כמובן…). הנה הסימון: \(\left(a+b\right)^{3}=\sum_{i=0}^{3}{3 \choose i}a^{i}b^{3-i}\).

מה יש לנו פה? ובכן, אחרי הסיגמה יש לנו את \({3 \choose i}a^{i}b^{3-i}\) שכבר הזכרתי מספיק – זהו האיבר הכללי של הסכום. איבר כללי במובן זה שכל מחובר בסכום נראה כמוהו, לאחר הצבה של ערך מתאים ב-\(i\). האות \(i\) נקראת האינדקס של הסכימה, והמספרים שכתובים מתחת ומעל לסיגמה באים לציין את הערכים שאותם \(i\) מקבל; \(i=0\) אומר שהערך הראשון ש-\(i\) מקבל הוא 0, וה-3 למעלה אומר שזהו הערך האחרון שהוא מקבל. המוסכמה היא שאלא אם נאמר במפורש אחרת, \(i\) מקבל רק ערכים שלמים, ולכן הסכום מתאר את מה שמקבלים כאשר מציבים באיבר הכללי את הערכים \(i=0,1,2,3\).

אני מקווה שסימן הסכימה ברור כעת ולא מפחיד; שאלה אחת שאולי התעוררה בכם היא למה לא לכתוב \(\sum_{0}^{3}{3 \choose i}a^{i}b^{3-i}\) וחסל – למה צריך את ה-\(i=\) למטה? התשובה היא שלא תמיד ברור מהו האינדקס – לפעמים (ונראה דוגמה ממש בקרוב) יש יותר ממשתנה אחד שמופיע באיבר הכללי, וצריך להבהיר מי משמש כאינדקס הסכימה. עם זאת אעיר שכשההקשר ברור, לעתים קרובות נהוג להשמיט פרטים מסימן הסכימה, עד כדי כך שלפעמים אפשר למצוא נוסחאות כמו \(\sum a_{i}\) וחסל – כאן השאלה אילו ערכים האינדקס מקבל תלויה לחלוטין בהקשר, וכותבי הטקסט מצפים שהקורא יוכל להסיק את המידע הזה בעצמו. באופן לא מפתיע, בטקסטי מבוא לרוב אין זוועות שכאלה.

אוקיי, אז טיפלנו בבינום עבור החזקות \(1,2,3\); המתמטיקאים נוהגים בשלב הזה לעבור לטפל ב-\(n\) כללי וזה גם בדיוק מה שאני אעשה, ובלי הרבה שהיות אכתוב את הנוסחה, שזהה לגמרי למה שקיבלנו עבור המקרה של חזקה שלישית: \(\left(a+b\right)^{n}=\sum_{i=0}^{n}{n \choose i}a^{i}b^{n-i}\). עצרו רגע ונסו להבהיר לעצמכם למה היא נכונה.

ובכן, למה הנוסחה נכונה? בדיוק אותם שיקולים כמו קודם. \(\left(a+b\right)^{n}\) ניתן לכתיבה כמכפלה של \(n\) זוגות סוגריים, ולכן התוצאה הסופית תהיה סכום של איברים שהתקבלו מבחירת \(a\)-ים ו-\(b\)-ים – סה"כ \(n\) פעמים עבור שניהם. אם \(i\) הוא מספר ה-\(a\)-ים שנבחרו, אז נקבל איבר מהצורה \(a^{i}b^{n-i}\), ויש לנו בדיוק \({n \choose i}\) דרכים שונות לבחור \(i\) \(a\)-ים, וזהו. מה שכתבתי כאן הוא כמעט הוכחה מתמטית, והוא בוודאי מבהיר היטב למה הנוסחה נראית כמו שהיא נראית ואיך זה קשור לקומבינטוריקה (ואם זה עדיין לא ברור – זו אשמתי, לא אשמת ההוכחה). לטעמי הוכחה זו (הגם שאינה פורמלית במאה אחוזים) טובה בהרבה מההוכחה ה"יבשה" לנכונות הבינום, שמשתמשת באינדוקציה מתמטית מזוויעה.

אם כן, זהו זה. נפתרה הבעיה הכללית של \(\left(a+b\right)^{2}\) ו-\(\left(a+b\right)^{3}\) וכל חזקה טבעית אחרת, והנוסחה הסופית היא קצרה ויפה להצגה (אבל חשבו כמה מזוויע יהיה לכתוב באופן מפורש את \(\left(a+b\right)^{13}\)!). כעת אני מקווה כי גם ברור מדוע \({n \choose i}\) נקראים "מקדמי הבינום" – מכיוון שהם המקדמים של הגורמים מהצורה \(a^{i}b^{n-i}\) בפיתוח נוסחת הבינום. אני גם מקווה שכעת ברור קצת יותר איך הקומבינטוריקה מתקשרת לתחומים אחרים במתמטיקה (כאן – אלגברה בסיסית) ומסייעת לנו להבין גם אותם.

מהי קומבינטוריקה?

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

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

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

קרוב לודאי שרבים מכם שואלים את עצמכם על הקומבינטוריקה בפרט את אותה שאלה שלעתים שואלים על המתמטיקה בכלל – למי אכפת? למי אכפת אם יש 113,332,442 צירופים אפשריים לפרוזן יוגורט בדוכן הקרוב, ולא סתם 113,332,441? מה המספר הזה נותן לנו בכלל? מה הטעם בכל זה?

ראשית כל יש לענות לכך שאכן, לרוב לא אכפת לנו מהמספרים המדוייקים. מה שמעניין, כאמור, הוא "קצב הגידול" של הבעיה, או סדר הגודל שלה. דוגמה קלאסית לכך היא הלוטו: חישוב ההסתברות לזכות בלוטו היא חישוב קומבינטורי פשוט (אנו רוצים לחשב את מספר כל התוצאות האפשריות שיכולות להתקבל בלוטו, ואם מספר זה הוא \(A\), אז ההסתברות לזכייה בלוטו היא \(\frac{1}{A}\), ובמילים – \(1\) ל-\(A\), למשל "1 לעשרה מיליון"). כאן המספר המדוייק באמת לא חשוב לנו, אבל חשוב לנו ההבדל שבין הסתברות של 1 ל-6 לזכות בלוטו כל שבוע (ואם הפרס לכל זוכה היה מיליון ש"ח, אז בהסתברות שכזו גם אני הייתי ממלא לוטו באדיקות), ובין הסתברות של 1 לכמה עשרות מיליונים (אני לא ממלא לוטו).

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

עם זאת, לפעמים אנחנו מתעניינים מאוד במספרים המדוייקים, עד לספרה האחרונה. סיבה מרכזית אחת לכך היא שמספרים מדוייקים מאפשרים לנו למצוא קשרים בין בעיות שנראות שונות מהותית. הנה דוגמה קלאסית: סדרה חוקית של סוגריים היא סדרת של סמלים שהם או \(")"\) (סוגר ימני) או \("("\) (סוגר שמאלי), כך שבשום שלב, בקריאה משמאל לימין של הסדרה, לא נוצר מצב שבו קראנו יותר סוגרים ימניים משמאליים (כלומר, לא "סגרנו" סוגריים שבכלל לא נפתחו). כך למשל הסדרה \(()(())\) היא חוקית ואילו \()(()\) אינה חוקית. לא קשה כל כך להראות שהסדרה \(a_{n}\) שבה \(a_{n}\) מייצג את מספר הסדרות החוקיות שמכילות \(n\) סוגריים שמאליים ו-\(n\) סוגריים ימניים מתחילה עם הערכים הבאים: \(1,2,5,14,42,132,429\).

נעבור לבעיה לחלוטין לא קשורה – שילוש של מצולע משוכלל. מצולע משוכלל עם \(n\) צלעות הוא מצולע שבו כל הצלעות וכל הזוויות הפנימיות שוות בגודלן. למשל: משולש שווה צלעות. למשל: ריבוע. למשל: משושה משוכלל, וכן הלאה. כשעוסקים במצולעים במדעי המחשב – בעיקר בגרפיקה – נוח לעתים קרובות לפרק אותם למשולשים על ידי מתיחת קווים בין קודקודים קיימים עד שהצורה חולקה כולה למשולשים (לפעולה זו קוראים שילוש – טריאנגולציה). נשאלת השאלה – כמה שילושים שונים קיימים למצולע בעל \(n\) צלעות? מכיוון שעבור \(n=1,2\) אין בכלל מצולעים בעלי \(n\) צלעות, אני "ארמה" טיפה: \(b_{n}\) יסמן את מספר השילושים של מצולע בעל \(n+2\) צלעות. והנה זה פלא: הסדרה \(b_{n}\) גם היא מתחילה עם הערכים \(1,2,5,14,42,132,429\). זה מייד מדליק אצלנו נורת איתות בראש – הייתכן שיש קשר בין שתי הבעיות, בעיית הזוגות החוקיים של סוגריים ובעיית הטריאנגולציה? וכדי לאמת את החשדות שלנו אנחנו מחשבים (באמצעות מחשב) עוד כמה ערכים של הסדרות – והנה, כל ערך חדש שאנו מחשבים אכן יהיה זהה. וזה מוסיף ומחזק את האמונה שלנו ששתי הסדרות הללו חד הן, עד לשלב שבו נטרח לקחת עט ונייר ולהוכיח את הקשר בין שתי הסדרות. ההוכחה עצמה אינה טריוויאלית אך גם אינה מסובכת מדי, והסדרה \(a_{n}\) היא סדרה כה מעניינת ומרכזית ומופיעה בעוד הקשרים רבים ושונים שהיא זכתה לשם מיוחד: "מספרי קטלן". למעשה, קיימת אפילו נוסחה סגורה עבורם, אך לא אציג אותה כעת.

הנקודה המרכזית כאן היא שהדבר שרמז לנו ששתי הבעיות קשורות זו לזו היו התוצאות המספריות המדוייקות שלנו, שמאפשרות להצביע על קשר לא טריוויאלי בין בעיות שעל פניו נראות חסרות קשר לחלוטין. דוגמה הרבה יותר "בומבסטית" שכבר הזכרתי פעם בבלוג היא מקרה ה-Monstrous Moonshine. את פרטי המקרה הזה הרבה יותר קשה להסביר מכיוון שהוא עוסק בשני אובייקטים מתמטיים מורכבים למדי שלא ניתן להסביר בפוסט שכזה; די לומר שהם מופיעים בשני תחומים מתמטיים שלכאורה לא קיים בינם שום קשר. מה שעורר את החשד הוא המספר \(196884\) שמאפיין את שניהם (זו אינה בדיוק תוצאה קומבינטורית, אך היא מצביעה על האופן שבו מספרים זהים המתגלים במקומות שונים מאפשרים לנו לזהות קשרים עמוקים).

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

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

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

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

בואו נעבור להתמודד עם בעיה קצת יותר מעניינת. ניקח חבילת קלפים סטנדרטית של 52 קלפים, ונשאל את עצמנו – בכמה דרכים שונות ניתן לערבב אותה? "ערבוב" הוא בסך הכל סידור כלשהו של הקלפים בשורה – הקלף הראשון, השני וכן הלאה. בואו נניח שאנחנו לא ממש מערבבים את החבילה, אלא בוחרים במפורש מי יהיה הקלף הראשון, ומי יהיה השני וכן הלאה. איך עושים זאת? יש לנו 52 אפשרויות לבחירת הקלף הראשון. אחרי שבחרנו אותו הוא "יוצא מהמשחק" ולכן יש לנו רק 51 אפשרויות לבחור את הקלף השני. אם כן, כמה אפשרויות יש לנו לבחור את שני הקלפים הראשונים? על פי עיקרון הכפל, מכיוון שמדובר בבחירה דו-שלבית, יש לנו \(52\cdot51\) אפשרויות. נקודה עדינה שיש לשים לב אליה היא שגם אם נבחר את אותם קלפים אך בסדר שונה (אס עלה ראשון, מלך עלה שני אל מול מלך עלה ראשון, אס עלה שני) זה עדיין ייחשב לשתי התחלות של ערבובים שונים (כי סדר הקלפים שונה).

מכאן ואילך ההמשך הוא באותה הרוח: יש 50 אפשרויות לבחירת הקלף השלישי, 49 לבחירת הרביעי, וכן הלאה. כשהגענו לקלף האחרון נותרה לנו רק בחירה אחת – שלו בלבד – ולכן יש אפשרות אחת בלבד. בסיכומו של דבר עיקרון הכפל ייתן לנו את התוצאה \(52\cdot51\cdot50\cdots3\cdot2\cdot1\). מספר זה ניתן לכתוב גם כ-\(1\cdot2\cdots52\) (הרי אין חשיבות לסדר ביצוע פעולות הכפל). מכיוון שדבר שכזה – הכפלה של כל המספרים מ-1 ועד \(n\) – היא דבר נפוץ למדי במתמטיקה (ובקומבינטוריקה בפרט) נהוג לתת לה שם וסימון מיוחד: למכפלה \(1\cdot2\cdots n\) (כאשר \(n\) הוא תמיד מספר טבעי חיובי) קוראים "\(n\) עצרת"ומסמנים אותה ב-\(n!\) (\(n\) ואז סימן קריאה – כמו רוב הסימונים, אין מאחוריו יותר מדי הגיון מחוכם אלא בעיקר קונבנציה שבחר מישהו והשתרשה במהלך השנים).

אם כן, יש \(52!\) ערבובים של חבילות קלפים, ובאופן כללי יש \(n!\) לסדר בשורה \(n\) איברים שכולם שונים זה מזה – לסידור שכזה קוראים "תמורה", ובעברית – פרמוטציה. למי שסקרן, הערך המספרי המדוייק של \(52!\) הוא \(80658175170943878571660636856403766975289505440883277824000000000000\). המספר העצום בגודלו הזה הוא הסיבה לעושר הרב שאפשר למצוא במשחקי קלפים – אין כמעט שום סיכוי שיתקבלו שני ערבובים זהים, ולכן שני משחקים זהים.

אבל רגע, אני בעצם משקר, כי בהרבה משחקים אין חשיבות גדולה עד כדי כך לסדר החבילה. בואו ניקח לדוגמה את משחק הברידג': מחלקים את 52 הקלפים לארבעה שחקנים, 13 קלפים לכל שחקן. אין חשיבות לשאלת הסדר שבו כל שחקן קיבל את הקלפים, אלא רק לשאלה אילו קלפים הוא קיבל. אם כן, הבה ונשאל שאלה אחרת – בכמה דרכים שונות אפשר לבחור 13 קלפים מתוך חבילה של 52 קלפים אם אין חשיבות לסדר שבו הקלפים נבחרים?

עם הבעיה הזו אפשר להתמודד בעזרת הכלי שכבר רכשנו – מספר הפרמוטציות של \(n\) איברים. הבה ונניח ש-13 הקלפים נבחרים באופן הבא: ראשית מערבבים את החבילה, וכעת נותנים לשחקן את 13 הקלפים הראשונים בערבוב. אחרי שנותנים לו אותם הסדר הפנימי של הקלפים "נמחק", ולכן אם נספור כל ערבוב של החבילה באופן שונה, נבצע ספירה כפולה. מכיוון שזה מבלבל קצת בהתחלה, הבה ונביט בדוגמה פשוטה יותר: נניח שיש לנו חבילה שכוללת ארבעה קלפים בלבד: \(\mbox{A,K,Q,J}\), ושהשחקן רוצה לקבל שניים מהם. כבר את ארבעת הקלפים הללו ניתן לערבב בצורות רבות – 24, ליתר דיוק – ולכן לא אראה את כולן אלא אשאל שאלה אחרת: בכמה דרכים שונות אפשר לערבב את החבילה כך שהשחקן יקבל את \(\mbox{A,K}\)?

ובכן, אלו הן האפשרויות (שתי האותיות שמצד שמאל הן מה שהשחקן יקבל): \(\mbox{AKQJ,AKJQ,KAQJ,KAJQ}\). ספרנו ארבע פעמים חלוקה שהיינו אמורים לספור רק פעם אחת. איך אפשר לנטרל זאת? הצעד הראשון יהיה לשים מעין "מחיצה" שתפריד בין מה שהשחקן מקבל ומה שלא: \(\mbox{AK|QJ,AK|JQ,KA|QJ,KA|JQ}\). כעת נשאל את עצמו – מה קורה מכל אחד מעברי המחיצה? בצד שמאל אנחנו "בוחרים" את אחת משתי הפרמוטציות האפשריות של האיברים \(\mbox{A,K}\), ובצד ימין אנו "בוחרים" את אחת משתי הפרמוטציות האפשריות של האיברים \(\mbox{J,Q}\). בצורה הזו מתקבלות כל האפשרויות לבנות חלוקה של \(\mbox{A,K,Q,J}\) שבה \(\mbox{A,K}\) בצד שמאל ו-\(\mbox{Q,J}\) בצד ימין.

חזרה לבעיה שלנו – כאן יש 13 קלפים בצד שמאל, ו-39 קלפים בצד ימין. לכן יש \(13!\) אפשרויות לבחור סידור לקלפים בצד שמאל, ו-\(39!\) אפשרויות לבחור סידור לקלפים בצד ימין, ולכן על פי עקרון הכפל יש \(13!\cdot39!\) אפשרויות לבחור סידורים לכל הקלפים גם יחד כל עוד תובעים ש-13 הקלפים שבצד שמאל ישארו כולם בצד שמאל. במילים אחרות – לכל בחירה של \(13\) קלפים, יש בדיוק \(13!\cdot39!\) ערבובים של החבילה שבה \(13\) הקלפים הללו הם אלו שנבחרים.

מה עכשיו? נמחיש עם עוד דוגמה פשוטה קצת יותר. בדיחה ידועה מספרת על ברנש שבא לרועה צאן ולעג לו על שהוא סופר כבשים בצורה כל כך מסורבלת. רעה הצאן הזועם תבע ממנו כאתגר לספור בעצמו כמה כבשים יש בעדר. הברנש השיב מייד וללא היסוס "\(139\)". רועה הצאן הנדהם שאל אותו "איך ידעת?" ולזה השיב הברנש "ספרתי את הרגליים וחילקתי ב-4".

אם כן, אם אנחנו יודעים את כמות הרגליים בעדר, ואנו יודעים שלכל כבש ארבע רגליים, משמעות הדבר היא שספרנו כל כבש ארבע פעמים, ולכן כדי לקבל את מספרם של הכבשים צריך לחלק את מה שספרנו ב-4. כך גם בדוגמה שלנו: יש \(52!\) ערבובים שונים של החבילה – זה מספר הרגליים; וכל חלוקת \(13\) קלפים נספרה \(13!39!\) פעמים – זה מספר הרגליים שיש לכבש; ולכן יש בסך הכל \(\frac{52!}{13!39!}\) חלוקות שונות. גם זה מספר עצום – \(635013559600\), אבל הוא קטן משמעותית מ-\(52!\).

באופן כללי אם יש לנו \(n\) אובייקטים שונים ואנו רוצים לבחור מתוכם \(k\) אובייקטים בלי חשיבות לסדר הבחירה, אז אותו החשבון מראה שיש \(\frac{n!}{k!\left(n-k\right)!}\) אפשרויות לעשות זאת. גם לביטוי זה יש סימון מקוצר: "\(n\) בחר \(k\)", או \({n \choose k}\) (שימו לב – זה אינו שבר!). היצור הזה מכונה גם "מקדם הבינום" בשל הקשר שלו לבינום של ניוטון – נוסחה כללית לביטויים מהצורה \(\left(a+b\right)^{n}\); ארחיב על כך בפוסט הבא בנושא.