Algoritmii A* și Dijkstra

Reprezentarea grafică

Ambele algoritmi funcționează pe grafice, care constau din noduri (vertițe) și margini. Marginile pot avea greutăți reprezentând costuri, distanțe sau ori. Graficul poate fi direcționat sau nedirecționat, iar greutățile sunt de obicei non-negative.

Funcții de cost și de euristică

Nucleul acestor algoritmi implică calcularea costului pentru a ajunge la fiecare nod. Algoritmul Dijkstra

Formalizare matematică

Lăsați G = (V, E) să fie un grafic cu verticele V și marginile E. Fiecare margine (u, v) are o greutate w(u, v). Scopul este de a găsi cea mai scurtă cale de la nodul de pornire s la nodul de gol t.

Dijkstra

A* modifică acest lucru prin încorporarea unui h euristic (v) estimarea costului de la v la t. Funcția prioritară devine f(v) = d(v) + h(v). Algoritmul se extinde pe baza celor mai mici f(v).

Eficiența algelitismului

Eficienţa depinde de structurile de date utilizate. Algoritmul Dijkstra

  • Grafic cu greutăți non-negative
  • Euristic Admisibil pentru A*
  • Coadă prioritară pentru selectarea nodului
  • Relaxarea marginilor pentru actualizarea costurilor