Algorytm a* (astar) w grze sliding puzzle.

0

Hejka
Postanowiłem zrobić grę sliding puzzle 3x3. Jak testuje główny algorytm a* (astar) to niby wszystko działa ale nie do końca.
Np dla: 7 3 2 5 0 1 8 6 4 wychodzi 22 ruchy (1 2 3 4 5 6 7 8 0) natomiast na githubie dla tego samego zestawu jest 20 ruchów.
Tu i tu jest użyta charakterystyka manhattan distance. Mam też charakterystkę hamming distance i dla tej wychodzi 20 ruchów. (dokładnie tyle samo i takich samych co na githubie). Czy ktoś spotkał się z takim problem i wie jak go rozwiązać ?
Pozdrawiam

0

A jak to implementujesz? problem może być równie dobrze w implementacji samego algorytmu, w kodzie.

7 3 2 5 0 1 8 6 4

A to nie powinno być 8 kafelków, skoro plansza 3x3, żeby jeden kafelek był pusty? Chyba że to inny rodzaj układanki niż ten, o którym myślę.
no i ten zapis znaczy, że plansza wygląda tak:

7 3 2
5 0 1
8 6 4

?
Chyba, że ej, zero jest tam, gdzie jest puste? No tak, to by miało sens. Trzeba jakoś zapisać pusty element też.

0
LukeJL napisał(a):

A jak to implementujesz? problem może być równie dobrze w implementacji samego algorytmu, w kodzie.

7 3 2 5 0 1 8 6 4

A to nie powinno być 8 kafelków, skoro plansza 3x3, żeby jeden kafelek był pusty? Chyba że to inny rodzaj układanki niż ten, o którym myślę.
no i ten zapis znaczy, że plansza wygląda tak:

7 3 2
5 0 1
8 6 4

?

przyklad.png

  1. Manhattan Distance
  2. Hamming distance
  3. Pusty kafelek to zero :)
  4. Link do githuba link
  5. Ruchy u - up, d - down, l - left, r - right
0

Miałem mały błąd już poprawiłem i działa :).

1 użytkowników online, w tym zalogowanych: 0, gości: 1