• No results found

Afleiding van Conway’s algoritme

In document Conway's algoritme (pagina 37-45)

5. Bewijs van Conway’s algoritme

5.2.3. Afleiding van Conway’s algoritme

We hebben inmiddels iets bewezen dat sterkt lijkt op Conway’s algoritme. Het enige verschil is dat we het nu bewezen hebben voor A ∗ A, A ∗ B, et cetera. Terwijl Conway’s algoritme geldt voor het kengetal AA van A over A, het kengetal AB van A over B, et cetera. Deze kengetallen construeer je met Conway’s algoritme door de mogelijke combinaties van de strategie¨en A en B om te zetten naar binaire getallen zoals beschreven in het algoritme in Hoofdstuk 2. Daarmee kunnen we de kans berekenen dat een rij eerder voorkwam dan de ander. Als we nu aan kunnen tonen dat A∗A gelijk is aan het kengetal AA van A over A, dat A ∗ B gelijk is aan het kengetal AB van A over B enzovoorts, dan volgt uit Gevolg 5.11 het bewijs van Conway’s algoritme. Herinner hoe we in Hoofdstuk 2 het kengetal van twee strategie¨en bepaalden. We willen nu eerst de constructie van deze kengetallen wat wiskundiger defini¨eren. Hierna zullen we A ∗ B afleiden uit het kengetal AB. Tenslotte zullen we Conway’s algoritme bewijzen door aan te tonen dat (AA − AB) : (BB − BA) gelijk is aan (A ∗ A − A ∗ B) : (B ∗ B − B ∗ A).

Definitie 5.13 (Conway’s kengetallen). Gegeven twee sequenties A = (a1, . . . , am) en

B = (b1, . . . , bn) defini¨eren we het kengetal AB van A over B als het binaire getal

nn−1. . . 1 waarbij voor 1 ≤ i ≤ n geldt:

i =         

1 als 1 ≤ i ≤ min{m, n} en de twee

sequenties (am−i+1, . . . , am) en (b1, . . . , bi)

gelijk zijn, 0 anders.

We maken dit wat duidelijker aan de hand van een voorbeeld.

Voorbeeld 5.14. Zij A = (a1, a2, a3) en B = (b1, b2, b3). We willen het kengetal AB

bepalen. We zien:

1 =

