Kirjoittaja: Antti Laaksonen
Kirjoitettu: 15.05.2007 – 15.05.2007
Tagit: matematiikka, ohjelmointitavat, koodi näytille, vinkki
Tunnettu todennäköisyyden ongelma kuuluu hieman mukaillen näin: Huoneessa on kolme ovea, joista yhden takana on kruunu ja kahden muun takana ei ole mitään. Saat avata vain yhden oven, ja jos oven takana on kruunu, saat pitää sen. Mutta juuri kun olet valinnut oven, avataan jokin toinen ovi, jonka takana ei ole kruunua. Lisäksi sinulle annetaan vielä mahdollisuus muuttaa valintaasi. Kannattaako tässä tilanteessa pysyä alkuperäisessä valinnassa vai siirtyä toisen avaamattoman oven luokse?
Tällaisen ongelman miettimisessä ovat tarpeen kynä ja paperi ja riittävästi aikaa - tai sopiva tietokoneohjelma. Asiaa on helppo tutkia tietokoneella arpomalla lukuisia kertoja kruunun sijainti ja aluksi valittu ovi. Näin pystytään selvittämään, miten mahdollinen oven vaihto vaikuttaa kruunun saamisen todennäköisyyteen. Käytännössä ohjelman tulokset alkavat lähestyä varsin nopeasti teoreettisia todennäköisyyksiä. Kun sitten oikeat tulokset ovat selvillä, asiasta on mukava väitellä muiden kanssa, kun tietää itse olevansa oikeassa.
Pienimmillään todennäköisyyksien laskemiseen riittää kymmenrivinen ohjelma, mutta tässä on hieman monipuolisempi ja havainnollisempi graafinen ohjelma. Ruutu on jaettu kolmeen huoneeseen, joissa kussakin tapahtuu samaan aikaan yksittäinen valintatilanne. Vasemmassa huoneessa ovea vaihdetaan aina, keskimmäisessä huoneessa ei koskaan ja oikeassa huoneessa menetellään satunnaisesti. Huoneiden yläpuolella näkyvät jatkuvasti muuttuvat tiedot, kuinka usein valinta osuu oikeaan kullakin tavalla.
Mikä on sitten oikea vastaus ongelmaan? Jos ovea ei vaihda, todennäköisyys saada kruunu on 1 / 3. Mutta jos oven vaihtaa, todennäköisyys onkin 2 / 3. Tämä aika yllättävä tulos on loppujen lopuksi helposti ymmärrettävissä. Jos oven vaihtaa, ainoa tilanne, jossa kruunu jää saamatta, on se, kun on alun perin valinnut oikean oven. Eli jos onnistuu aluksi valitsemaan "väärän" oven, kruunun saanti on varmaa, ja tämän todennäköisyys on 2 / 3.
Kolmen oven ongelmasta voi lukea lisää vaikkapa Wikipediasta:
http://en.wikipedia.org/wiki/Monty_Hall_problem
' Kolmen oven ongelma ' Antti Laaksonen, 2007 DIM ukot%(1200), ovi%(400), kruunu%(400) SCREEN 7, , 0, 1 CLS ' kolme ukkoa DRAW "c1bm5,1r7fdfgdf2d5hgfhbrp6,1blc1ld5" DRAW "l7ur6l2u4ld4l3u4lghegbrp6,1blc1u5ef2" DRAW "r7ebdp9,1buc1hbrp6,1blc1l7bdp6,1buc1" DRAW "hbdp6,1buc1uheuf2r5ebdp6,1bublp9,1" GET (0, 0)-(19, 19), ukot%(0) DRAW "c6bm4,7r8c0bm7,5r0bm10,5r0bm6,7fr3e" GET (0, 0)-(19, 19), ukot%(400) DRAW "bm11,7c6gl3hbdc0er3f" GET (0, 0)-(19, 19), ukot%(800) CLS ' ovi DRAW "c4bm2,1d17r15u17l15" DRAW "bm8,8erfg2bd2d0bd2p3,4" GET (0, 0)-(19, 19), ovi% CLS ' kruunu DRAW "c6bm3,6f2e2f2e2f2e2d9l12u8bf1p14,6" GET (0, 0)-(19, 19), kruunu% CLS ' erotusviivat LINE (102, 0)-(102, 200) LINE (213, 0)-(213, 200) DIM ukkox%(3), ukkoy%(3), ukkok%(3) DIM kruunut%(3), avatut%(3), mielet%(3) DIM maarat%(3) DO ' piirretään ovet FOR i% = 0 TO 8 PUT (i% * 37, 105), ovi%, PSET NEXT PCOPY 0, 1 ' arvotaan valinnat ja kruunujen paikat FOR i% = 0 TO 2 ukkok%(i%) = INT(RND * 3) kruunut%(i%) = INT(RND * 3) ukkox%(i%) = i% * 37 * 3 + ukkok%(i%) * 37 ukkoy%(i%) = 180 NEXT ' liikutetaan valitsijoita ylös FOR h% = 1 TO 50 FOR i% = 0 TO 2 ukkoy%(i%) = ukkoy%(i%) - 1 PUT (ukkox%(i%), ukkoy%(i%)), ukot%(0), PSET WAIT &H3DA, 8 PCOPY 0, 1 NEXT NEXT SLEEP 1 ' näytetään toinen tyhjistä ovista FOR i% = 0 TO 2 FOR j% = 0 TO 2 IF ukkok%(i%) <> j% AND kruunut%(i%) <> j% THEN PUT (i% * 37 * 3 + j% * 37, 105), ovi% avatut%(i%) = j% EXIT FOR END IF NEXT NEXT PCOPY 0, 1 SLEEP 1 ' muutetaan vasemman valitsijan ovea FOR j% = 0 TO 2 IF ukkok%(0) <> j% AND avatut%(0) <> j% THEN ukkok%(0) = j% EXIT FOR END IF NEXT ' muutetaan ehkä oikean valitsijan ovea IF RND < .5 THEN FOR j% = 0 TO 2 IF ukkok%(2) <> j% AND avatut%(2) <> j% THEN ukkok%(2) = j% EXIT FOR END IF NEXT END IF ' näytetään, mitä valitun oven takana on ' ja merkitään tulokset muistiin FOR i% = 0 TO 2 PUT (i% * 37 * 3 + ukkok%(i%) * 37, 105), ovi% IF ukkok%(i%) = kruunut%(i%) THEN PUT (i% * 37 * 3 + ukkok%(i%) * 37, 105), kruunu% maarat%(i%) = maarat%(i%) + 1 mielet%(i%) = 400 ELSE mielet%(i%) = 800 END IF NEXT yhteensa% = yhteensa% + 1 PCOPY 0, 1 ' liikutetaan valitsijoita alas FOR h% = 1 TO 50 FOR i% = 0 TO 2 ukkoy%(i%) = ukkoy%(i%) + 1 PUT (ukkox%(i%), ukkoy%(i%)), ukot%(mielet%(i%)), PSET WAIT &H3DA, 8 PCOPY 0, 1 NEXT NEXT ' näytetään uudet tiedot ylhäällä FOR i% = 0 TO 2 PUT (ukkox%(i%), ukkoy%(i%)), ukot%(mielet%(i%)) LOCATE 2, i% * 13.5 + 1 PRINT yhteensa%; "kertaa" LOCATE 3, i% * 13.5 + 1 PRINT maarat%(i%); "oikein" LOCATE 5, i% * 13.5 + 1 PRINT INT(maarat%(i%) / yhteensa% * 100 * 10) / 10; "% " NEXT PCOPY 0, 1 LOOP UNTIL INKEY$ = CHR$(27)
Täytyy kuitenkin muistaa, että yleensä matemaattiset ongelmat on syytä ratkoa kynällä ja paperilla. Matematiikka on eksakti tiede ja siinä jokainen päättelyaskel on pystyttävä varmistamaan. Mikä takaa, että tietokone toimii virheettömästä? Vaikka koneen antaisi laskea miljardi kertaa laskun 10*0 ja tulos olisi nolla, ei tämä vielä todista mitään, joskin antaa viitteitä siitä, mikä tulos mahdollisesti on.
Joo, ihan turhia noi tietokoneet on, kaikki vaan laskemaan käsin niitä satoja miljardeja laskuja :D
Mikä takaa että ihminen toimii virheettömästi? :D:D
Yleisesti ottaen mielestäni aika turhaa käyttää tähän nimenomaiseen tehtävään aikaa enempää kuin se max. 20 sekuntia, joka menee päätellä oikea vastaus.
Tämä kuuluu tähän sarjaan tehtävät, joita en koskaan ole voinut ymmärtää. Siis en ole voinut ymmärtää että mikä tämän sarjan tehtävissä on "hankalaa".
Jaska kirjoitti:
Matematiikka on eksakti tiede ja siinä jokainen päättelyaskel on pystyttävä varmistamaan. Mikä takaa, että tietokone toimii virheettömästä?
Jos tietokoneohjelma on laadittu oikein, ei se minusta paljonkaan eroa matemaattisesta todistuksesta. Olisi äärimmäisen epätodennäköistä, että tietokoneessa tapahtuisi joka kerta sama sisäinen virhe, kun ohjelmaa suoritetaan lukuisia kertoja eri koneissa. Minusta melkein tuntuu, että tietokone toimii varmemmin kuin yksikään matemaatikko.
Grez kirjoitti:
Siis en ole voinut ymmärtää että mikä tämän sarjan tehtävissä on "hankalaa".
Ainakaan minulle ei alkuun ollut lainkaan päivänselvää, miksi todennäköisyys on niin kuin se on. Tuon Wikipedian artikkelin mukaan ongelmaa joskus esitettäessä jopa sadat matematiikan professorit erehtyivät, vaikka he varmasti pohtivat asiaa enemmän kuin 20 sekuntia. Eli ainakin tavalliselle kadunmiehelle tämä ongelma voi helposti aiheuttaa paljon miettimistä.
Antti Laaksonen kirjoitti:
Minusta melkein tuntuu, että tietokone toimii varmemmin kuin yksikään matemaatikko.
Aika rohkea väite. Kyllä alan asiantuntijat lukevat toistensa papereita tarkasti, jos siellä on itseään kiinnostavia tuloksia. Ja matemaatikot osaavat kuitenkin laskea (toivottavasti) irrationaalilukujen tarkoilla arvoilla toisin kuin tietokoneet, jotka tallentavat arvot liukulukuina. Tietysti kone voidaan laittaa myös laskemaan symbolisesti, mutta ainakaan minä en ole nähnyt symbolista matikkaohjelmaa, joka osaisi laskea kunnolla funktion sqrt(exp(z)+sinh(z)) integraalin 0:sta äärettömään.
Eikös se ollut niin, että yhden takana on hieno urheiluauto ja 2 muun takana pukki, joka puskee sinua?
No ihan miten vaan...
Jaska kirjoitti:
Tietysti kone voidaan laittaa myös laskemaan symbolisesti, mutta ainakaan minä en ole nähnyt symbolista matikkaohjelmaa, - -
Ihmisen rajat taitavat tulla vastaan ennen koneen rajoja. Tietokone pystyisi laskemaan ja todistamaan vaikka mitä ylivoimaisen tarkasti ja nopeasti, mutta toistaiseksi ihmisen taidot eivät riitä sen ohjelmointiin. Eli ongelmana on tällä hetkellä, miten kone saadaan tekemään monimutkaisia asioita - ei niinkään se, että kone ei onnistuisi noudattamaan luotettavasti tarkkoja ohjeita.
Antti Laaksonen kirjoitti:
Grez kirjoitti:
Siis en ole voinut ymmärtää että mikä tämän sarjan tehtävissä on "hankalaa".
Ainakaan minulle ei alkuun ollut lainkaan päivänselvää, miksi todennäköisyys on niin kuin se on. Tuon Wikipedian artikkelin mukaan ongelmaa joskus esitettäessä jopa sadat matematiikan professorit erehtyivät, vaikka he varmasti pohtivat asiaa enemmän kuin 20 sekuntia.
Ko. matematiikan professorit vissiin sitten ajattelevat asiaa jotenkin liian vaikeasti.
Ongelmassahan on hyvin yksinkertaisesti kyse siitä, että pitää arvata oikea vastaus järjestelmässä josta ei ole paljoa tietoa. Sen vastauksen antamisen jälkeen annetaan lisää tietoa järjestelmästä ja kysytään haluaako pitäytyä vastauksessa jonka on jo antanut, vai antaa vastauksen jossa hyödyntää myös saamansa uuden tiedon. Jotkuthan uskovat että vaihtamisella todennäköisyys ei parane, eli he uskovat että lisätiedon saaminen järjestelmästä ei paranna todennäköisyyttä löytää oikea vastaus, joka on mielestäni jo jossain määrin uskomatonta.
Varmaan tuossa kilpailutilanteessa jotkut pitäytyvät alkuperäisessä valinnassa ihan vaan psykologisista syistä (kun eivät kykene hahmottamaan tilannetta rationaalisesti) koska pelkäävät tilannetta jossa ovat jo valinneet oikein ja menettävät sen vaihtaessaan. Eli "parempi pyy pivossa kuin kymmenen oksalla". Ongelma vaan tuossa ajattelumallissa on se, että todellisuudessa pyy ei vielä ole pivossa yhtään sen enempää kuin ennen arvaamista, koska todellisuudessa kilpailija ei tiedä, onko oven valitsemansa oven takana palkinto vai ei.
Tässä esimerkissä on kiintoisaa nähdä, että päättelemällä saatu tulos pitää yhtä koneen tilastollisesti saatavan tuloksen kanssa ja näin vermentaa oikean päättelyn. Varmasti löytyy tehtäviä, joissa päättely on vaikeaa tai jopa mahdotonta jolloin ainoa keino oikean ratkaisun saamiseksi on tällainen tilastollinen ratkaisu. Sen oikeellisuuden voi taas tarkastaa testaamalla sitä tehtävällä, jonka voi ratkaista päättelyllä.
Hieman vastaava esimerkki saadaan, kun vastus, häviöllinen konkka, jossa siis sarjavastus, ja häviöllinen kela kytketään rinnakkain. Konkassa aluksi jokin varaus. Löytääkö joku matemaatikkoguru tällaisen piirin värähtelylle matemaattisen ratkaisun. Itse en löytänyt matemaatikkogollegoideni avullakaan. Sen sijaan tietokoneen numeerisen ratkaisun ja kokeilujen avulla löytyi kaava, joka on laskentatarkkuuden rajoissa yhtäpitävä numeerisen ratkaisun kanssa ja voidaan pitää oikeana.
No kommentoinkin lähinnä tätä kyseistä tehtävää, jossa tarvitsee kyetä lähinnä laskemaan erotus (1 - 1/3 = 2/3)
Tämä tehtävä tosiaan on helppo kun ratkaisun on löytänyt. Itse kyllä erehdyin kun ajattelin että valinnan jälkeen yksi tyhjä lokero on pois, jäljellä on siis kaksi jolloin todennäköisyys on 0,5 eli tasan. Ja vipuun menin. Ja siinä koko ongelman ydin juuri onkin.
Grez kirjoitti:
... eli he uskovat että lisätiedon saaminen järjestelmästä ei paranna todennäköisyyttä löytää oikea vastaus, joka on mielestäni jo jossain määrin uskomatonta.
Mikä sääntö tuo nyt oli?
Arvaa tuntemattoman järjestelmän tuottaman jonon 35241563... kymmenes luku. Lisätietoja järjestelmästä: luvut on arvottu nopalla ja yhdeksäs luku on 4. Helpottuiko päättely?
Jaska kirjoitti:
Matematiikka on eksakti tiede ja siinä jokainen päättelyaskel on pystyttävä varmistamaan. Mikä takaa, että tietokone toimii virheettömästä? Vaikka koneen antaisi laskea miljardi kertaa laskun 10*0 ja tulos olisi nolla, ei tämä vielä todista mitään, joskin antaa viitteitä siitä, mikä tulos mahdollisesti on.
Eksaktius alkaa tässä tapauksessa olla lähinnä teoreettinen ihanne. Jos tietokoneen toimintaperiaate on todettu matemaattisesti oikeaksi, on sen tekemä mekaaninen todistus aivan yhtä oikea kuin käsintehtykin (Neliväriongelma). Tietokoneen satunnaisista (esimerkiksi kosmisen säteilyn aiheuttamista) laskuvirheistä johtuva teoreettinen epäluotettavuus on olematon verrattuna ihmisen tekemiin lasku- ja päättelyvirheisiin. Jos miljardi matemaatikkoa laskee saman laskun, on tulos luultavasti useammassa tapauksessa jotakin muuta kuin 0.
os kirjoitti:
Arvaa tuntemattoman järjestelmän tuottaman jonon 35241563... kymmenes luku. Lisätietoja järjestelmästä: luvut on arvottu nopalla ja yhdeksäs luku on 4. Helpottuiko päättely?
Niin, päättely helpottui, enää 6 vaihtoehtoa kymmenestä. Eli jos olisit ensin arvannut vaikka 7 ja nyt kysyttäisiin haluatko vaihtaa, niin varmasti kannattaisi.
Kaiken kaikkiaan tuo ei kuitenkaan ollut se mitä tarkoitin.
http://en.wikipedia.org/wiki/Ten-sided_die :)
Oviongelma on sinänsä helppo tehtävä, jonka ratkaisussa keskeistä on se, että onglemaa lähestyy riittävän analyyttisellä (oikealla) tavalla. Ongelma kuitenkin vaikuttaa vielä helpommalta kuin oikeasti on, lähes itsestäänselvältä, minkä vuoksi moni (jopa matematiikan professorit) sortuu ajattelemaan ongelmaa liian yksinkertaisesti ja intuitiivisesti.
setä kirjoitti:
Hieman vastaava esimerkki saadaan, kun vastus, häviöllinen konkka, jossa siis sarjavastus, ja häviöllinen kela kytketään rinnakkain. Konkassa aluksi jokin varaus. Löytääkö joku matemaatikkoguru tällaisen piirin värähtelylle matemaattisen ratkaisun.
Tokihan tuolle piirille ratkaisu löytyy. Differentiaaliyhtälön kautta voidaan osoittaa, että jos ideaalinen varattu kondensaattori ja ideaalinen kela kytketään rinnan, muodostuu siniaalto, jonka taajuus on f = 1/(2*pi) * sqrt(1/(LC)). Reaalisten komponenttien häviöllisyyden vuoksi todellisessa kytkennässä siniaallosta tulee vaimeneva, ja jos rinnalle kytketään vielä erillinen vastuskomponentti, vaimenemisesta tulee nopeampaa.
Ja jos nyt en ihan väärin muista syksyn sähkökurssia, niin reaalista kondensaattoria kuvataan kapasitanssin ja konduktanssin (resistanssin) rinnankytkennällä, koska reaalinen kondensaattori ei voi varastoida varausta ikuisesti, vaan kadottaa sen ajan myötä, ikään kuin sen rinnalle olisi kytketty resistanssiltaan suuri vastus.
En nyt millään jaksaisi ruveta rakentamaan noita diff. yhtälöitä tähän aikaan päivästä, toivottavasti uskot ilmankin :)
Offtopikkiahan tämä oli, mutta ei toivottavasti häirinnyt varsinaista keskustelua :)
Valitettavasti on tosiaan aika kaukana varsinaisesta aiheesta mutta mutta liittyy kuitenkin tietokoneen avulla löytyvään ratkaisuun. Kirjallisuudesta kyllä löytyy ratkaisut erikoistapauksiin, mutta yleisessä muodossa nuo kaikki kolme vastusta on mukana ja siihen ei löydy ratkaisua mistään paitsi tuo numeerisen ratkaisun ja intuition avulla löytynyt kaava. Tehtävä ei ratkea tavanomaisin diff. yhtälöin vaan vaatii korkeampaa matikkaa. Vaimennuksen kasvaessa tässä tapauksessa myös taajuus laskee.
Tollanen löyty http://www.lintukoto.net/testit/ovi/index.php