Οι αλγόριθμοι A* και Dijkstra είναι θεμελιώδεις στην αναζήτηση της διαδρομής και διατομή. Χρησιμοποιούνται ευρέως σε συστήματα πλοήγησης, ⁇ μποτική και δρομολόγηση δικτύου. Η κατανόηση των μαθηματικών τους θεμελίων βοηθά στη βελτιστοποίηση της απόδοσης και της εφαρμογής τους.

Αντιπροσωπεία γραφήματος

Και οι δύο αλγόριθμοι λειτουργούν σε γραφήματα, οι οποίοι αποτελούνται από κόμβους (πηγές) και ακμές. Οι άκρες μπορεί να έχουν βάρη που αντιπροσωπεύουν το κόστος, τις αποστάσεις, ή και τους χρόνους. Το γράφημα μπορεί να κατευθυνθεί ή να μην κατευθυνθεί, και τα βάρη είναι συνήθως μη αρνητικά.

Συναρτήσεις κόστους και ηγετικές λειτουργίες

Ο αλγόριθμος της Dijkstra χρησιμοποιεί το σωρευτικό κόστος από τον κόμβο έναρξης, ενώ η A* προσθέτει μια ευνοϊκότερη εκτίμηση του εναπομένοντος κόστους στον στόχο. Η εφορευτική πρέπει να είναι αποδεκτή, πράγμα που σημαίνει ότι ποτέ δεν υπερεκτιμά το πραγματικό κόστος.

Μαθηματική διατύπωση

Ας G = (V, E) είναι ένα γράφημα με κορυφές V και άκρες Ε. Κάθε άκρη (u, v) έχει ένα βάρος w(u, v). Ο στόχος είναι να βρείτε το συντομότερο μονοπάτι από τους κόμβους έναρξης να τέρμα κόμβο t.

Ο αλγόριθμος της Dijkstra ενημερώνει την απόσταση d(v) για κάθε κορυφή v, που έχει αρχειοποιηθεί ως d(s) = 0 και d(v) = ⁇ για v

A* το τροποποιεί αυτό με την ενσωμάτωση ενός h(v) ευερέθιστος εκτιμώντας το κόστος από v έως t. Η συνάρτηση προτεραιότητας γίνεται f(v) = d(v) + h(v). Ο αλγόριθμος επεκτείνει κόμβους με βάση το χαμηλότερο f(v).

Απόδοση του αλγόριθμου

Ο αλγόριθμος Dijkstra έχει μια χρονική πολυπλοκότητα του O(

  • Γράφημα με μη αρνητικά βάρη
  • Επιτρεπόμενος ηρωισμός για A*
  • Σειρά προτεραιότητας για την επιλογή κόμβου
  • Χαλαρώστε τις άκρες του κόστους ενημέρωσης