(

1 als (a3) = (b1)

Nu, 2 = ( 1 als (a2, a3) = (b1, b2) 0 anders. En, 3 = ( 1 als (a1, a2, a3) = (b1, b2, b3) 0 anders.

Stel we hebben A = (H, T, H) en B = (T, H, H) dan zien we het volgende: omdat (a3) = (H) en (b1) = (T ) krijgen we 1 = 0, omdat (a2, a3) = (T, H) en (b1, b2) = (T, H)

krijgen we 2 = 1 en zo vinden we ook dat 3 = 0. Voor alle n > 3 geldt n = 0. Het

kengetal is dus in dit geval het binaire getal 010, oftewel het decimale getal 2.

Laten we nu Conway’s kengetal AB van A over B vergelijken met A ∗ B. We doen dit alleen voor kengetal AB, omdat de vergelijking voor BB, BA en AA analoog gaat (ze zijn immers van dezelfde vorm als AB). Stel A = (a1, . . . , am) en B = (b1, . . . , bn).

We kunnen zonder verlies van algemeenheid zeggen dat min{n, m} = n. We krijgen dan het kengetal nn−1. . . 1 van A over B. Dit is dan gelijk aan het decimale getal

2n−1n+ 2n−2n−1+ · · · + 201. In Voorbeeld 5.14 zien we zo dat het binaire getal 010

gelijk is aan 22· 0 + 21· 1 + 20· 0 = 2.

We gaan dit vergelijken met A ∗ B. Laten we eerst nog een keer naar Definitie 5.5 van δij teruggaan. Omdat we het hier hebben over Penney’s spel waarbij we herhaaldelijk

een munt opgooien kunnen we deze definitie van δij versimpelen. Herinner je hierbij dat

Z de stochast is die waarden aanneemt in Σ = {H, T } en een munt voorstelt die we opgooien.

In het algemeen kunnen we zeggen dat voor elke twee sequenties A = (a1, a2, . . . , am)

en B = (b1, b2, . . . , bn) het volgende geldt: omdat voor alle 1 ≤ j ≤ n geldt dat bj ∈

{H, T } en P(Z = H) = P(Z = T ) =1/

2 zien we dat voor alle bj:

P(Z = bj)−1 = 1 P(Z = bj) = 1 1/ 2 = 2.

We kunnen δij met 1 ≤ i ≤ max{n, m} en 1 ≤ j ≤ max{n, m} daarom herschrijven tot:

δij =

(

P(Z = bj)−1 = 2 als ai = bj

0 anders.

Hierbij moeten we opmerken dat als m > n dan δmm = 0, omdat bmdan niet gedefinieerd

is dus ook niet geldt dat bm = am.

Als we nu wederom kijken naar de definitie van A ∗ B:

A ∗ B = δ11δ22· · · δmm + δ21δ32· · · δm,m−1+ · · · + δm1

en we vergelijken dit met het kengetal AB, dan zien we dat: A ∗ B = 2n· n+ 2n−1· n−1+ · · · + 21· 1

= 2 · (2n−1n+ 2n−2n−1+ · · · + 201)

Dit is misschien allemaal een beetje veel om te verwerken dus laten we nogmaals kijken naar Voorbeeld 5.14, maar dan A ∗ B maken en dit vergelijken met het kengetal AB. Voorbeeld 5.15. Zij A = (H, T, H) en B = (T, H, H). We willen A ∗ B = δ11δ22δ33+

δ21δ32+δ31bepalen. We zijn daarom alleen ge¨ınteresseerd in de δij’s die we nodig hebben

voor A ∗ B. Nu zien we dat δ33= δ21= δ32= 2 en δ11 = δ22 = δ31 = 0. We krijgen dus:

A ∗ B = δ11δ22δ33+ δ21δ32+ δ31

= 0 · 0 · 2 + 2 · 2 + 0 = 0 + 4 + 0

= 2 · (22· 0 + 21· 1 + 20· 0)

= 2AB.

Dus er geldt voor strategi¨en A van speler ´e´en en B voor speler twee dat A ∗ B = 2AB, waarbij AB het kengetal van A over B is. Het bewijs van Conway’s algoritme is nu makkelijk.

Stelling 5.16 (Conway). Zij A = (a1, . . . , am) en B = (b1, . . . , bm). Als AB het kengetal

van A over B is, dan is de verhouding waarmee B eerder voorkomt dan A in het proces Z1, Z2, . . . (oftewel als we herhaaldelijk een munt opgooien) gelijk aan

(AA − AB) : (BB − BA).

Bewijs. We weten uit Gevolg 5.11 dat de verhouding waarmee B eerder voorkomt dan A gelijk is aan (A ∗ A − A ∗ B) : (B ∗ B − B ∗ A). Ook weten we dat A ∗ A = 2AA, A ∗ B = 2AB, B ∗ B = 2BB en B ∗ A = 2BA. Hiervolgt dus dat

(2AA − 2AB) : (2BB − 2BA)

De twee¨en vallen weg, omdat ze voor de verhouding niks uitmaken aangezien ze voor alle kengetallen staan. Dit geeft dus de verhouding

(AA − AB) : (BB − BA).

Conway’s algoritme is hiermee dus eigenlijk gewoon een gevolg van Gevolg 5.11. Merk op dat de kans waarmee B eerder voorkomt dan A dus gelijk is aan

BB − BA

AA − AB + BB − BA.

We hebben nu dus met het artikel van Li [3] bewezen dat Conway’s algoritme klopt. Dit kunnen we dus gebruik als we Penney’s spel spelen en gemakkelijk geld willen verdienen. Het enige waar we voor moeten zorgen is dat we als tweede een strategie kiezen zodat we gebruik kunnen maken van de nontransitiviteit van dit spel (waardoor de tweede speler altijd met een grote kans het spel wint). Omdat het een eerlijk spel is zal de andere speler denken dat het niet uitmaakt wie er als eerste kiest dus dat zou geen probleem moeten zijn. We moeten dan alleen met behulp van Conway’s algoritme de kansen uitrekenen waarmee de andere strategie¨en eerder voorkomen dan de strategie van speler ´e´en als we herhaaldelijk een munt opgooien en dan kunnen we eindelijk genieten van ons gratis geld!

6. Discussie

We weten nu hoe we met Conways algoritme gemakkelijk de kansen kunnen berekenen waarmee een bepaalde strategie eerder voorkomt dan een ander als we een herhaaldelijk een munt opgooien. Dit spel is nontransitief dus de tweede speler is altijd in het voordeel. Maar als de tweede speler nu de strategie wil kiezen waarmee hij met een zo’n groot mogelijk kans wint van speler ´e´en, dan moet hij eerst uitrekenen met welke kans elke strategie wint van de strategie van speler ´e´en. Daarna pas kan hij de strategie kiezen waarmee hij met een zo groot mogelijke kans wint. Als we strategie¨en van lengte drie hebben is dit nog te doen. Je hebt dan 23 = 8 mogelijke strategie¨en dus dan moet je

7 keer Conway’s algoritme gebruiken (alleen niet voor de strategie die speler ´e´en kiest). Maar als we strategie¨en van lengte 20 hebben zijn er 220= 1048576 mogelijke strategie¨en.

Conways algoritme kan weliswaar voor elke strategie gemakkelijk uitrekenen met welke kans hij eerder voorkomt dan de strategie van speler ´e´en, maar dat neemt niet weg dat als we willen bepalen wat de beste strategie is we dit algoritme 1048576 − 1 keer moeten toepassen. Mijn voorstel voor een vervolgonderzoek luidt dan ook: hoe kunnen we gemakkelijk bepalen wat de beste strategie is waarmee speler twee van speler ´e´en kan winnen? Bovendien moeten het spel altijd nontransitief zijn. Voor strategie¨en van lengte drie weten we dat dit het geval is en volgens Gardner [2] is dat ook het geval voor langere lengtes, maar waarom is dat zo? En hoe kan je dat nagaan?

Voor strategie¨en van lengte drie heb ik op Youtube [7] een filmpje gevonden dat laat zien hoe je in een keer de beste strategie kan kiezen. Speler twee, die wederom na speler ´e´en zijn strategie kiest, neemt het middelste element van de strategie van speler ´e´en, spiegelt dat element (dat wil zeggen als dat element H is maakt speler twee er een T van), plaats hem voor de strategie van speler ´e´en en neemt de eerste drie elementen als zijn eigen strategie. We lichten dit toe met een voorbeeld: stel speler ´e´en heeft strategie HT T , dan moet speler twee die middelste T spiegelen en voraan zetten. We krijgen dan HHT T . De eerste drie elementen zijn dan HHT . Dit is de strategie waarmee speler twee met de grootste kans van speler ´e´en wint. Dit komt ook overeen met de tabel op pagina 303 van Gardner [2], maar waarom het klopt en hoe dit werkt voor strategie¨en van langere lengtes, is een mooie uitdaging voor een vervolgonderzoek.

7. Populaire samenvatting

We willen veel geld krijgen en daar weinig moeite voor doen. Naar het casino gaan maakt ons over het algemeen alleen maar armer. Of zouden we misschien onze wiskundige kennis kunnen gebruiken om toch moeiteloos geld te verdienen? Bij sommige spellen kan dat. Dit zijn nontransitieve spellen: spellen waarbij speler twee in het voordeel is. Een voorbeeld daarvan is het Penney’s spel. Twee spelers kiezen na elkaar een strategie van lengte n, dat wil zeggen een opeenvolging van n mogelijke uitkomsten als we herhaaldelijk een munt opgooien, en we gaan vervolgens een munt opgooien net zo lang tot de strategie van een van beide spelers voorbij is gekomen. Als wij speler twee zijn zijn we benieuwd naar de strategie die we moeten kiezen zodat we dus met een grote kans winnen. Daarvoor moeten we wel kunnen bepalen wat de kans is dat we met een strategie winnen van speler ´e´en. Dit kan heel lastig zijn, maar John Conway heeft daar een algoritme voor bedacht. Om te bewijzen dat Conway’s algoritme werkt is alleen veel moeilijke wiskunde nodig. Maar waar het bewijs op neerkomt is het volgende. We noemen hierbij speler ´e´en ‘A’ en speler twee ‘B’.

We kijken eerst naar de verwachte tijd tot we de strategie van A krijgen, nadat we de strategie van B hebben. We beginnen dus met de strategie van B en gaan dan net zo lang een munt opgooien tot we strategie A hebben. Dit is gelijk aan het verwachtte aantal keer gooien tot we strategie A hebben min een correctiefactor. We moeten er namelijk een correctiefactor vanaf halen, omdat het zou kunnen dat we het begin van strategie A aan het eind van strategie B hebben. Stel bijvoorbeeld dat A = HT T en B = HHT , hierbij staat H voor ‘kop’ en T voor ‘munt’. Als we beginnen met B dan beginnen we dus met HHT . We moeten dan eigenlijk alleen nog T gooien om strategie A te krijgen. We hebben dan immers HHTT. Dus de verwachte tijd tot we strategie A hebben na B kan korter zijn dan de verwachte tijd tot we strategie A hebben gegooid. Hetzelfde geldt voor de verwachte tijd tot we B krijgen als we beginnen met A. Als we nu de verhouding van de verwachte tijd tot A na B met de verwachte tijd tot B na A nemen, dan weten we dus de verhouding waarmee de strategie B van speler twee eerder voorkomt dan de strategie A van speler ´e´en.

Stel namelijk dat we verwachten dat we 4 keer moeiten gooien tot B na A en 6 keer tot A nadat we B hebben. Dan is de verhouding dat B eerder voorkomt dan A : 6 : 4. Hiermee kunnen we ook de kans dat B eerder voorkomt dan A uitrekenen en dat is namelijk 6+46 = 0.6. Dit is hoe het bewijs van Conways algoritme intu¨ıtief werkt en dit toont dus aan dat je als speler twee in dit spel altijd veel geld kan verdienen!

Bibliografie

[1] Vladimir Bogachev. Measure Theory, volume 2. Springer, 2007.

[2] Martin Gardner. The colossal book of mathematics: Classic puzzles, paradoxes, and problems : Number theory, algebra, geometry, probability, topology, game theory, infinity, and other topics of recreational mathematics. W. W. Norton & Company, New York, 2001.

[3] Shuo-Yen Robert Li. A martingale approach to the study of occurence of sequence patterns in repeated experiments. The Annals of Probability, 8(6):1171–1176, 1980. [4] Shuo-Yen Robert Li and Hans U. Gerber. The occurrence of sequence patterns in

repeated experiments and hitting times in a markov chain. Stochastic Processes and their Applications, 11:101–108, 1981.

[5] David Poole. Linear Algebra: A Modern Introduction. 4th edition, 2014.

[6] Bryan P. Rynne and Martin A. Youngson. Linear Functional Analysis. 2nd edition, 2008.

[7] singingbanana (Youtube-account). Coin Game Magic Trick Maths: The Penney Ante Part 1 (Re: Derren Brown: How to Win the Lottery). [Video file]. September 2009. URL http://www.youtube.com/watch?v=OcYnlSenF04.

[8] P. J. C. Spreij. Measure Theoretic Probability. [Lecture Notes], Retrieved from https://staff.fnwi.uva.nl/p.j.c.spreij/onderwijs/TI/mtsp.html, 2014.

A. Bijlage

In deze bijlage de Pythoncode waarmee ik Penney’s spel voor strategie¨en van lengte drie geprogrammeerd heb. Ik gebruikte dit in mijn flitspresentatie waarbij ik mensen uit de klas uitdaagde om Penney’s spel tegen mij te spelen. Eerst liet ik zien dat het een eerlijk spel lijkt (de kans om kop-kop-kop te gooien is even groot als de kans om munt-kop-munt te gooien bijvoorbeeld). De tegenstander koos vervolgens eerst een strategie en daarna ik. Vervolgens speelden we het spel 100.000 keer. Pas als ik 60% of meer van de gespeelde spellen won mocht ik een broodje houden. Anders won mijn tegenstander een broodje. Het spel leek eerlijk, maar dat is niet het geval. Ik mocht het broodje uiteindelijk zelf opeten. Vervolgens legde ik uit dat dit het onderwerp is van mijn scriptie, waarom dit spel dus toch niet eerlijk is (onder andere vanwege de nontransitiviteit) en hoe ik ervoor zorg dat ik win: door Conway’s algoritme.

import random

from math import* from decimal import *

#Afronden op aantal decimalen achter de komma

getcontext().prec = 2

#strategie wordt binair getal #M/T wordt 1 en H/K wordt 0 def binstrat(x): P=list(x) L=[] for i in range(0,len(P)): if P[i]==’H’: L.append(0) elif P[i]==’T’: L.append(1) elif P[i]==’K’: L.append(0) elif P[i]==’M’: L.append(1) return L

#binair getal wordt strategie

L=[] for i in range(0,len(x)): if x[i]==0: L.append(’K’) elif x[i]==1: L.append(’M’) g = ’’ for f in L: g = g + f return g

def spel(A,B,q): # invoer strategie A, strategie B en #aantal keer dat we spelen

a=binstrat(A) # strategie omzetten naar binair getal: K=0, M=1

b=binstrat(B)

awin=0 # bijhouden wie er wint

bwin=0 i=0

while i<q: k=0

n=0 #n is het aantal keer dat we gooien

r=[random.randint(0,1),random.randint(0,1)] #r is lijst waar we will. #0 of 1 aan toevoegen

L=[] #lijst checkt laatste drie uitkomsten

while k==0: r.append(

random.randint(0,1) #will. toevoegen van 0 of 1

) n=n+1

L.append(r[n-1]) #laatste drie uitkomsten van r checken

L.append(r[n]) L.append(r[n+1])

if L==a: #gelijk aan A? A wint

awin=awin+1 k=1

i=i+1

elif L==b: #gelijk aan B? B wint

bwin=bwin+1 k=1

i=i+1

else: #anders nog een keer gooien

L=[] k=0

print ’Als we’,q,’keer spelen, waarbij Roelof strategie’,B,’heeft en’ ’zijn tegenstander strategie’,A

if i==1:

print ’en we gooien achtereenvolgens in’,n+2,’keer’, stratbin(r) if awin==1:

print ’dan wint de tegenstander het broodje!’ if bwin==1:

print ’dan wint Roelof en mag hij het broodje houden :D.’ if i>1:

print ’Wint Roelof’,bwin,’keer en wint zijn tegenstander’,awin,’keer’ print ’Oftewel Roelof wint’, ’{0:.0%}’.format(Decimal(bwin) /

Decimal(q)), ’van de spellen.’

if Decimal(bwin) / Decimal(q)>Decimal(6)/Decimal(10):

print ’Dit is groter dan 60% dus Roelof mag het broodje houden :D’ else:

print ’Dit is kleiner dan 60% dus je hebt het broodje gewonnen!!!’ spel(’MKK’,’KMK’,1)

In document Conway's algoritme (pagina 37-45)