Stap-voor-stap handleiding voor het implementeren van een* Zoekalgoritme met voorbeeldberekeningen

Het A* zoekalgoritme is een populaire pathfinding en grafiek traversal techniek die wordt gebruikt in verschillende toepassingen zoals robotica, spelontwikkeling en netwerkrouting. Het combineert de kenmerken van uniforme-cost search en hebberig best-first zoeken om efficiënt het kortste pad te vinden van een startknooppunt naar een doelknooppunt. Deze gids biedt een stap-voor-stap proces om het A*-algoritme te implementeren met voorbeeldberekeningen om elke fase te illustreren.

Begrijpen van het A* Algoritme

Het A*-algoritme gebruikt een kostenfunctie, f(n) = g(n) + h(n), waarbij:

Het algoritme onderzoekt nodes met de laagste f(n) waarde, balanceren van werkelijke en geschatte kosten om het optimale pad efficiënt te vinden.

Stapsgewijze uitvoering

Volg deze stappen om het A*-algoritme te implementeren:

1. Initialiseer de open en gesloten lijsten

De open lijst bevat knooppunten die moeten worden geëvalueerd, te beginnen met de eerste knoop. De gesloten lijst bevat al geëvalueerde knooppunten.

2. Selecteer de knooppunt met de laagste f(n)

Verwijder dit knooppunt uit de open lijst en voeg het toe aan de gesloten lijst.

3. Genereren van naburige knooppunten

Bereken g(n) en h(n) voor elke buurman. Als een buurman niet in de open lijst staat of een lagere g(n heeft, dan worden de waarden bijgewerkt en wordt de ouder ingesteld op het huidige knooppunt.

4. Herhaal tot het doel bereikt is

Ga door tot de doelnode is toegevoegd aan de gesloten lijst, wat aangeeft dat het kortste pad is gevonden.

Voorbeeldberekeningen

Beschouw een eenvoudig raster met startknooppunt A en doelknooppunt G. De heuristische h(n) is de rechte lijnafstand. De eerste berekeningen zijn als volgt:

Beginnend bij knooppunt A, g(A) = 0, h(A) = 4. De f(A) = 4. De naburige knooppunten B en C worden geëvalueerd:

Voor knooppunt B: g(B) = g(A) + kosten(A, B) = 0 + 1 = 1, h(B) = 3, f(B) = 4.

Voor knooppunt C: g(C) = 1, h(C) = 2, f(C) = 3. Knooppunt C heeft de laagste f(n), dus wordt het volgende geselecteerd.

Dit proces gaat door met het bijwerken van g, h en f waarden, totdat het doelpunt G wordt bereikt met het kortste pad geïdentificeerd.