TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
Algorytmy grające w warcaby - gdzie szukać, jaką taktyke obrać? , zozol 3/10/04 14:53 Mam do napisania programik grający w warcaby i zastanawiam sie jaka powinna byc zasada dzialania algorytmu aby po pierwsze byl skuteczny, a po drugie dzialal w miare szybko. (przeszukiwanie calej przestrzeni rozwiazan jest praktycznie niemozliwe, wiec odpada)
Jak sie do tego zabrac i gdzie ewentualnie szukac informacji i sposobow rozwiazywnia takich problemow?- s.w. , atay 3/10/04 14:56
tez jestem ciekaw :)_- Atay -_ - A standardowe podejście? , pachura 3/10/04 15:09
Przeszukujesz całą przestrzeń rozwiązań, ale do pewnej głębokości - tzn. np. 5 ruchów w przód. Oceniasz która z wynikowych sytuacji będzie dla Ciebie najlepsza (lub lepiej - najgorsza dla przeciwnika) i tą drogę wybierasz. Dodatkowo, jeśli dane odgałęzienie wygląda już bardzo źle (nie może być lepsze niż rozwiązanie znalezione do tej pory), to nie zagłębiasz się w nie.
Podstawą jest też opracowanie sensownej struktury danych, która umożliwi szybkie operacje na pionkach. Żebyś np. nie musiał za każdym razem przeglądać całej szachownicy żeby znaleźć swoje pionki. Etc. etc. ...
Oczywiście można - jak w szachach - stworzyć bazę końcówek - pozycji dla których istnieje pewne zwycięstwo/remis - i ją wykorzystywać.- A nie ma czegoś "sprytniejszego" ? , zozol 3/10/04 18:03
Wolałbym coś w stylu algorytmu genetycznego, sieci neuronowej itp. - generalnie coś, co możnaby wyszkolić wcześniej, a potem tylko zastosować do wybrania kolejnego ruchu.
Tylko czy takie algorytmy można tu w ogóle wykorzystać?- Czemu nie... ale... , pachura 3/10/04 18:34
To co Ci skrótowo opisałem to algorytm minmax z obcinaniem alfa-beta. Jest prosty i zrozumiały, można łatwo dokładać do niego różne heurystyczne ulepszacze jak np. bazy końcówek partii...
Oczywiście nikt nie broni Tobie użyć innego metaalgorytmu. Tyle że 95% programów szachowych (więc pewnie warcabowych też) stosuje takie właśnie, pół-"czołgowe" przeszukiwanie przestrzeni rozwiązań.
W przypadku algorytmu genetycznego musiałbyś umieć zapisać reguły wykonywania ruchów w postaci genotypu + zaimplementować jego mutacje i krzyżowanie, co wydaje się na pierwszy rzut oka trudne. W przypadku sieci neuronowej, wejściem byłaby sytuacja na planszy, wyjściem - ruch... ale Ty musiałbyś wcześniej przygotować w miarę dużą treningową bazę optymalnych ruchów dla danych sytuacji na planszy, co znów wymaga użycia standardowego algorytmu ;)
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|