Witam wszystkich.
Jakieś dwadzieścia lat temu odkryłem nowy algorytm planowania oparty na tzw. zmiennych ukrytych. Pięć lat temu napisałem pierwszą implementację - język Perkun (www.perkun.org). Niedawno napisałem nowy, trochę lepszy język o nazwie Svarog. Bardzo chciałbym porozmawiać o tym algorytmie. Nie mam z kim. Próbowałem już pisać o Perkunie na forum "Oceny i recenzje", ale bez większego odzewu.
Proponuję ściągnąć i zainstalować sobie Svaroga - https://www.perkun.org/resources/targz/svarog-0.0.1.tar.gz. Następnie należy wejść do katalogu examples i wstukać np. make test1. Działa też make test2 i make test3. Wszystkie one wykorzystują specyfikację Svaroga o nazwie example1_dorban.svarog. Różnią się tylko danymi wysyłanymi na wejście. Te dane np. dla testu 1 opowiadają taką historię:
Jest sobie bohater Dorban, są trzy miasta (Wyzima, Shadizar i Novigrad). W jednym z tych miast jest wampir. Również w jednym z miast jest drugi bohater Pregor, który może pomóc Dorbanowi pokonać wampira. W teście 1 Dorban od razu spotyka wampira w Wyzimie, ale nie atakuje go, idzie do Novigradu. Tam nikogo nie ma, więc Dorban spodziewa się, że Pregor musi być w Shadizarze. Idzie tam, prosi go o pomoc i następnie obaj idą do Wyzimy (tam gdzie jest wampir). Atakują wampira, z sukcesem. Atakują drugi raz - tym razem przegrywają i Pregor się odłącza. W związku z tym Dorban ponownie prosi go o pomoc. Koniec historii.
Najważniejsze jest to, że Svarog korzysta ze zmiennych ukrytych. W danym przykładzie są dwie (where_is_vampire i where_is_pregor). Odkryłem formułę w jaki sposób interpretować daną obserwację, tj. jak konstruować tzw. belief (rozkład prawdopodobieństwa nad zbiorem możliwych wartości zmiennych ukrytych). Zasadnicza cecha mojego algorytmu to to, że konstruując drzewo gry wykorzystuje tę formułę, tj. wyobraża sobie "teraz wierzę w X1", "pójdę do Novigradu", "zobaczę tam wampira/Pregora bądź nie". Zależnie od obserwacji zinterpretuję ją tak a tak. Wtedy będę wierzył w X2.
Postaram się porządnie matematycznie opisać sam algorytm, już zresztą zacząłem. Różni się od minimaxu tym, że jest tylko jeden agent (nie dwóch), że świat jest stochastyczny i że niektóre zmienne nie są obserwowalne. To tzw. hidden variables (zmienne ukryte).