Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Algorytm]A* Algorytm
daniel1302
post
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Witam, prosze o ocene algorytmu pod wszelkimi punktami.
Narazie jest to wersja testowa. Sam algorytm działa wg. mnie nieźle, jednak muszę ujednolicić system przestrzeni.
Krótka instrukcja:
Żółte pola: Puste
Czerwone: Mur
Niebieskie: Alternatywny wątek poszukiwań
Zielone: Możliwe do przeszukania dla odpowiedniego wątku.
Fioletowe: Wygenerowana ścieżka.


Prezentacja: http://damnedland.pl/astar/class.php

Kody(użycia i algorytmu)
http://damnedland.pl/explorer/index.php?dir=Algorytmy
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
daniel1302
post
Post #2





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Modyfikacje mapy mogę wyłączyć.
  1. $astar -> enableAnimations(0);



Scieżke też zwraca, lecz tutaj jej nie potrzebuje. Ścieżka zwracana jest w formie tablicy.
możemy to sprawdzić np
  1. $route = $astar -> getRoute();
  2. print_r($route);

Algorytm Dikstra rozważałem lecz on przeszukuje większy obszar co jest automatycznie wolniejsze(I wykorzystuje się go gdy nie znamy położenia celu, wtedy np zbieracz może przeszukać mapę żeby zebrać surowiec).

A tutaj potrzebuje wyszukać drogę(tylko 1 postać sięporusza na mapie 2d).

Może to nie ja wymyśliłem algorytm, ale nieźle musiałem się nagłowić aby on działał. Jest to narazie wersja testowa, cały czas go dopracowuje, bo chce go przepisać do JS.
Podczas pisania nie spojżałem na inny kod, korzystałem głównie z: http://en.wikipedia.org/wiki/A*_search_algorithm

Co do tych wyjątkow to się zastanowie bo zawsze zwracałem false w przypadku niepowodzenia, ale wyjątki mogę zastosować.

A co do Przestrzeni to właśnie jestem w trakcie pisania klasy, w ten sposób łatwo mogę zmienić sposób przekazywania mapy do algorytmu.

Crozin, być może, że kod przepiszę(pozmieniam) na nowo, żeby go ujednolicić, ale od czegoś trzeba zacząć. I właśnie dlatego umieściłem go tutaj, żebyście mi pomogli i doradzili.
Crozin możesz mnie nakierować na jakieś informacje dokładniejsze o tym:
Cytat
2. Sam graf i jego wierzchołki powinny być raczej reprezentowane przez osobne obiekty - uprościłoby to i podniosło czytelność kodu.


Ten post edytował daniel1302 24.12.2011, 16:47:28
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 13:55