Suomalainen YouTube-persoona Joona Leppälä pelasi ZoneVD-kanavallaan “Typerää numerohaastetta”, nyt jo kolmella videolla (1, 2, 3). Peli on käytännössä eräänlainen pasianssi-variaatio ilman pelikortteja.
Pelaajan tehtävä on täyttää 10-sijainen numerolista suuruusjärjestyksessä satunnaisilla kokonaisluvuilla väliltä 1-1000. Mutta satunnaisluvut paljastuvat pelaajalle yksitellen. Jos numeroa ei voi sijoittaa suurusjärjestykseen vapaalle sijalle peli on hävitty – ja vastaavasti pelin voittaa sijoittamalla kaikki 10 numeroa suuruusjärjestykseen. Vaikka pelissä pyöritellään numeroita, ei sen pelaaminen vaadi erityisiä matemaattisia taitoja. Suuruusjärjestys on tavoitteena ymmärrettävä, ja pelissä pärjää hyvin intuitiollakin mitään laskelmia suorittamatta.
Ilmeiset jatkokysymykset ovat kuitenkin intuition ulottumattomissa: Kuinka todennäköistä pelin voittaminen on? Kuinka paljolti kyseessä on tuuripeli, vai voiko pelaaja strategiallaan vaikuttaa voittomahdollisuuteen? Jos strategialla on väliä, mikä on paras strategia? Miten käytetty numeroväli vaikuttaa voittotodennäköisyyteen, entä täytettävän listan pituus? Voimme vastata kaikkiin näihin kysymyksiin mallintamalla tämän pelin ja tutkimalla tätä simulaatiota. Simuloituja pelejä on mahdollista ajaa miljoonittain. Tämä numeropeli onkin hyvä tapa avata matemaattisesta ongelmanratkaisua yleisemminkin. Lyhyesti prosessi on kolmivaiheinen:
Vertailtavat strategiatStrategioita kannattaa suunnitella useampi. Näin voimme arvioida strategian merkitystä pelin voittomahdollisuuksille: Onko väliä miten peliä pelaa? Lisäksi saamme luotettavamman arvion voiton todennäköisyydestä ylipäätään.
Seepra Kenties ilmeisin strategia on jakaa alue tasaväleihin: Sijalle yksi sijoitetaan luvut 1-100, sijalle kaksi luvut 101-200 ja niin edelleen. Uusi luku sijoitetaan aina omaan välikköönsä tai mahdollisimman lähelle sitä, sääntöjen rajoissa. ZoneVD:n Joona viittaa tähän lähestymiseen “balanced”-termillä, ja tunnistaa aivan oikein ettei se ole ihanteellinen voiton kannalta. Mittarimato Inhimillinen parannus tähän strategiaan on päivittää välejä pelin edetessä. Helppona esimerkkinä, jos ensimmäinen luku sijalla 1 sattuu olemaan 1, voimme jakaa jäljellä olevan lukuvälin 1-1000 edelleen jäljellä olevan 9 paikan kanssa, jolloin riville 2 asettuisivat luvut 1-111, seuraavalla 112-222 jne. Esimerkiksi, jos sattuisimme saamaan luvun 150, sitä ei kannata sijoittaa toiselle riville. Myös Joona tekee videollaan vastaavaa järkeilyä: Vaikka mitään tarkkoja laskutoimituksia ei tekisi, vastaavaan tulokseen voi päätyä ihan numeroja silmäilemällä. Tietokone Epäinhimillinen parannus on simuloida jokaista siirtoa varten joukko pelejä, ja valita todennäköisimmin voittoon johtava jatko. Aina kun rivistöön pitää lisätä uusi luku, tuotamme satunnaisesti 10 000 vaihtoehtoista tulevaisuutta pelille, ja valitsemme uudelle numerolle sijan, joka johtaa useimmiten voittoon. Tämä menetelmä on hyvin helppo toteuttaa ohjelmallisesti, vaikka laskenta-ajan mielessä epätehokas. Jänis Edellinen tietokone-strategia optimoi voiton todennäköisyyttä, mutta voimme vastaavasti myös optimoida pelin kestoa: Jänis-strategia pyrkii pysymään pelissä mahdollisimman pitkään – mikä kuulostaa samalta kuin voittoon tähtääminen, mutta johtaa eri tulokseen. Aina kun saamme uuden numeron sijoitettavaksi, pelaamme joukon pelejä kullakin mahdollisella sijalla ja valitsemme sijan, joka johtaa keskimäärin pisimpään peliin. Esimerkiksi tyhjään taulukkoon Jänis-strategia sijoittaa luvun 70 listan toiselle sijalle – kaikki muut strategiat valitsevat ensimmäisen! PelisimulaattoriKoska peli itsessään on tavattoman yksinkertainen, on myös sen mallintaminen helppoa. Vastaava laskennallinen arviointi kulkee tyypillisesti Monte Carlo -simulaation nimellä, ja on suosittu ratkaisu kun ongelma on liian monimutkainen analyyttisesti ratkaistavaksi.
Suunnittelemme simulaattorin niin, että se tukee eri strategioiden vertailua: samaan runkoon voi vaihtaa minkä vain edellä mainituista strategioista. Muutoksena Joonan käyttämiin sääntöihin me sallimme saman luvun listassa kahdesti. Tämä parantaa aavistuksen voiton todennäköisyyttä ja karsii pois “turhia” häviöitä: Pelaaja ei voi kuitenkaan mitenkään vaikuttaa kahden saman luvun saamiseen. Voimme tehostaa numeronmurskausta huomioimalla, ettei viimeiseen siirtoon liity koskaan mitään valintaa. Voimme siis simuloida pelin aina yhdeksänteen siirtoon asti ja arvioida sitten voiton todennäköisyyden vapaana olevasta numerovälistä. Käytännössä tämä sallii meidän vähentää simuloitujen pelien määrää.
Tuloksia ja vastauksiaSimulaation tuloksena saamme kullekin pelaajalle arvion voiton todennäköisyydesta ja pelin keskimääräisestä kestosta. Edelleen saamme laskettua todennäköisyydelle virhemarginaalin osittelemalla simulaation tuloksia.
Lisäksi voimme kellottaa kunkin strategian vaatiman laskenta-ajan. Laskennallisesti kevyempien strategioiden laskenta-ajan tarkka arviointi on vaikeaa, koska ne ovat jo niin nopeita. Erot järkevien strategioiden välillä ovat varsin pieniä. Simppeli seepra-strategia häviää vain karvan verran monimutkaisemmille lähestymistavoille. Mittarimadon ja tietokoneen väliset erot ovat virhemarginaalin sisällä, todennäköisimmin mittarimato on yhtä hyvä. Mitään korkeamman tason logiikkaa pelin pelaaminen hyvin ei siis vaadi. Voimme siis todeta, että peli on pitkälti tuuripeli, koska nokkelammat strategiat eivät oikeasti paranna juurikaan voiton todennäköisyyttä.
Todennäköisyyksien puolesta kymmenen sijan peli on ehkä juuri sopivan vaikea: Pelaaja pääsee usein kutkuttavan pitkälle pelissä, mutta voitto on tarpeeksi harvinainen tuntuakseen saavutukselta.
Miksi jänis-strategia pärjää niin huonosti?Poikkeus joukossa on jänis-strategia, joka selviytyy selvästi heikoiten. Kyseessä on kuitenkin ensisilmäyksellä ihan järkevä strategia: Voisi luulla että välttämällä aikaiset häviöt pääsee useammin loppupeliin, jolloin olisi todennäköisempää voittaa peli. Mutta tuloksien mukaan jänis onnistuu välttelemään häviötä vain hieman kauemmin kuin muut, ja maksaa voiton todennäköisyydessä tästä kovan hinnan.
Kuvaaja alla esittää todennäköisyyden pelin jatkumiselle kuhunkin siirtoon asti kahdella eri stategialla. Peliä ei voi koskaan hävitä ensimmäisellä siirrolla, joten 100% peleistä selviää siitä kierroksesta, mutta pelin edetessä selviytyjien osuus laskee. Jänis-strategia häviää siis muita harvemmin ennen siirtoa 7, mutta useammin sen jälkeen. Jos tähtää pelin voittoon, kannattaa siis ennemmin ottaa riskejä aiemmin.
Yleisemmin voimme huomata että noin joka kymmenes peli pääsee sijoittamaan kymmenettä numeroa ja noin 40% peleistä selviää seitsemänteen siirtoon asti. Miten sijoitettavien numeroiden määrä vaikuttaa?Kun Joona läpäisi pelin toisella videollaan aiheesta, hän päätti jatkaa pelaamista 15-numeroisella versiolla. Kuinka todennäköistä tämän voittaminen on, tai yleisemmin eri mittaisten pelien?
Listan pidentäminen vaikeuttaa peliä huomattavasti. Kun sijoitettavana on 15 numeroa, menee parhaallakin strategialla pelaten läpi enää noin 0.14% peleistä – eli todennäköisyys on noin 1:700. Vastaavasti 20 numeron versio on edelleen noin kertaluokkaa vaikeampi, voiton todennäköisyys on noin 1:10 000: Vain joka kymmenestuhannes peli menee läpi.
Miten sijoitettavien numeroiden yläraja vaikuttaa?Videon kommenteissa ehdotettiin versiota jossa sijoitettaisiin lukuja väliltä yhdestä sataan – tämä olisi ainakin helpommin ymmärrettävissä, jos isot luvut alkavat sekoittaa pään. Kyseessä on kuitenkin käytännössä sama peli. Olettaen että tasaluvut ovat sallittuja suuruusjärjestyksessä, lukujen ylärajan laskeminen helpottaa peliä hienoisesti. Voiton todennäköisyys välillä 1-100 on noin 2,1%, välillä 1-10 jo 4,8%
Jos pelaa Joonan alkuperäisillä säännöillä, joissa tasanumerot johtavat tappioon, ylärajan laskeminen puolestaan laskee voiton todennäköisyyttä: On luonnollisesti todennäköisempää saada sama luku kahdesti, jos vaihtoehtoja on vähemmän.
Vaikka yläraja olisi 1000, on kahden saman luvun ilmenemisen todennäköisyys 10 siirtoa kestävässä pelissä melkein 5%, yllättävän korkea! Tämä yllättävyys tunnetaan laajemmin syntymäpäiväongelmana. Todennäköisyys myös nousee nopsaan sijoitettavien lukujen määrän kasvaessa, eli tämä on 15 sijan pelissä vielä suurempi ongelma.
Kuinka optimaalisesti Joona pelaa?Hyvä tapa arvioida vielä tarkemmin onko kyseessä tuuripeli vai taitopeli on tutkia ZoneVD:n Joonan siirtoja. Arvioimalla joukon pelejä voimme saada lukuarvion Joonan “tarkkuudesta” suhteessa parhaaseen strategiaamme. Vastaavaa menetelmää käytetään esimerkiksi sakkipelien analyysiin.
Jos pelaaja valitsee aina simulaation tuottaman siirron, hänen tarkkuutensa on 100%. Muussa tapauksessa arvioimme vaihtoehtojen suhteellisia voittomahdollisuuksia: Jos optimaalisella siirrolla pelin voittaisi 2% kerroista ja valitulla vain 1%, on pelaajan tarkkuus 50%: Hän siis puolittaa voittomahdollisuutensa. Vastaavasti tarkkuus 0% tarkoittaa että pelaaja ei koskaan voita peliä. Kahdella ensimmäisellä videollaan Joona pelasi 10 numeron versiota noin 43 kertaa, ja sijoitti numeron noin 245 kertaa. Yritin parhaani mukaan kirjata kaikki pelit, mutta en aio tarkistaa lukuja – numeroiden kirjailu videolta on erityisen turruttavaa ja turhauttavaa. Simulaattorimme laskee Joonan peleistä yhteensä 36 virhettä – noin 15% siirroista siis simulaattorin mielestä vääriä. Melkein kaikki näistä ovat kuitenkin pielessä vain yhden sijan verran, jolloin vaikutus voittotodennäköisyyteen jää vähäiseksi.
Joonan siirtojen tarkkuus on läpi pelien keskimäärin 86%. Tämä on varsin hyvä suoritus, eikä strategian hiomisesta saisi siis merkittävää parannusta. Joonan voittotodennäköisyys olisi tästä arvioiden noin 1.68%, eli yksinkertaista seepra-strategiaa parempi – mikä on varsin järkeenkäypää. Tällä voittotodennäköisyydellä peliä täytyy pelata noin 40 kierrosta että todennäköisyys voittaa ainakin yhden kerran on yli 50% – ja tämä onkin aika hyvin linjassa kierroksella 43 saavutetun voiton kanssa! Tämä myös tukee havaintoa että kyseessä on tuuripeli – rupatteleva youtubettaja pärjää pelissä olennaisesti yhtä hyvin kuin ankarasti optimoiva laskenta-algoritmi. Voisiko pelistä tehdä taitopelin?Peli olisi parempi taitopeli jos saisimme eri strategioiden välisiä eroja suuremmiksi ja satunnaisuuden roolia pienemmäksi.
Yksi mahdollinen tapa olisi lisätä peliin elämä-systeemi: Pelin alussa on vaikka kolme elämää. Kun peli olisi muuten loppumassa, voisi yhden elämän kuluttamalla arpoa numeron uudestaan. Teoriassa viksumpien strategioiden pitäisi olla parempia lisäelämien käytössä, joten tämän pitäisi kasvattaa niiden kaulaa muihin. Samalla voisimme pidentää peliä vaikka 15 sijaan. Tämän lisääminen simulaattoriin on varsin helppoa. Nopea simulaatio kuitenkin osoittaa että taitovaatimusten lisääminen on varsin vaikeaa. Tietokonestrategia saavuttaa tässä versiossa noin 2,5% voittotodennäköisyyden, kun taas triviaali mittarimatomenetelmä voittaa 1,89% peleistä. Verrattuna kymmenen luvun peliin kaula on kasvanut, mutta ei merkittävästi: Mittarimadon tarkkuus oli alkuperäisessä versiossa 80%, tässä se olisi 75%. Kenties monimutkaisemmilla monimutkaistuksilla pelistä olisi mahdollista tehdä enemmän taitopeli, mutta silloin kyseessä olisi jo perustanlaatuisesti eri peli.
YhteenvetoEi ole itsestäänselvää että löytämämme strategiat ovat parhaita mahdollisia. Ne todennäköisesti saavuttavat parhaan voittotodennäköisyyden, mutta käytännössä ihmisillä on monimutkaisempia tavoitteita: Pelin pitäisi olla myös hauskaa ja riittävän nopeaa.
Simulaatio tarjoaa kuitenkin käytännöllisiä arvioita voiton todennäköisyydestä ja siihen vaikuttavista tekijöistä. Tulokset vaikuttavat täsmäävän myös toisen YouTube-kommentoijan ja redditissä 20 luvun versiolle tehtyihin simulaatioihin. Kiitos ZoneVD:lle pelin esittelystä, tämän pikku pelin selvittely oli oikein hauska harjoitus! |