Najbardziej
interesujące wyniki jakie może przedstawić tego typu algorytm to to czy
jest
w stanie wygrać, jeśli tak po ilu ruchach oraz jaki czas zajmuje mu
wybór ruchu.
Sposób pomiaru czasu:
Podczas pojedynczej gry mierzyłem czas każdego wykonanego ruchu przez
algorytm i na końcu gry obliczałem średnią arytmetyczną, uzyskałem w
ten sposób średni czas działania algorytmu przy wykonaniu pojedyńczego
ruchu. Wyniki umieszczam w poniższej tabeli.
ilość faz
Max+Min
|
czas
[s]
|
1
|
0
|
2
|
0
|
3
|
0,015
|
4
|
0,125
|
5
|
0,965
|
6
|
6,422
|
7
|
57,531
|
Z przedstawionych w tabeli wyników widać, że czas trwania obliczeń dla
pojedyńczego posunięcia gwałtownie wzrasta po przekroczeniu głębokości
drzewa 5, jeszcze dla głębokości 6 można z programem grać i świetnie
się bawić, jeśli głębokość zwiększymy do 7 zmuszeni jesteśmy do
długiego oczekiwania na ruch komputera co powoduje, że gra staje się
nudna i uciążliwa.
Jeśli chodzi o skuteczność wykonywanych ruchów przez algorytm testy
przeprowadziłem dla głębokości 4, 5, 6 i 7, ponieważ dla niższych
głębokości algorytm jest mało skuteczny i mógłby wygrać tylko graczem,
który rozegrał kilka partii w życiu, natomiast dla głębokości większej
od 7 na przeszkodzie stoi czas obliczeń prowadzonych przez algorytm.
Wraz ze wzrostem głębokości drzewa algorytm wykonuje coraz lepsze
posunięcia i po osiągnięciu głębokości 5 jego ruchy stają sie całkiem
sensowne i radzi sobie całkiem nieźle. Dla głębokości 6 aby wygrać z
algorytmem należy już więcej pogłówkować i dla tej głębokości algorytm
potrafi wygrać z graczem który popełni błąd lub obierze kiepską
taktykę. Niestety jeśli porównać mój algorytm z innymi grami to wypada
on bardzo słabo, spowodowane to głównie jest głębokością drzewa.
Wnioski
Głównym
wnioskiem do tego projektu jest fakt o coraz lepszej grze komputera
przy zwiększającej się ilości możliwych do przewidzenia ruchów oraz, że
wraz ze wzrostem przewidywanych ruchów drastycznie wzrasta czas
obliczeń. Do uzyskania "wirtualnego gracza", który będzie grał na
wysokim poziomie czysty algorytm MinMax nie wystarcza, należy
zastosować bardziej efektywne algorytmy, które zostały opisane w pracy
([1]).