Zaktualizuj 'route-planning.md'

This commit is contained in:
Aleksandra Jonas 2020-04-28 23:26:08 +00:00
parent 4a18cc04b9
commit b98debe89c

View File

@ -21,19 +21,13 @@ Drugim zadaniem dotyczącym projektu jest zastosowanie strategii przeszukiwania
``` ```
def hscore(self, s, f): def hscore(self, s, f):
if f > s: a_h = m.fabs(s - f) // 5
a_h = (f - s) // 5 b_h = m.fabs(f % 5 - s % 5)
else: return 2 * m.sqrt(a_h ** 2 + b_h ** 2)
a_h = (s - f) // 5
if f % 5 >= s % 5:
b_h = f % 5 - s % 5
else:
b_h = s % 5 - f % 5 + 1
return 2 * m.sqrt(a_h * 2 + b_h * 2)
``` ```
Wpierw obliczamy wysokość trójkąta, jaki tworzą obecne i końcowe pole, w celu wyznaczenia przeciwprostokątnej — odległość między s i f. Wpierw obliczamy przyprostokątne trójkąta, jaki tworzą obecne i końcowe pole, w celu wyznaczenia przeciwprostokątnej — odległość między s i f.
## Funkcja następnika ## Funkcja następnika
@ -89,7 +83,7 @@ Jeżeli to pole odpowiada temu, do którego chcemy dojść — wywołujemy funkc
``` ```
Usuwamy x z open_set i wrzucamy do closed_set, aby upewnić się, że nie będziemy go ponownie sprawdzać. Usuwamy x z open_set i wrzucamy do closed_set
``` ```
@ -106,16 +100,7 @@ Następnie sprawdzamy sąsiadów:
``` ```
To tutaj chcieliśmy mieć pewność, że nie trafimy ponownie na x. Chcemy również sprawdzić, czy jeżeli y jest już w open_set, to czy przejście z poprzednika przez x do y nie okaże się krótszym przejściem niż z poprzednika do y.
```
if y in closed_set:
continue
```
Chcemy również sprawdzić, czy jeżeli y jest już w open_set, to nie istnieje krótsze przejście z pola startowego przez inne pole na y, niż bezpośrednio na pole y.
``` ```
@ -128,7 +113,7 @@ Chcemy również sprawdzić, czy jeżeli y jest już w open_set, to nie istnieje
``` ```
Wyliczamy g i f — przewidywany dystans od startu do celu, dla y. Obliczamy g — koszt przejścia od pola początkowego do pola końcowego, zgodnie ze ścieżką wygenerowaną, aby się tam dostać, oraz f — sumę g i h.
``` ```
@ -140,6 +125,8 @@ Wyliczamy g i f — przewidywany dystans od startu do celu, dla y.
## Tworzenie ścieżki ## Tworzenie ścieżki
Przechodzimy po tablicy poprzedników, aż dojdziemy do początku — pola, które nie ma poprzednika. Przechodzimy po tablicy poprzedników, aż dojdziemy do początku — pola, które nie ma poprzednika.