Mam pomysł. Pamiętacie zapewne z matematyki zasadę indukcji. Musimy pewne twierdzenie T(n) udowodnić dla n=0, a następnie udowodnić tzw. krok indukcyjny: T(n)=>T(n+1). Otóż wymyśliłem algorytm, w którym mój Svarog odpowiada T(0). A dzisiaj przyszedł mi do głowy “krok indukcyjny”. Nowy algorytm. Całkowicie analityczny i niezwiązany z sieciami neuronowymi.
Svarog jest z natury trochę ogólniejszy, ale poniżej będę wykorzystywał tylko graczy z programu “Dorban” (moje demko dla Svaroga). Dokładnie – Dorbana i wampira (Pregora pominę). To demko ma to do siebie, że, przypomnę, Dorban szuka wampira (którego chce pokonać) oraz Pregora (który może Dorbanowi pomóc), ale a priori nie wie, czy Pregor żyje, czy nie. I jeśli się przekona, że Pregor nie żyje, to szuka wampira aby go zaatakować na własną rękę.
Krok n=0: dajemy Svarogowi model “fizyki” (jak działa świat) i mówimy co dany gracz (np. Dorban) lubi, a czego unika. Następnie robimy prekalkulację tzw. policy, czyli dla każdego stanu na wejściu Dorbana ORAZ dla każdego stanu jego umysłu liczymy (w.g. algorytmu Svaroga) najlepszą pierwszą akcję. Pierwszy krok jaki Dorban wykona. Ponieważ zbiór stanów umysłu jest zbiorem ciągłym trzeba go na przykład zdyskretyzować. Ale to jest teraz mniej ważne. Obliczamy tą policy dla k kroków do przodu (horyzont). Nazwijmy tą policy P(0).
Krok n=1: tym razem z punktu widzenia wampira. Wyposażamy wampira w w model “fizyki” (wampir może się poruszać, atakować Dorbana itp.) oraz model “semantyki języka” za pomocą którego wampir może zadawać Dorbanowi pytania i/lub udzielać mu informacji. Dodatkowo dajmy mu policy P(0) i informację co wampir lubi, a czego nie. I znowu z algorytmu Svaroga liczymy optymalne akcje (tym razem dla wampira) dla k krokow do przodu. Będą wśród nich akcje podejmowane w obecności Dorbana, tj. akcje, które nie mają fizycznych konsekwencji, ale mają za cel zmianę stanu umysłu (czyli zmianę “wiary”) Dorbana. Z algorytmu Svaroga wyniknie (mam taką nadzieję!), że wampirowi opłaca się np. twierdzić, że zabił Pregora. Bo jeżeli Dorban mu uwierzy, to zgodnie z jego policy – zaatakuje wampira sam. Robimy prekalkulację policy wampira (dla k kroków do przodu). I nazywamy tą policy P(1).
Krok n=2: znowu z punktu widzenia Dorbana. Znowuż dajemu Svarogowi model “fizyki” i model “semantyki języka”. Dodatkowo dajemu mu policy P(1) (jest to policy wampira) oraz informację, co Dorban lubi a czego nie. Dorban może więc nie tylko poruszać się, atakować wampira itp. ale może też (przy spotkaniu z wampirem) komunikować się z nim. Na przykład zadawać mu pytania, albo odpowiadać na pytania wampira. Z algorytmu Svaroga wyniknie, że i Dorban może kłamać wampirowi. Dokonujemy nowej prekalkulacji policy (dla Dorbana) i otrzymujemy P(2).
Mam nadzieję w ten sposób osiągnąć “grę”, w której policy np. Dorbana (dla dostatecznie wysokiej wartości n) zawiera sensowne (w.g. algorytmu Svaroga) zachowania, nawet skomplikowane wypowiedzi. Najważniejsze, że prekalkulacja policy, która pierwotnie służyła jedynie przyspieszeniu algorytmu Svaroga stanie się integralną częścią tego nowego algorytmu – algorytmu kłamcy. Marzy mi się, żeby np. wampir był w stanie nie tylko kłamać wprost (tak, by Dorban – jeśli mu uwierzy – grał w interesie wampira), ale i kłamać pośrednio – np. sugerując, że pewną wiedzą dysponuje lub nie (gdy w istocie jest odwrotnie), albo pisząc wiadomości przeznaczone dla Dorbana, w których np. podszywa się pod Pregora itp. Jeżeli mamy trzech i więcej graczy – wówczas jeden z nich może też wprowadzać w błąd drugiego po to, aby fałszywa wiadomość dotarła do trzeciego itd.
W tym algorytmie wszyscy wiedzą jak działa świat i co kto lubi, a kłamią wyłącznie na temat wartości zmiennych ukrytych. Ale można sobie wyobrazić i kłamstwa dotyczące samej fizyki gry lub semantyki języka, jak również kłamstwa dotyczące funkcji wypłaty (optymalizowanej przez algorytm Svaroga).
http://www.perkun.org
https://sourceforge.net/projects/dorban/