Tietojenkäsittelytieteiden kandiohjelma
Ohjelma toteutetaan Pythonilla, mutta osaan myös Javaa. Dokumentaatio ja muuttujan nimeäminen tehdään suomeksi.
Sovelluksessa käytetään eri pituisia Markovin ketjuja pelaajan syötteen ennustamiseen 1.
Sovelluksessa käytetään ainakin seuraavia tietorakenteita:
- taulukkoa/listaa
- tekoälyjen muistaminen
- jonoa
- tehokkaasti aiemman
$n$ -askeleen muistaminen
- tehokkaasti aiemman
- sanakirjaa
- tekoälyjen suoritukseen perustuvien pisteiden säilyttäminen
- eri syötteiden frekvenssien muistaminen
- Markovin ketjussa eri tapauksien todennäköisyyksien muistaminen
- laskurit eri syötteiden määrälle
Ideana on toteuttaa komentoriviohjelma, jolla voidaan pelata kivi-sakset-paperia tietokonetta vastaan tai antaa tekoälyn pelata itseään vastaan ja tutkia mitä tapahtuu.
Ohjelma ottaa syötteeksi merkin k
(kivi), s
(sakset) tai p
(paperi).
Eri vaiheet:
-
$n$ -aikaisemman vaiheen muistaminen eli jonon 1. alkion poistaminen ja alkion lisääminen perään,$O(1)$ . -
$n$ -aikaisemman askeletta vastaavan tapauksen laskureiden ja todennäköisyyksien päivittäminen sanakirjassa, noin$O(1)$
Näin ollen aikavaativuus on
Lisäksi muistetaan todennäköisyyksiä eri
Käydään joka kierroksen alussa läpi kaikki tekoälyt ja valitaan se, jolla on parhaat pisteet.
Tämä onnistuu ajassa
Lisäksi voidaan arvioida jokaisen tekoälyn tilavaativuutta ylöspäin tilavaativuuteen
- Aiheideoissa mainitut Lisko ja Spock mukaan kivi-sakset-paperi-peliin. Jos tekoälyt ja varsinainen peli toteutetaan toisistaan riippumattomasti (eli tekoäly ottaa vain pelaajan syöte sekä pelin tulos ja peliluokka laskee kumpi voittaa), niin tämän pitäisi onnistua helposti.
- Muita tapoja ennustamiseen, esimerkiksi voidaan kokeilla sovittaa tulokset diskreetteihin jakaumiin tai muistetaan eri syötteiden suhteelliset frekvenssit aiemmilla
$n$ -askeleella.
Footnotes
-
Wang, L., Huang, W., Li, Y. et al. Multi-AI competing and winning against humans in iterated Rock-Paper-Scissors game. Sci Rep 10, 13873 (2020). https://doi.org/10.1038/s41598-020-70544-7 ↩