Algoritmeja A* ja Dijkstra. Ne ovat keskeisiä patruunoiden löytämisessä ja graafinen traversal. Niitä käytetään laajalti navigointijärjestelmissä, robotiikka, ja verkkoreititys. Ymmärtäminen niiden matemaattiset säätiöt auttaa optimoimaan niiden suorituskykyä ja sovellettavuutta.

Graafin esitys

Molemmat algoritmit toimivat kaavioissa, jotka koostuvat solmuista (vertices) ja reunoista. Edget voivat olla painoja, jotka edustavat kustannuksia, etäisyyksiä tai aikoja. Kaavio voidaan ohjata tai ohjata, ja painot ovat yleensä ei-negatiivisia.

Kustannustoiminnot ja heuristiikka

Näiden algoritmien ydin on laskea kustannukset saavuttaa kunkin solmun. Dijkstra. Algoritmi käyttää kumulatiivisia kustannuksia alusta solmu, kun taas A* lisää heuristinen arvio jäljellä olevan kustannusten tavoite. Heuristismi on hyväksyttävä, mikä tarkoittaa koskaan yliarvioi todellisia kustannuksia.

Matemaattinen muoto

Anna G = (V, E) olla kaavio, jossa vertices V ja reunat E. Jokainen reuna (u, v) on paino w(u, v). Tavoitteena on löytää lyhin polku alusta solmu s maalin solmu.

Dijkstra.s algoritmi päivittää etäisyyden d(v) kunkin huippupiste v, initialisoitu d(s) = 0 ja d(v) = ∞ varten v . s. Se iteratiivisesti valitsee huippupiste pienin d(v), sitten rentouttaa sen naapurin reunat.

A* muuttaa tätä sisällyttämällä heuristinen h(v) arvioida kustannuksia v t. Prioriteettitoiminto tulee f(v) = d(v) + h(v). Algoritmi laajentaa solmuja perustuu alhaisin f(v).

Algoritmin tehokkuus

Tehokkuus riippuu datarakenteista. Dijkstra.s algoritmi on aika monimutkainen O(.E. + .V. ... log ...V..........................................................................................................................................................................................................................

  • Kaavio, jossa ei-negatiiviset painot
  • Sallittava heuristinen A:lle
  • Solmun valinta
  • Rentoutuminen ja kustannusten päivittäminen