בעיית הנהגים הגחמנים

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

== הבעיה ==

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

הבעיה. אם כל נהג בוחר את ההעדפה שלו בנפרד, כמה אפשרויות יש שעבורן כל הנהגים יחנו בסוף התהליך?

פונקציה, המתאימה את הנהגים למקומות החניה, כך שלכל נהג יש מקום חניה, קרויה פונקציית חניה. הדיון בפונקציות כאלה החל במאמר<BR> 
A.G. Konheim, B. Weiss, An occupancy discipline and applications, SIAM J. Applied Math. 14 (1966) 1266-1274.

=== דוגמה ===

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

לעומת זאת, אם הנהג הראשון מעדיף את המקום 1 ושני האחרים מעדיפים את 3, אז הראשון יחנה במקום 1, השני יסע למקום 3 ויחנה בו, והשלישי, שיסע בתחילה למקום 3, יאלץ לוותר ולעזוב. הבחירות 1,3,3 אינן מאפשרות חניה מסודרת.

== פתרון הבעיה ==

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

סדרה <math>\ (a_1, a_2, a_3,...,a_n)</math> של מספרים בתחום 1 עד n תקרא פונקציית חנייה, אם כאשר לכל <math>\ 1 \leq i \leq n</math>, הנהג ה-<math>\ i</math> בוחר במקום החנייה ה<math>\ a_i</math> בתור מקום מועדף, כל הנהגים מוצאים חניה.

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

רשימה של העדפות (כמתואר מלמעלה) היא פונקציית חנייה, אם ורק אם אף נהג אינו חונה במקום חנייה ה<math> \ n + 1 </math>:
* אם אחד הנהגים עזב את החניון, מישהו יצטרך לחנות לאחר מקום החנייה ה<math> \ n </math>, ולכן יחנה במקום החנייה ה<math> \ n + 1 </math> (כי הוא הראשון אחרי ה<math> \ n </math>).
* אם מישהו חונה במקום החנייה ה<math> \ n + 1 </math>, זאת אומרת שמישהו הגיע למקום החנייה ה<math> \ n </math> והוא היה תפוס, ולכן היה אמור לעזוב את החניון, או שמישהו בחר במקום ה<math> \ n + 1 </math>, אבל בפונקציית חנייה זה לא אפשרי (הרי <math>\ 1 \leq a_i \leq n</math>).

נשים לב שהזזה ציקלית של הרשימה, מזיזה ציקלית את התוצאה הסופית של המעגל.
כלומר, תהי <math>\ (b_1, b_2, b_3,...,b_n)</math> רשימת העדפות של הנהגים. (כלומר, לכל <math>\ 1 \leq i \leq n</math> ,<math>\ 1 \leq b_i \leq n + 1</math> הוא המקום חנייה המועדף על הנהג ה<math>\ i</math>), ותהי <math>\ (p_1, p_2, p_3,...,p_n)</math> רשימת הסיום במקרה זה (כלומר, בסוף התהליך סיים הנהג ה<math> \ i </math>, במקום ה<math> \ p_i </math>).
אזי רשימת הסיום של רשימת ההעדפות <math>\ (b_1 + j, b_2 + j, b_3 + j,...,b_n + j) \pmod{(n + 1)}</math> היא <math>\ (p_1 + j, p_2 + j, p_3 + j,...,p_n + j) \pmod{(n + 1)}</math>

כלומר, כל פונקציית חנייה מופיעה ברשימות של ההעדפות האפשריות <math> \ n + 1 </math> פעמים:
*פעם אחת בתור פונקציית חנייה (מתקבל מעגל בו במקום ה<math> \ n + 1 </math> הוא ריק).
*<math> \ n </math> פעמים בתור עזיבת חניון של אחד הנהגים (שהרי, ניתן לסובב את המעגל n פעמים, כך שהמקום ה<math> \ n + 1 </math> יהיה לא ריק). נשים לב שבמקרה כזה תתקבל פונקציית חנייה תקנית בה כל ההעדפות קטנות מ<math> \ n + 1 </math> משום שאילו אחת ההעדפות הייתה המקום ה<math> \ n + 1 </math> מקום זה היה נתפס, ולא הייתה מתקבלת פונקציית חנייה.

כעת נסתכל על מספר הרשימות של ההעדפות האפשריות עם מקום החנייה הנוסף: ישנן <math>\ {(n + 1)}^{n}</math> כאלה (כי לכל נהג יש <math> \ n + 1 </math> אפשרויות למקום מועדף, ויש <math> \ n </math> נהגים.

מכיוון, שכל פונקציית חנייה מופיעה <math> \ n + 1 </math> פעמים במספר הרשימות של ההעדפות האפשריות, ישנן בסה"כ <math> \frac{n + 1} = {(n + 1)}^{n - 1} </math> פונקציות חניה, כלומר ישנן <math>\ {(n + 1)}^{n - 1} </math> רשימות העדפות, המאפשרות לכולם לחנות לפי הכללים.

קטגוריה:קומבינטוריקה