Table of Contents
הלב האלגורימי של הניווט המודרני
יישומי ניווט בזמן אמת שינו כיצד מיליוני לנווט ערים, פרברים וכבישים מדי יום. יישומים כמו Google Maps, Waze, Apple Maps וטוםטוםטום מסתמכים על אלגוריתמים מתוחכמות כדי ליישר את הנתיב המהיר ביותר מנקודה A לנקודה B בתנאי שינוי מתמיד.בין האלגוריתמים הבסיסיים ביותר הם אלגוריתם של Dijkstra, אבן הפינה של תאוריה גרף שמפתורה את הבעיה של קוד-פתקטיקה, למרות שלעתים קרובות, הוא עדיין עומד על גבי תוכניות מודרניות של מערכות Dijks-Dijk-Dijk-Time, אך ורק ל-Dijks, לעתים קרובות, עם אלגוריתמיות, אך ורק אז הוא עדיין עומדות, עם אלגוריתמיות יותר ויותר מתקדמות יותר ויותר, עם אלגוריתם של מערכות מתקדמות יותר ויותר, עם אלגוריתמיות, עם אלגוריתמיות של אלגוריתם של מערכות אלגוריתמים, עם אלגוריתמים, לעתים קרובות, עם אלגוריתמים, עם אלגוריתמים, לעתים קרובות, עם אלגוריתמים, עם אלגוריתמים מתקדמים, עם אלגוריתמים מתקדמים, עם אלגוריתמים, לעתים קרובות, עם אלגוריתמים, לעתים קרובות, אלגוריתמים, עם אלגוריתמים, אלגוריתמים, אלגוריתמים מתקדמים, אלגוריתמים, אלגוריתמים,
מאמר זה מספק מחקר מעמיק, סמכותי של איך האלגוריתם של דייקסטרה עובד בתוך יישומי ניווט בזמן אמת.We מכסה את הבסיס התיאורטי שלה, פרטי יישום מעשי, אימוץ בעולם האמיתי, אתגרים טבועים ושיפורים מתעוררים שימשיכו לעצב את העתיד של תכנון נתיב.
להבין את אלגואטרם של דייקסטרה
מקור והרעיון הליבה
(דז'ר דייקסטרה) הגה לראשונה את האלגוריתם שלו, בעודו עובד במרכז המתמטי באמסטרדם, הוא רצה למצוא את הנתיב הקצר ביותר בין שתי ערים באמצעות מחשב, והתוצאה הייתה גישה מהפכנית לסיבוב הגרף.האלגוריתם פותר את הבעיה של קוד יחיד-הקצרת ביותר בגרף במשקל, שבו כל אחד מהמסלולים הוא לא שלילי.
ייצוג ומשקלים
הכוח של האלגוריתם של דייקסטרה נמצא ביכולתו לחקור באופן שיטתי את הצמתים על מנת להגיע למרחק גובר מהמקור.הוא שומר על סט של מרחקים אוהלים לכל צומת, תחילה להציב את המרחק המקור לאפס וכל השאר לאינסוף.בכל שלב, האלגוריתם בוחר את הצומת ללא פיקוח במרחק הקטן ביותר, ביקורים, ו"משחרר" את קצהו היוצא - בכל שלב, אם לא ניתן להגיע אל פני השטח.
עבור ניווט תנועה, משקולות קצה חייב לשקף תנאים בזמן אמת כגון מהירות נוכחית, תקריות תנועה, סגירת כבישים, ואפילו דפוסים היסטוריים.המשקל של קצה יכול להשתנות באופן דינמי במהלך טיול יחיד, אשר מציג מורכבות כי אלגוריתם Dijkstra הבסיסי אינו מטפל במקומי.עם זאת, יישומי ניווט בדרך כלל להפעיל את האלגוריתם שוב ושוב או להשתמש בגרסאות תמיכה העדכונים דינמיים.
ניווט בזמן אמת
מפת רשת הדרכים
במערכת ניווט מודרנית, רשת הכבישים מאוחסנת כגרף מכוון או לא מעודן.כל פלח כביש הופך לחוד, ומשקלתו ננקטת מתערובת של:
- (ב) ,0) ,(ה) ,(ה) ,(ה) ,(ה) , אורכו הפיזי של הסעיף.
- (ב) ,0) הגבלת מהירות (FLT:1) וזמני נסיעה בזרימה חופשית טיפוסיים.
- (FLT:0) נתוני תעבורה בזמן אמת: נתוני GPS, דוחות אירועים, אזורי בנייה ותנאי מזג אוויר.
- (ב) ,0) , Turn CostsveFLT:1: עונשים על פני תנועה, עיכובים קלים התנועה או תפנית מוגבלת.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
גרף זה הוא לעתים קרובות עצום - רשת כביש ארצית יכול להכיל עשרות מיליוני צמתים ונקודות קצה. Preprocessing ויעיל אינדקס להיות קריטי עבור ביצועים בזמן אמת.
תפקיד הנתונים בזמן אמת
האלגוריתם של דייקסטרה מניח באופן חד-משמעי משקלים סטטיים. לשלב תנועה חיה, יישומי ניווט שוב ושוב לחשב את המסלול על בסיס תכוף (כל כמה שניות עד דקות) הם גם משנים את הקצוות בזיכרון בהתבסס על זרמי נתונים נכנסים.לדוגמה, תאונה פתאומית שמפחיתה את המהירות על כביש מהיר מגבירה את משקלו של אותו קצה, מה שגורם לאלגוריתם לשנות את המשתמשים הפוטנציאליים גם כן משתמשים בנקודת-שלבים: גישה ראשונית עם אלגוריתמים, תוך כדי התאמה ראשונית, תוך כדי התאמה ראשונית, תוך כדי שינוי משקל, או אלגוריתמים, תוך כדי שינוי מהיר יותר, תוך כדי התאמה ראשונית, תוך כדי שינוי מהיר יותר, תוך כדי שינוי מהיר יותר, תוך כדי שינוי מהיר יותר, תוך כדי שינוי מהיר יותר, תוך כדי התאמה ראשונית, תוך כדי שינוי מהיר יותר, תוך כדי שינוי מהיר יותר, תוך כדי שינוי משקל איטי יותר ויותר, תוך כדי שינוי מהיר יותר ויותר, תוך כדי שינוי מהיר, תוך כדי שינוי מהיר של אלגוריתמים, תוך כדי שינוי מהיר יותר ויותר, תוך כדי שינוי מהיר יותר ויותר, תוך כדי שינוי מהיר יותר ויותר, תוך כדי שינוי משקל פנימי, תוך כדי שינוי משקל פנימי, תוך כדי שינוי משקל פנימי, תוך כדי שינוי מהיר של אלגוריתמים, תוך כדי שינוי משקל איטי יותר ויותר,
שירותים פופולריים כמו FLT:0) Google MapsigtureFLT:1 ו- (FLT:2WazeearFLT 3: 3 משלבים את האלגוריתם של Dijkstra עם חיפושים היוריים (למשל, FLT:4A*03:5) ומכונה לחזות קידוד עתידי.
שלב-בי-שלב של Dijkstra בניווט
בעוד השלבים המושגיים פשוטים, יישום יעיל דורש מבני נתונים זהירים.למטה הוא מסלול מפורט של האלגוריתם כפי שנעשה בו שימוש בהקשר ניווט:
- (FLT:0) InitializationFLT:1: הגדר את המרחק לצומת ההתחלה (מיקום הנוכחי של המשתמש) כ-0.קבע את כל המרחקים האוהלים של צמתים אחרים לאינסוף. צור תור עדיפות (בדרך כלל מינוס) המכיל את כל הנקודות אשר הגיעו עד למרחק הנוכחי שלהם.
- (ב) [ה]: [ה], [ה], [ה], [ה], [ה], [ה],] [ה], [ה],] [ה]], [ה],] יראת האלגוריתם [ה] את הצומת] הקטן ביותר מן התור העדיפותי.
- (הפסקה:0) ,Relax EdgesFLT:1: עבור כל שכנת הצומת הנוכחי, למקם את זמן הנסיעה ממקור לשכן הזה דרך הצומת הנוכחי (המרחק של הצומת + משקל של קצה) אם זה פחות מהמרחק הנוכחי של השכן הנוכחי אוהל, לעדכן את המרחק של השכן לדחוף את הצומת מעודכן בחזרה אל תור העדיפות (או להפחית את המפתח אם הוא תומך בנתונים הנוכחיים).
- (ב) [ה]: [ה], [ה], [ה], [ה], [ה],] [ה]], [ה], [ה]]]ה']'[ה']'[ה]']'[ה']'[ה']'[ה']'[ה']']'[ה']']'[ה'[ה'[ה']']'[ה']']']'[ה'[ה']'[ה'[ה'[ה']']'[ה'[ה']']'[ה'[ה'[ה'[ה']']']']'[ה']']'[ה'[ה'[ה'[ה']']']']'[ה'[ה']']']'[ה']'[ה'[ה']'[ה'[ה']']'[ה'[ה']'[ה']']'[ה']']'[ה'[ה'[ה'[ה'[
- (ב) [ה]: [ה], [ה], [ה], [ה], [המרחק הקצר ביותר הוא] סופי] או שהתור העדיפותי הופך ריק (התחילה אינה ניתנת להשגה).
- (ב) ,0) ,Reconstruct Pathph PathFLT:1: ברגע שהמרחק היעד ידוע, מעקב אחר נקודות קודמות מאוחסנות במהלך הרפיה כדי להציג את רצף הצטלבות שיוצרו את הדרך הקצרה ביותר.
בניווט בזמן אמת, לאחר שהתוואי הראשוני נקבע, המערכת ממשיכה לפקח על שינויים.אם תקרית תנועה מגדילה מאוד את משקל הכביש, האלגוריתם עשוי להיות צורך לעבור מהמיקום הנוכחי עם משקולות מעודכנים, לעתים קרובות באמצעות טכניקות כגון FLT:0incremental DijkstrastraphFLT:1 או FLT:2 La Dezy Deletionalphalph3 כדי למנוע הפעלה מחדש של .
דרישות יישום עבור מערכות ייצור
מבנה נתונים וביצועים
האלגוריתם הקלאסי Dijkstra פועל בזמן O(V2) עם מערך פשוט עבור בחירה מרחוק, אבל יישומים מודרניים משתמשים ב- FLT:0priority תורFLT:1 כדי להשיג את O(V +E) מורכבות V), שבו V הוא מספר ה- vertices ו- E הוא מספר הקצוות. עבור רשתות כביש, מספר הקצוות הוא בדרך כלל מספר פעמים של גרפים (כולל גרפים משותפים).
- (ב) ויקרא י"א): "התורה" (ב"ג) "ה', "ה'" (ב"ב)" (ב"ב)"ב"ה, "ה')" (ב"ב)"ב"ה', "ה')" (בראשית כ"ד).
- (ב) [15] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) [17] ,0) ,(ב) אלגוריתם של Dial) FLT:1: שימושי כאשר משקלי קצה הם קטנים פולשים; O(V +E) עבור משקולות כבולות.
יישומים ניווט לעתים קרובות מעבדים גרפים לתוך רמות היררכיות (למשל, FLT:0Contraction HierarchiessscioFLT:1) כדי להפחית את גודל הגרף האפקטיבי עבור ניתוק למרחקים ארוכים.טכניקות אלה לבנות הרחק מ Dijkstra אבל עדיין לנוח על אותם עקרונות אטלישימים.
משקל דינמי
נתוני התנועה בזמן אמת הזרמת נתונים במהירות גבוהה מציב אתגר: תור העדיפות עשוי להכיל מרחקים מפוסקים לאחר שינוי משקל קצה.
- (ב) ,0) , מלא התחדשות (FLT:1): מחיקת המדינה הנוכחית ולנהל את Dijkstra מהמיקום הנוכחי עם משקולות מעודכנים.זה פשוט אך מבזבז שינויים קטנים.
- (FLT:0) עדכונים מצטברים 1FLT: ליישם אלגוריתם דינמי קצר-פת (למשל, אחד על ידי Ramalingam and Reps) כי רק revisits מושפע נודים.עם זאת, אלה מורכבים פחות נפוצים בייצור - רוב המערכות לבחור עבור קידוד מלא במהירות עם תור בעדיפות גבוהה.
היתרונות של Dijkstra's Algorithm ב- Traffic Apps
למרות גילו, האלגוריתם של דייקסטרה נשאר פופולרי ממספר סיבות משכנעות:
- (FLT:0)Optimalityערובות ל- 1FLT: תמיד זה מוצא את הנתיב הקצר ביותר מבחינת המשקל המוגדר, בתנאי שאין מחזורי משקל שליליים.
- (ב) [15] , ⁇ ⁇ ⁇ : אלגוריתם קל ליישם, לפענוח ולאמת התנהגותו ה ⁇ סטית הופכת אותו לנכון עבור מערכות קריטיות בטיחות שבהן יש צורך לבחון את ההצדקה.
- (FLT:0) פרשנות משקל סימולציה 1FLT: על ידי התאמת פונקציית העלות, אותו אלגוריתם יכול למזער את זמן הנסיעה, מרחק, צריכת דלק, או אפילו עלויות להורדת.
- (ב) [ה]:0] עובדים עם משקל לא שלילי: מאחר שזמני התנועה הם תמיד חיוביים, האלגוריתם הוא החל ישירות.
- (FLT:0)ParallizablityFLT:1 ; אלגוריתם של דייקסטרה ניתן מקבילים באמצעות טכניקות כמו למידה או הרחבה רב-מקור עבודה, המאפשר חישוב מהיר יותר על שרתים רב-core.
בפועל, היתרונות האלה מובילים לצמצום זמן הנסיעה, צריכת דלק נמוכה יותר, ושיפור שביעות רצון של משתמשים.מחקר של אוניברסיטת טקסס באוסטין מצא כי באמצעות אלגוריתמים מתקדמים לחסוך עד 20% בזמן הנסיעה באזורים עירוניים מחוסנים.
אתגרים ומגבלות
רשתות דינמיות וגדולות
מערכות תנועה בעולם האמיתי מתמודדות עם קשיים ייחודיים שהאלגוריתם הבסיסי אינו מתייחס:
- (FLT:0) תנאי שינוי בחוכמה: פקקים יכולים להיווצר ולהתמוסס בתוך דקות.תוואי שנקבע בתחילת המסע עשוי להפוך למיילדות באמצע הנסיעה.
- (הופנה מהדף OpenStreetMap מכיל מעל 9 מיליארד צות ברחבי העולם) הפעלת Dijkstra בסולם יבשתי ללא אופטימיזציה היא מאוד גדולה (למשל, OpenStreetMap מכילה מעל 9 מיליארד צומת בקנה מידה יבשתי ללא אופטימיזציה היא אסרטיבית.
- (FLT:0) זמני נסיעה אל-צ'ימארט (FLT:1: צוק במשקל) אינם קבועים; הם עוקבים אחר התפלגות ההסתברות.הנתיב הקצר ביותר עם זמן נסיעה צפוי עשוי להיות שונה מהנתיב הממזער את העיכוב הגרוע ביותר.
- (FLT:0) רגישות תחת עומס FLT:1: מיליוני משתמשים בו זמנית המבקשים מסלולים דורשים ארכיטקטורות מחשוב מבוזרות.ענן מבוסס שירותים חלוקת גרף הכביש ולהשתמש במקרים של Dijkstra מאוזנת, אך הכדאיות והתיאום נשארים אתגרים.
מידע מוגבל
האלגוריתם של דייקסטרה רואה רק את המשקל של הגרף; הוא אינו משלב מידע קונטקסטואלי רחב יותר כגון:
- תחזית התנועה העתידית (משקל תלוי בזמן).
- העדפות המשתמש (כבישים ריקים, מעדיפים מסלולים נופיים).
- אופטימיזציה רב-אובייקטיבי (דלק לעומת הזמן לעומת המרחק).
הרחבה כמו ההרחבה:0Time-Dependent DijkstrastraFLT:1 מטפל זמני נסיעות שונים עם זמן היציאה, אך הם מציגים מורכבות נוספת במודל הנתונים והיישום האלגוריתמי.
כיוונים עתידיים ושיפורים
אלגוריתמים היברידיים
רוב מערכות הניווט הייצור אינן מסתמכות רק על דייקסטרה טהורה במקום זאת, הן משלבות אותו עם:
- (FLT:0) חיפושים: שימוש בירוי (לעתים קרובות מרחק גיאוגרפי) כדי להנחות את החיפוש לקראת היעד, להפחית באופן דרסטי את מספר הצמתים שביקרו ב-Google Maps נחשב נרחב לשימוש A * עם נתוני תנועה.
- (ב) ⁇ :0) ⁇ ⁇ : ⁇ 2 חיפושים במקביל החל מהתחל והן מהמרכז, מפגש באמצע.זה מקטין את מרחב החיפוש והוא יעיל במיוחד ברשתות גדולות.
- (FLT:0)Contraction HierarchiesFLT:1: עיבוד הגרף על ידי הסרת צמתים נמוכים והוספת קצוות קיצורי דרך, המאפשרים שאילתות כמעט בלתי מזוינת אפילו על נתונים בגודל יבשת.
אינטגרציה למידת מכונות
יישומים מודרניים מאמנים רשתות עצביות לחזות תנאים עתידיים של תנועה המבוססת על דפוסים היסטוריים, תחזיות מזג אוויר, ולוח זמנים אירועים. תחזיות אלה מוזנים לאחר מכן כמשקל קצה לאלגוריתם הפתרמיסטי הקצר ביותר.חלק מהמחקר חוקר את FLT:0 למידה-to- PathmentFLT:1 ישירות, אבל האלגוריתם של דייקסטרה נשאר תקן הייצור, כי הוא מבטיח ופירוש של מודלים טהורים של למידה.
צוק והתאמה בזמן אמת
בעוד מכשירים ניידים הופכים חזקים יותר, כמה חישובים מתפרסמים מבוצעים יותר ויותר על-ידי שימוש עותקים מקומיים של גרף הכביש.זה מקטין את הגמישות והתלויות על קישוריות בענן.Apple Maps, למשל, מורידים נתונים גרף אזורי ומריצים את Dijkstra גרסאות מקומיות באופן מקומי בעוד synSyncizing עדכוני תנועה בזמן.
Probabilistic ו Robust רוסטינג
חוקרים מפתחים אלגוריתמים המותאמים לאמינות ולא רק זמן נסיעה צפוי.גישות אלה להקצות התפלגות הסתברות לכל משקל קצה ולמצוא נתיב כי, לדוגמה, יש הסתברות גבוהה להגיע בתוך חלון זמן נתון. בעוד בעיות כאלה הן NP-Hard בכלל, תחזיות באמצעות שילובים של Dijkstra ו- Monte קרלו שיטות מתעוררות.
מסקנה
האלגוריתם של דייקסטרה נשאר סלע של ניווט בזמן אמת, מתן שיטה אופטימלית עבור מסלולי מחשוב קצרים ביותר בגרפים במשקל.פשטות, יעילותו וגמישות לאפשר לו להיות מותאם לתנאים דינמיים באמצעות חישוב חוזר והנדסת נתונים זהירה. בעוד ששכבות מערכות מודרניות על הירריסטים, עיבוד מוקדם, ולמידה, הרעיון הליבה של Deweed בשנת 1956 עדיין מניע מיליוני אנשים בכל יום, כמו גם שיטות ניתוח מתוחכמות יותר, וצפויות של אלגוריתמים, ימשיכו להיות יותר ויותר, והופכים לאלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים, והופכים לחיזוי, והופכים לאלגוריתמים, והופכים לאלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים, והופכים לחיזוי יותר ויותר, והופכים לאלגוריתמים של אלגוריתמים מתקדמים יותר ויותר, והופכים לאלגוריתמים של אלגוריתמים, והופכים לאלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים של אלגוריתמים, ומכשירים, והופכים ל
לקריאה נוספת על אלגוריתמים של גרפים ויישומים שלהם, להתייעץ עם 0Wikipedia של Dijkstra של Algorithm כניסהalFLT:1, וכדי לצלול עמוק לתוך רשת דרכים מעשית עיבוד, ראה את ה-FLT:2Contraction Hierarchies מחקר FLT 3: על ידי Microsoft Research.