@חיים-כהן-5 אוקי, אז זה עניין אותי מאוד, כי בחנתי את זה בעבר.
האפשרות שהאלגוריתם מחשב באמת את כל האפשרויות ובוחר בקצר שבהם הוא כמעט בלתי אפשרי יש כאן יותר מידי משתנים בפרט אם יש לך 200 כתובות. (עבור 20 כתובות יש כ‑10¹⁷ מסלולים)
אז מה כן?
קודם כל האלגוריתם שלך תמיד יקבע את הכתובת הראשונה ברשימה ככתובת הראשונה בסיבוב, ואז היא רק תשקלל ממנו והלאה גם אם הוא נמצא בדיוק באמצע בין כל שאר הכתובת.
ואז הוא בודק את המרחק של כל שאר הכתובות מהכתובת ההיא ולוקח את הכתובת אם המרחק הכי מינימלי והופך אותו לשני ברשימה וכן הלאה...
ואז יש אימות נוסף שבא למנוע מצב שנשאר לסוף כתובת אחת רחוקה ושאינה חלק מקבוצת כתובות קרובה
בשלב הראשון זה מוודא שאתה לא חוצה את אותו מקום פעמיים מה שמוכיח על סיבוב מיותר
אבל כדי למנוע את המצב שכתובת מרוחקת קרובה יותר לנקודה כלשהיא בדרך מאשר מנקודת הסיום שממנה נשלחת לשם האלגוריתם עובד כך:
הוא לוקח כמה תחנות בודדות מהמסלול ומנסה להציב אותם בכל מיקום אחר ברשימה והוא בודק 2 דברים כמה נחסך על ידי דילוג על התחנה הזו וכמה נוסף על ידי העצירה החדשה, אם מתברר שהמקום החדש עדיף, מעבירים לשם.
אבל זה בעצמם החלק הכי מורכב של האלגוריתם שמכיל הכי הרבה אפשרויות וכדי להתמודד אם זה הוא מוגבל להזזה של 3 תחנות מקסימום בו זמנית.
ככה שיש כאן כמה חוסרים, הראשון יכול להיות תמיד שארגון בצורה שונה תהיה יעילה יותר אבל אם הזזה של 3 תחנות בלבד לא מגלה את זה אנחנו לעולם לא נדע את זה.
אז תכלס' אחרי ביצוע החישובים (אני? הAI כמובן...) הסיכוי שנגיע למסלול האפוטימלי באמת הוא כך:
עד 10 כתובות סיכוי מאוד גבוה כמעט תמיד
15-20 כתובות יורד לכשליש מהמקרים
40 כתובות ומעלה - סיכוי אפסי, כמעט תמיד יהיה מסלול קצר יותר (אם כי לא בהכרח בפער גדול)
ולשאלה החשובה באמת, כמה אנחנו רחוקים מהמסלול האופטימלי שזה לפי ההשערה יורד לממוצע של 4% (כ7 דקות לנסיעה בת 3 שעות - באמת לא קריטי) אחרי הרצת שני התיקונים.
מה שכן נשאר פתוח זה הכתובת הראשונה, אם היא הכתובת ממנה אתה באמת יוצא - מצוין לא תפסיד מכך כלום אבל אם נניח אתה לא יודע מה כתובת המוצא של השליח אז עצם זה שהתוכנה תקבע כתובת מסוימת לכתובת הראשונה תוריד אותנו בערך ב20% ממוצע מהמסלול האופטימלי
מקווה שהייתי ברור מספיק
בכל אופן, שאפו.