פרק 6

Transcription

פרק 6
‫פרק ‪ :6‬מסילות המילטון‬
‫דוגמה של מעגל המילטוני בגרף‪-‬מסילה סגורה הכוללת כל קודקוד פעם אחת בדיוק‪ ,‬ומסתיימת בקודקוד ההתחלה‪.‬‬
‫מבוא לפרק‪:‬‬
‫בפרק ‪ 5‬התעסקנו בשאלה עבור איזה גרפים ניתן לעבור על כל צלעות הגרף בדיוק פעם‬
‫אחת‪.‬‬
‫דרך משפט ‪ 5.5‬הבאנו אפיון של כל אותם הגרפים‪.‬‬
‫בפרק זה‪ ,‬וכן בפרק הבא‪ ,‬נדון במסלול מסוג אחר‪ ,‬ונשאל‪ :‬עבור איזה גרפים ניתן לעבור על‬
‫כל קודקוד בדיוק פעם אחת?‬
‫בניגוד לשאלת הצלעות‪ ,‬אין אפיון של גרפים אלה‪ .‬אין אפילו אלגוריתם למציאת מסלולים‬
‫בגרף כללי עליו ידוע שקיים מסלול כזה (!) ‪( ,‬כדוגמת האלגוריתם של ‪ Fleury‬מפרק ‪.)5‬‬
‫דרך כמעט יחידה להכריע האם קיים מעגל המילטוני בגרף וכן למצוא כמה כאלה יש‪ ,‬היא על‬
‫ידי חיפוש!‬
‫נעבור לגוף הפרק‪ ,‬ונלמד מה ניתן להסיק בכיוון‪ .‬לאורך הדיון‪ ,‬נתייחס ליישומים שונים‬
‫למיניהם‪ ,‬ברוח דומה לנעשה בפרק ‪.5‬‬
‫פרק ‪ - 6‬עמוד ‪1‬‬
‫הגדרה‪:‬‬
‫יהא ‪ G  V , E ‬גרף‪.‬‬
‫‪‬‬
‫מסלול המילטוני הוא מסלול העובר בכל קודקוד של ‪ G‬בדיוק פעם אחת‪ .‬גרף שיש לו‬
‫מסלול המילטוני יקרא המילטוני למחצה‪.‬‬
‫‪‬‬
‫מעגל המילטוני הוא מסלול סגור העובר בכל קודקוד (פרט לקודקוד הראשון שהוא גם‬
‫האחרון) של ‪ G‬בדיוק פעם אחת‪ .‬גרף שיש לו מעגל המילטוני יקרא גרף המילטוני‪.‬‬
‫תרגיל‪:‬‬
‫האם גרף יכול להיות המילטוני וגם המילטוני למחצה? השווי עם אוילרי לעומת אוילרי‬
‫למחצה‪.‬‬
‫המונח קרוי על שמו של ויליאם רואן המילטון‪ ,‬מתמטיקאי ואסטרונום אירי‪.‬‬
‫כפי שהזכרנו‪ ,‬השאלה הבאה נותרה שאלה פתוחה בתורת הגרפים‪:‬‬
‫"תני תנאים הכרחיים ומספיקים לכך שגרף הוא המילטוני"‪.‬‬
‫עם כל הנאמר‪ ,‬ברצונינו לחקור איפיונים אפשריים של המילטוניות או‪ ,‬לחילופין‪ ,‬לזהות עדויות לכך‬
‫שגרף לא יכול להיות המילטוני‪ .‬ננסה להחכים דרך הדוגמאות הבאות‪:‬‬
‫דוגמאות‪:‬‬
‫‪ C n .1‬המילטוני לכל ‪- n  3‬הגרף ‪ C n‬עצמו מהווה מעגל המילטוני‪.‬‬
‫‪.2‬‬
‫‪ K n‬המילטוני לכל ‪ , n  3‬שכן‪ ,‬למשל ‪,‬תת הגרף שלו ‪ C n‬הוא מעגל המילטוני בו‪.‬‬
‫דוגמאות ‪ ,5,1‬מצביעות על הבדל אחד גדול בין גרפים אוילריים לבין גרפים המילטוניים‪ .‬בעוד‬
‫שמעגל אוילרי חייב לעבור דרך כל צלע‪ ,‬מעגל המילטוני בגרף מסדר ‪" n‬מנצל" רק ‪ n‬מצלעותיו‪-‬‬
‫ראי למשל באיור הבא של מעגל המילטוני ב‪ K 8 -‬להמחשת העניין‪:‬‬
‫פרק ‪ - 6‬עמוד ‪2‬‬
‫מעגל המילטוני בגרף ‪ K 8‬מאויר על ידי הצלעות האדומות‪.‬‬
‫נשים לב שמעגל המילטוני עובר דרך ‪ 8‬צלעות בלבד מבין ‪ 28‬צלעותיו!‬
‫‪ .3‬כדי לחזק את התובנה בדבר קיום או אי קיום מעגלי המילטון ‪ ,‬תוכלי להתאמן ביישומון‬
‫‪. Hamilton circuits‬‬
‫‪ .4‬פאונים משוכללים‪ :‬כל ‪ 5‬הפאונים משוכללים הם המילטוניים‪ .‬נתאר אותם‪ ,‬ולאחר מכן‬
‫נצביע על מעגל המילטוני בכל אחד מהם‪:‬‬
‫פאונים משוכללים‪:‬‬
‫בגאומטריה של המרחב‪ ,‬פאון משוכלל הוא גוף קמור המוגבל על ידי מצולעים משוכללים‪ ,‬כך שבכל‬
‫קודקוד שלו נפגש מספר שווה של מקצועות ולכל פאה מספר שווה של פאות הצמודות לה‪ .‬בשלושה‬
‫מימדים‪ ,‬קיימים חמשה פאונים משוכללים בלבד‪ -‬בספרו "יסודות"‪ ,‬הראה אוקלידס איך לבנות את‬
‫הגופים האלה והוכיח שאלה הפאונים המשוכללים היחידים בשלושה מימדים‪ .‬לחצי כאן לאנימציה‬
‫המאפשרת ראייה מכל כיוון של כל אחד מהם על ידי לחיצת העכבר בתוך התמונה המתאימה‪,‬‬
‫ולאחר מכן‪ ,‬גרירה בעזרת הלחצן השמאלי לכל כיוון ‪ .‬להלן תיאור של כל אחד מהפאונים‪,‬‬
‫ובעקבותיהם איוריים מתאימים‪.‬‬
‫פרק ‪ - 6‬עמוד ‪3‬‬
‫‪ .5‬גרף מסדר ‪ 4‬הנקרא ארבעון (טטרהדרון) ‪ -‬פאון משוכלל בעל ‪ 4‬פאות שכל אחת מהן היא‬
‫משולש שווה צלעות‪.‬‬
‫‪ .1‬גרף מסדר ‪ 8‬הנקרא קובייה (הקסהדרון) ‪ -‬פאון משוכלל בעל ‪ 6‬פאות שכל אחת מהן היא‬
‫ריבוע‪( .‬אותו ראינו כבר בפרק ‪)1‬‬
‫‪ .3‬גרף מסדר ‪ 6‬הנקרא תמניון (אוקטהדרון) ‪ -‬פאון משוכלל בעל ‪ 8‬פאות שכל אחת מהן היא‬
‫משולש שווה צלעות; מורכב משתי פירמידות ריבועיות‪ ,‬המחוברות בבסיסן‪.‬‬
‫‪ .4‬גרף מסדר ‪ 12‬הנקרא תריסרון (דודקהדרון) ‪ -‬פאון משוכלל בעל ‪ 51‬פאות‪ ,‬שכל אחת מהן‬
‫היא מחומש שווה צלעות‪.‬‬
‫‪ .5‬גרף מסדר ‪ 51‬הנקרא עשרימון (איקוסהדרון) ‪ -‬פאון בעל ‪ 12‬פאות שכל אחת מהן היא‬
‫משולש שווה צלעות‪.‬‬
‫איקוסהדרון‬
‫דודקהדרון‬
‫אוקטהדרון‬
‫הקסהדרון‬
‫טטרהדרון‬
‫להלן ייצוגים גרפיים של כל פאון משוכלל ‪ ,‬ובכתום‪ ,‬מסומנים מעגלי המילטון מתאימים ‪.‬‬
‫‪icosahedron‬‬
‫‪dodecahedron‬‬
‫‪cube‬‬
‫פרק ‪ - 6‬עמוד ‪4‬‬
‫‪octahedron‬‬
‫‪Tetrahedron‬‬
‫טכניקות לשלילת המילטוניות‪:‬‬
‫נפתח בדוגמה מאלפת‪.‬‬
‫נצא מהאוקטהדרון ‪-‬לו ‪ 8‬פאות‪ ,‬ו‪ 6-‬קודקודים ‪ ABCDEF‬המסומנים באדום באיור השמאלי‪ .‬בכל פאה‬
‫נוסיף קודקוד –אלה המסומנים בהתאמה בכחול על ידי‪  ,  ,  ,  ,  ,,  , ,‬באיור הימני‪ .‬בכל פאה‪,‬‬
‫נחבר את הקודקוד החדש לכל אחד משלשת הקודקודים שבפאה שלו‪-‬צלעות אלו סומנות בירוק באיור‬
‫הימני‪ .‬כך נוצר גרף מסדר ‪ , 14‬שם ‪ 6‬הקודקודים המקוריים מסומנים באדום ‪ 8 ,‬הקודקודים החדשים‬
‫בכחול‪ ,‬והחיבורים החדשים בירוק‪-‬כאשר רק חלק מהם נראים באיור‪.‬‬
‫השאלה‪ :‬האם יש לגרף זה‪ ,‬הגרף הימני‪ ,‬מעגל המילטון? נראה שלא קיים מעגל או מסילת המילטון‬
‫לגרף זה‪.‬‬
‫נניח בשלילה שקיים מעגל המילטון‪ .‬אם כך‪ ,‬המעגל עובר דרך כל ‪ 14‬הקודקודים פעם אחת בדיוק‪,‬‬
‫ונסגר‪.‬‬
‫פרק ‪ - 6‬עמוד ‪5‬‬
‫נעיין בשכנים של הקודקודים ‪(  ,  ,  ,  ,  ,,  ,‬הכחולים) בגרף‪ .‬לכל קודקוד כזה יש רק שכנים‬
‫אדומים בגרף‪ .‬לכן‪ ,‬בכל מעגל המילטוני שניצור‪ ,‬חייב להיות שבין כל ‪ 2‬קודקודים כחולים יש קודקוד‬
‫אדום‪ .‬אך אין מספיק קודקודים אדומים (יש רק ‪ 6‬מהם!)‬
‫המסקנה‪ :‬הגרף הנ"ל אינו המילטוני!‬
‫תרגיל‪:‬‬
‫האם הגרף המילטוני למחצה?‬
‫אמנם הגרף בדוגמה הקודמת אינו זוגי (למה?)‪ ,‬אין צלעות המחברות בין שני קודקודים כחולים‪,‬‬
‫ולכן הוא "מזכיר" תכונות של גרפים זוגיים‪.‬‬
‫נפנה אם כן‪ ,‬לשאלה הבאה‪:‬‬
‫שאלה‪:‬‬
‫איזה גרפים זוגיים הם המילטוניים?‬
‫המשפט הבא יענה חלקית על השאלה‪.‬‬
‫משפט ‪6.5‬‬
‫יהא ‪ G  V , E ‬גרף זוגי המילטוני‪ .‬אזי לשתי קבוצות החלוקה שלו יש אותו מספר איברים‪.‬‬
‫הוכחת משפט ‪:6.5‬‬
‫נניח ש ‪ G  V , E ‬גרף זוגי המילטוני מסדר ‪ . n‬עלינו להראות שקבוצת קודקודיו‪ , V ,‬מחולקת על ידי‬
‫חלוקה לשתי קבוצות בנות אותו מספר איברים כל אחת‪ .‬יהא ‪  v1 , v 2 ,.., v n , v1 ‬מעגל המילטוני ב‪-‬‬
‫‪ . G‬מצד אחד‪ ,‬נזכור שמעגל המילטוני מכיל את כל קודקודי ‪ . G‬מצד שני‪ ,‬על פי משפט ‪ n ,Kőnig‬הוא‬
‫זוגי‪ ,‬והאיברים ‪v1 , v 2 ,.., v n‬‬
‫הם לסירוגין באברי חלוקה שונים‪ .‬התוצאה נובעת‪■ .‬‬
‫פרק ‪ - 6‬עמוד ‪6‬‬
‫תרגיל‪:‬‬
‫‪ .5‬תני תנאי הכרחי לכך שגרף זוגי הוא המילטוני למחצה‪.‬‬
‫("אם ‪ G‬גרף זוגי למחצה‪ ,‬אזי______________")‬
‫‪ .1‬הוכיחי או הפריכי‪ :‬יהא ‪ G  V , E ‬גרף זוגי אשר לשתי קבוצות החלוקה שלו יש אותו‬
‫מספר איברים‪ .‬אזי ‪ G‬המילטוני‪.‬‬
‫כעת‪ ,‬אולי האינטואיציה שלנו מספיק "מפותחת" כדי לשער שתנאי הכרחי להמילטוניות זה שיהיה‬
‫"מספיק" צלעות בגרף‪ .‬נראה על ידי הדוגמה הבאה ‪ ,‬איך העדר צלעות יכול לשלול המילטוניות‪.‬‬
‫דוגמה‪:‬‬
‫נעיין בדוגמה באיור ‪ .‬נשים לב שהגרף הוא זוגי‪ ,‬כמצוין על ידי צביעה חוקית של הקודקודים‬
‫‪ ABCDEFG‬באדום והקודקודים ‪ abcdefghi‬בסגול‪ .‬היות ומדובר בגרף מסדר ‪ ,16‬ואברי חלוקה‬
‫מגודל ‪ 9‬ו‪ ,7-‬אזי ממשפט ‪ 6.1‬אנו יודעים שגרף זה אינו המילטוני‪.‬‬
‫פרק ‪ - 6‬עמוד ‪7‬‬
‫כעת נראה זאת גם בדרך אחרת‪.‬‬
‫נעיין בקודקודים הסגולים‪ .‬העיקרון הוא כדלהלן‪:‬‬
‫נניח בשלילה שיש מעגל המילטוני‪ .‬נבצע את השלבים הבאים‪:‬‬
‫א‪ .‬ספירת הצלעות שלא יכולות להיות במעגל‪:‬‬
‫היות וכל קודקוד מופיע אך ורק פעם אחת במעגל‪ ,‬כתוצאה מכך‪ ,‬כל קודקוד תורם רק ‪ 2‬צלעות‬
‫למעגל! שאר הצלעות שיוצאות ממנו אינן במעגל‪.‬‬
‫אי לכך‪ ,‬נערוך טבלה של הקודקודים הסגולים ‪ ,ABCDEFG‬והערכיות של כל אחד‪ ,‬לעומת מספר‬
‫הצלעות שיוצאות ממנו שאינם במעגל‪:‬‬
‫קודקוד ערכיות מספר הצלעות שאינם במעגל‬
‫‪A‬‬
‫‪3‬‬
‫‪( 1‬שכן רק ‪ 2‬מ‪ 3-‬הצלעות שיוצאות מ‪ A-‬יכולת להיות במעגל)‬
‫‪B‬‬
‫‪5‬‬
‫‪3‬‬
‫‪C‬‬
‫‪5‬‬
‫‪3‬‬
‫‪D‬‬
‫‪5‬‬
‫‪3‬‬
‫‪E‬‬
‫‪3‬‬
‫‪1‬‬
‫‪F‬‬
‫‪3‬‬
‫‪1‬‬
‫‪G‬‬
‫‪3‬‬
‫‪1‬‬
‫סה"כ‬
‫‪13‬‬
‫נסכם את מימצאינו עד כה‪ :‬אם יש מעגל המילטוני בגרף‪ ,‬יש ‪ 13‬צלעות שבוודאי לא תהיינה בו‪.‬‬
‫ב‪ .‬ספירת הצלעות שחייבות להיות במעגל‪:‬‬
‫היות ומדובר במעגל המילטוני בגרף מסדר ‪ ,16‬מספר זה שווה בהכרח ל‪.16-‬‬
‫ג‪ .‬ספירת צלעות הגרף‪ ,‬והשוואה‪:‬‬
‫פרק ‪ - 6‬עמוד ‪8‬‬
‫משלבים א' ו‪-‬ב‪ ,‬לומדים שמספר הצלעות בגרף חייב למנות לפחות ‪ ,)13616( 29‬אך בגרף זה ‪27‬‬
‫צלעות בלבד!‬
‫מכאן‪ ,‬שאין מעגל המילטון בגרף!‬
‫הערה‪:‬‬
‫‪ .1‬הגרף גם לא המילטוני למחצה! שכן למסילת המילטון דרושות ‪ 15‬צלעות‪ ,‬אך עדיין מתקיים‪:‬‬
‫‪. 15  13  27‬‬
‫‪ .1‬בסעיף א'‪ ,‬ספרנו רק את הצלעות העודפות היוצאות מהקודקודים הסגולים‪ ,‬וזה כדי לוודא‬
‫שלא ספרנו צלעות עודפות יותר מפעם אחת‪ .‬בדקי שאם היינו חוזרים על אותו שיקול לגבי‬
‫הקודקודים האדומים במקום הכחולים ‪,‬לא היינו יוצרים סתירה‪( .‬וזה למרות שכבר ידוע לנו‬
‫דרך שתי הוכחות שאין מעגל המילטוני בגרף!)‪ .‬ככלל‪ ,‬זוהי טכניקה שלא מובטחת ל"עבוד"‪.‬‬
‫הפרש‪:‬‬
‫יישום מעניין‪ :‬סיור ַ‬
‫בעיית סיור הפרש‪ ,‬או‪ ,‬כפי שמכונה באנגלית‪The Knight's tour ,‬‬
‫‪ problem‬היא עוד דוגמה של חידת שחמט‪.‬‬
‫הבעיה‪:‬‬
‫בהנתן לוח שחמט מגודל ‪ , r  s‬מצאי ערכי ‪ r, s‬עבורם קיימת מסילה‪/‬מעגל של תנועות הפרש‬
‫בלוח‪ ,‬בו הוא מבקר בכל משבצת פעם אחת בדיוק‪ .‬נכנה טיולים מסוגים כאלה בהתאמה על ידי‬
‫מסילת פרש‪/‬מעגל פרש ‪.‬‬
‫הערה‪ :‬תנועה של פרש‬
‫הוא מעבר לכל אחת מהמשבצות‬
‫פרק ‪ - 6‬עמוד ‪9‬‬
‫כמסומן באיור למטה‪.‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫א ב ג ד ה ו ז ח‬
‫הדגמת אפשרויות תנועה של פרש‪.‬‬
‫ניסוח מתמטי‪:‬‬
‫במילים אחרות‪ ,‬השאלה היא‪ :‬בהנתן גרף מסדר ‪( rs‬כאשר הקודקודים מתאימים למשבצות הלוח‪,‬‬
‫וקודקודים הם שכנים אם ורק אם מרחק המשבצות אחת לשניה מתאים לתנועה חוקית של הפרש‬
‫ביניהן) ‪ ,‬עבור איזה ‪ r, s‬הגרף הוא המילטוני או המילטוני למחצה?‬
‫ישנן בעיות דומות נוספות רבות‪.‬‬
‫מביניהן‪ :‬אם לוח כזה הוא המילטוני‪ ,‬כמה מסילות שונות כאלה קיימות? בפרק ‪ 7‬נדון בשאלה‬
‫דומה לזה בהקשר של גרפים שלמים‪.‬‬
‫הערה‪:‬‬
‫בניגוד לשאלה הפתוחה שהזכרנו בראשית הפרק‪ ,‬בעיית הפרש היא פתורה‪-‬שימי לב לתאריך‬
‫המשפט‪" -‬היסטוריה בימינו"! המשפט מהווה אפיון של כל לוחות השחמט בעלי מעגל פרש‪.‬‬
‫פרק ‪ - 6‬עמוד ‪10‬‬
‫משפט ‪:)5995( Schwenk‬‬
‫משפט ‪ – 6.1‬משפט ‪: Schwenk‬‬
‫לכל לוח שחמט מגודל ‪ , r  s‬כאשר ‪ , r  s‬קיים מעגל פרש פרט לכל אחד מהמקרים הבאים‪:‬‬
‫‪ r, s .1‬שניהם אי זוגיים ‪,‬שונים מ‪1-‬‬
‫‪r  1, s  1 .2‬‬
‫‪r  2 .3‬‬
‫‪r  4 .4‬‬
‫‪4‬‬
‫‪‬‬
‫‪r  3  s  6 .5‬‬
‫‪8‬‬
‫‪‬‬
‫לא נוכיח את המשפט כולו‪ ,‬אלא רק נראה שבחלק מחמשת המקרים המצוינים אין מעגל פרש‪.‬‬
‫הוכחה חלקית של משפט ‪:6.1‬‬
‫הוכחת מקרה ‪r  4 :4‬‬
‫נניח ‪ , r  4‬ונוכיח כי אין מעגל המילטון‪.‬‬
‫במילים אחרות הלוח שלנו נראה כמו באיור למטה‪.‬‬
‫פרק ‪ - 6‬עמוד ‪11‬‬
‫נניח בשלילה שיש מעגל כזה‪ ,‬ונגיע לסתירה‪.‬‬
‫שימי לב לשני חוקי "צביעה" הבאים ‪ ,‬כאשר צירופם יחד יוביל לסתירה המבוקשת‪:‬‬
‫א‪ .‬בכל תנועה של הפרש‪ ,‬הפרש עובר ממשבצת שחורה למשצבת לבנה או להפך‪.‬‬
‫ב‪ .‬מצד שני‪ ,‬בהתייחס לצביעת הלוח בסגול וירוק באויר הבא‪ ,‬יש מספר שווה של משבצות סגולות‬
‫וירוקות‪ .‬נשים לב שממשבצת ירוקה הפרש חייב לעבור למשבצת סגולה‪ ,‬וממשבצת סגולה‪,‬‬
‫למרות שיש לו אופציה לעבור למשבצת מכל אחד מהצבעים‪ ,‬היות ויש מספר שווה של משבצות‬
‫משני הצבעים‪ ,‬כדי ליצור מעגל המילטוני הוא חייב לעבור למשבצת ירוקה‪( .‬כי אחרת לא יהיו‬
‫מספיק משבצות סגולות בכדי לסיים את המעגל)‪.‬‬
‫כעת‪ ,‬נניח ללא הגבלת הכלליות שהוא התחיל את המעגל במשבצת שחורה ‪-‬ירוקה (שחורה ביחס‬
‫לצביעה "הרגילה" של הלוח בצבעי שחור‪/‬לבן‪ ,‬וירוקה ביחס לצביעה של הלוח בצבעי ירוק‪/‬סגול) ‪.‬‬
‫ניתן להניח כך‪ ,‬כי אם המשבצת ההתחלתית צבועה בצירוף אחר של צבעים‪ ,‬ניתן לשנות את הטיעון‬
‫הבא בהתאם‪.‬‬
‫על פי האמור‪ ,‬בכל מעבר הוא חייב לשנות את הצבע שניתן מצביעה א'‪ ,‬וגם לשנות את הצבע שניתן‬
‫מצביעה ב'‪ .‬לכן‪ ,‬הוא חייב לעבור למשבצת לבנה סגולה‪ ,‬וממנה לשחורה ירוקה וכו' עד לסיום‬
‫המעגל‪ ,‬כאשר עבר דרך כל משבצות הלוח‪ .‬מה שיוצא הוא שכל המשבצות ירוקות הם שחורות ‪,‬וכל‬
‫המשבצות הלבנות הם סגולות ‪ -‬דבר שהוא לא נכון!‬
‫מסקנה‪ :‬אין מעגלי פרש בלוחות מגודל ‪ , 4  s‬עבור ‪4  s‬‬
‫פרק ‪ - 6‬עמוד ‪12‬‬
‫‪■.‬‬
‫תרגיל‪ :‬הוכיחי שהגרפים שבמקרים ‪ 5,1,3‬המוזכרים במשפט אינם המילטוניים‪.‬‬
‫שאלה‪:‬‬
‫האם בלוח שחמט מגודל ‪ , 4  s , 4  s‬קיימת מסילת פרש?‬
‫מסתבר שהתשובה היא חיובית‪ ,‬פרט למקרה ‪ . 4  4‬המעוניינים מוזמנים לפנות לדף זה הכולל‬
‫מידע וכן קישורים מקיפים בנושא סיורי פרש‪.‬‬
‫תנאים מספיקים לקיום מעגל המילטוני‪:‬‬
‫נחזור כעת לנושא המרכזי של הפרק‪ ,‬ונביא תנאי מספיק לכך שגרף הוא המילטוני‪ .‬יש הרבה תנאים‬
‫מספיקים אחרים‪ ,‬חלק מהם נראה בתרגיל ‪.6‬‬
‫משפט ‪ - 6.3‬משפט ‪:)5951( Dirac‬‬
‫‪n‬‬
‫יהא ‪ G  V , E ‬גרף מסדר ‪ n  3‬ו‪-‬‬
‫‪2‬‬
‫‪ .  (G) ‬אזי ‪ G‬המילטוני‪.‬‬
‫שימי לב‪ :‬גם האמירה במשפט ‪ 6.3‬מבטאת את הרעיון שאם יש מספר גדול "מספיק"של צלעות‬
‫בגרף ‪ ,‬אזי הוא המילטוני‪.‬‬
‫הוכחת משפט ‪6.3‬‬
‫‪n‬‬
‫נניח בשלילה‪ ,‬זאת אומרת ‪ ,‬נניח שקיים גרף ‪ G‬מסדר ‪ n  3‬ו‬
‫‪2‬‬
‫‪ ,  (G) ‬שהוא לא המילטוני‪.‬‬
‫מקרה א'‪:‬‬
‫נניח ש ‪ G‬הוא "קריטי" ביחס ל"חוסר המילטוניות"‪ .‬פירוש הדבר‪ ,‬שאם מוסיפים לו צלע נוספת אחת‪ ,‬ולו‬
‫רק צלע אחת‪ ,‬הגרף המתקבל הוא המילטוני‪.‬‬
‫הערה חשובה‪ :‬הגרף מסדר ‪ n‬עם כל הצלעות‪ K n ,‬הוא המילטוני כפי שראינו‪ ,‬ולכן קיימים גרפים‬
‫קריטיים ביחס לחוסר המילטוניות‪.‬‬
‫פרק ‪ - 6‬עמוד ‪13‬‬
‫תרגיל‪ :‬מצאי גרף קריטי ביחס להמילטוניות מסדר ‪.5‬‬
‫יהיו ‪ 2 u, v‬קודקודים שאינם שכנים‪.‬‬
‫נשים לב שקיימים כאלה‪( ,‬למה?!)‪ .‬כעת‪ ,‬הגרף ‪ , G'  G  uv‬דהיינו הגרף המתקבל מ‪ G -‬על ידי‬
‫הוספת הצלע ‪ ) uv‬הוא גרף המילטוני‪ ,‬כי הוא התקבל מהגרף הקריטי ‪ G‬על ידי הוספת צלע‪ .‬לכן קיים‬
‫מעגל בגרף ' ‪ G‬המכיל את כל קודקודי ‪ . V‬נוריד ממנו את הצלע ‪ , uv‬וקיבלנו מסילת המילטון ב‪G -‬‬
‫שקצותיו ‪. u, v‬‬
‫נסמן את קדוקודי ‪ V‬על פי סדר הופעתם במסילה‪.  u  v1 , v 2 ,.., v n  v  :‬‬
‫נביט בשכני הקודקוד ‪. u‬‬
‫טענה‪ :‬אם ‪ , deg G u  k‬אזי יש לפחות ‪ k‬קודקודים שאינם שכנים של ‪. v‬‬
‫הוכחת הטענה‪:‬‬
‫נזכור שהאוסף }‪ {u  v1 , v 2 ,.., v n  v‬מהווה רשימה שלמה של כל קודקודי ‪. G‬‬
‫נשים לב שאם שאחד משכני ‪ u‬הוא ‪ ,) 1  i  n  1 ( vi 1‬אזי ‪ v i‬אינו שכן של ‪. v‬‬
‫כי אחרת‪ ,‬קיים מעגל המילטון ‪  vi 1 , v1 , v 2 ,..vi , v n , v n 1 , v n  2 ,...vi  2 , vi 1 ‬בגרף (כפי שמודגם באיור‬
‫הבא) ‪ ,‬דבר שלא ייתכן‪.‬‬
‫על ידי הפעלה חוזרת של השיקול הנ"ל עבור כל שכני ‪ , u‬התוצאה נובעת‪.‬‬
‫בפרט‪ ,‬מהטענה‪ ,‬נוכל להסיק‪( . deg G v  n  1  k  deg G u  k :‬הקודקוד ‪ v‬לא יכול להיות שכן‪ ,‬לא‬
‫לעצמו ‪ ,‬ולא לעוד ‪ k‬קודקודים אחרים)‪.‬‬
‫‪n‬‬
‫אך מצד שני‬
‫‪2‬‬
‫‪ .  (G) ‬ניעזר בהנחה זו ונקבל סתירה‪:‬‬
‫פרק ‪ - 6‬עמוד ‪14‬‬
‫‪n n‬‬
‫‪‬‬
‫‪ deg G u  deg G v‬‬
‫‪‬‬
‫‪k  n‬‬
‫‪‬‬
‫‪1‬‬
‫‪k  n  1‬‬
‫‪‬‬
‫‪degG v n 1 k deg u‬‬
‫‪2 2  ( G ) n‬‬
‫מקסימום ‪deg v‬‬
‫‪G‬‬
‫‪G‬‬
‫‪. n‬‬
‫‪2‬‬
‫סתירה זו מוכיחה את המשפט עבור גרפים קריטיים‪.‬‬
‫מקרה ב'‪:‬‬
‫‪n‬‬
‫נניח ש‪ G  V , E  -‬גרף מסדר ‪ n  3‬ו‪-‬‬
‫‪2‬‬
‫‪  (G) ‬שהוא לא המילטוני וגם לא גרף קריטי ביחס‬
‫להמילטוניות‪ .‬נדון בשני קודקודים ‪ x, y‬כל שהם ב‪ G -‬שאינם שכנים ב‪(. G -‬למה קיימים כאלה?) ‪.‬אם‬
‫הגרף ‪ G'  G  xy‬אינו המילטוני‪ ,‬אזי ' ‪ G‬גם מקיים את הנחותינו ‪-‬הוא גרף מאותו סדר כמו ‪G ' , G‬‬
‫‪n‬‬
‫מקיים‬
‫‪2‬‬
‫‪n‬‬
‫‪2‬‬
‫‪(  (G' ) ‬שכן היות והשוני היחיד בין ‪ G‬לבין ' ‪ G‬היא הוספת צלע‪ ,‬מתקיים‬
‫‪ ,)  (G' )   (G) ‬ו‪ G ' -‬אינו המילטוני‪ .‬נחליף את ‪ G‬ב‪ . G ' -‬נחזור על תהליך זה של הוספת צלעות‬
‫לגרף‪ ,‬עד אשר לא נוכל להמשיך להוסיף עוד צלעות מבלי שהגרף הנוצר נהיה המילטוני‪ .‬בשלב ההוא‬
‫קיבלנו גרף קריטי‪ ,‬וחזרנו למקרה א'‪■ .‬‬
‫בעיית הסוכן הנוסע‪:‬‬
‫בהקשר גרפים המילטוניים‪ ,‬נזכיר יישום מפורסם ‪,‬הנקרא "בעיית הסוכן הנוסע" והידוע גם בקיצור‬
‫בשם ‪ TSP‬או )‪ .) Travelling Salesman Problem‬הבעיה עוסקת בסוכן נוסע‪ ,‬שבמסגרת‬
‫תפקידו עליו לעבור בערים רבות‪ ,‬המקושרות ביניהן ברשת כבישים‪ ,‬ויש למצוא כיצד יעבור בין כל‬
‫הערים במסלול הקצר ביותר‪ .‬בדומה לבעיית הדוור הסיני‪ ,‬מדובר בגרף ממושקל‪ ,‬שהמשקל בכל‬
‫צלע מתאים למרחק בין הערים המתאימות‪ .‬אם כן‪ ,‬נקבל‪:‬‬
‫ניסוח מתמטי לבעייה‪:‬‬
‫למצוא בגרף ממושקל מסלול המילטוני שמשקלו הוא הקטן ביותר‪.‬‬
‫לאור הנאמר בפתח הפרק‪ ,‬העובדה שין אלגוריתם למציאת פתרון לבעיית ‪ TSP‬בגרף ממושקל‬
‫אינה מפתיעה‪ .‬עם זאת‪ ,‬קיים אלגוריתם של קירוב לבעיית הסוכן הנוסע‪.‬‬
‫פרק ‪ - 6‬עמוד ‪15‬‬
‫נסיים פרק זה בחקירת קיום מעגלים המילטונייים בגרפים מכוונים‪:‬‬
‫המילטוניות בגרפים מכוונים‪:‬‬
‫ראינו‪( -‬בלי הרבה מאמץ☺) ‪ ,‬שגרף שלם לא מכוון מסדר ‪ n‬הוא המילטוני‪ .‬מה עם גרף שלם‬
‫מכוון? כאן השאלה היא אחרת‪ ,‬שכן כל הצלעות כעת נהיו "רחובות חד סטריים"!‬
‫תרגיל‪ :‬הראי על ידי דוגמה נגדית שלא כל גרף מכוון שלם מסדר ‪ n‬הוא המילטוני‪.‬‬
‫הדרכה‪ :‬נחשוב על ‪ n‬הקודקודים כעל ‪ n‬אנשים‪ ,‬אשר בין כל שניים מתקיים משחק שחייב‬
‫להסתיים ב"מנצח" ו"מפסיד"‪.‬נכוון את הצלע בין ‪ 1‬הקודקודים המתאימים בגרף מהמפסיד אל‬
‫המנצח‪ .‬איזה גרף יתקבל אם יש אדם שהוא "לוּזר" –דהיינו שהוא מפסיד בכל אחד מ ‪n  1‬‬
‫המשחקים שהוא משחק?‬
‫המילטוניות למחצה בגרפים מכוונים שלמים ‪:‬‬
‫שאלות‪:‬‬
‫‪n‬‬
‫‪ )5‬כמה גרפים מכוונים שלמים (לא איזומורפיים) קיימים מסדר ‪ ? n‬הוכיחי שהתשובה היא ‪.  ‬‬
‫‪2‬‬
‫‪ )1‬האם קיימת מסילה המילטונית בגרף שלם מכוון מסדר ‪? n‬‬
‫‪ )3‬ואם כן‪ ,‬האם קיום או אי קיום של מסילה המילטונית תלוי בכיוונים של הצלעות בגרף השלם‬
‫המכוון מסדר ‪? n‬‬
‫מסתבר שקיימת מסילה המילטונית לכל גרף שלם מכוון מסדר ‪ !! n‬הנה המשפט‪:‬‬
‫משפט ‪6.4‬‬
‫יהי ‪ G  V , E ‬גרף שלם מכוון מסדר ‪ . n  2‬אזי ‪ G‬המילטוני למחצה‪.‬‬
‫הוכחת משפט ‪6.4‬‬
‫באינדוקציה על ‪ , n‬סדר הגרף‪.‬‬
‫‪ ‬עבור ‪ , n  2‬הצלע היחידה היא מכּוונת‪ ,‬והמסילה בהתאם‪.‬‬
‫‪ ‬נניח נכונות עבור ‪ , n‬ונדון בגרף שלם מכוון ‪ H‬מסדר ‪ . n  1‬נבחר קודקוד ‪ v‬בו ונדון בגרף‬
‫}‪( . H \ {v‬ניזכור‪ -‬זה הגרף המתקבל מ ‪ H‬על ידי הורדת הקודקוד ‪ v‬יחד עם כל אחת מ ‪n‬‬
‫פרק ‪ - 6‬עמוד ‪16‬‬
‫הצלעות המכוונות בין ‪ v‬לבין הקודקודים האחרים )‪ .‬אם כך‪ H \ {v} ,‬הוא גרף שלם מכוון‬
‫מסדר ‪ , n‬ולכן‪ ,‬על פי הנחת האינדוקציה‪ ,‬יש לו מסילת המילטון‪ .‬נסמן את המסילה ואת‬
‫קודקודיה על ידי ‪ .  v1 , v 2 ,.., v n ‬שימי לב שמשתמע מתוך המספור הזה‪ ,‬שהצלע בין‬
‫הקודקודים ‪ v1 ,v2‬מכוונת מ‪ v1 -‬ל‪ , v 2 -‬אך לא להפך‪ .‬הוא הדין לכל שאר הצלעות במסילה)‪.‬‬
‫בגרף ‪ , H‬חלק מהצלעות בין ‪ v‬לבין שאר הקודקודים פונות מ‪ v -‬אליהם‪ ,‬חלק בכיוון ההפוך‪ .‬אם הצלע‬
‫בין ‪ v‬ל‪ v1 -‬היא ‪ , vv1‬אזי ‪  v, v1 , v 2 ,.., v n ‬היא מסילת המילטון ב‪ H -‬כמבוקש‪ .‬אם לא‪ ,‬אזי בהכרח‬
‫הצלע בין ‪ v‬ל‪ v1 -‬היא ‪ . v1v‬יהא ‪ 1  i  n , i‬האינדקס המקסימלי עבורו הצלע בין ‪ v‬ל‪ v i -‬היא ‪. v i v‬‬
‫אם ‪ , i  n‬אזי כל הצלעות פונות אל ‪ , v‬ו‪  v1 , v 2 ,.., v n , v  -‬היא מסילת המילטון ב‪ H -‬כמבוקש‪ .‬אם‬
‫‪ , i  n‬זה אומר שהצלע בין ‪ v‬ל‪ v i -‬היא ‪ v i v‬אך הצלע בין ‪ v‬ל‪ vi 1 -‬היא ‪ . vvi 1‬במקרה זה‪,‬‬
‫‪  v1 , v2 ,...vi , v, vi 1...., vn ‬היא מסילת המילטון ב‪H -‬‬
‫כמבוקש‪■ .‬‬
‫סיכום נושאים ומונחים מפרק ‪:6‬‬
‫‪‬‬
‫גרף המילטוני‬
‫‪‬‬
‫גרף המילטוני למחצה‬
‫‪‬‬
‫זיהוי גרפים לא המילטוניים‬
‫‪‬‬
‫גרפים זוגיים המילטוניים‬
‫‪‬‬
‫משפט ‪Schwenk‬‬
‫‪‬‬
‫משפט ‪Dirac‬‬
‫‪‬‬
‫איזכור של בעיית הסוכן הנוסע‬
‫‪‬‬
‫המילטוניות בגרפים מכוונים‪.‬‬
‫פרק ‪ - 6‬עמוד ‪17‬‬