Grote getallen, kaarten schudden en wanorde

Je hebt waarschijnlijk, in het nieuws of op school, weleens over snel toenemende functies gehoord. Iets zou bijvoorbeeld ‘exponentieel’ toenemen. Die term wordt ook best vaak slordig gebruikt, simpelweg om aan te geven dat iets snel stijgt, terwijl het eigenlijk slechts om een machtsfunctie gaat: iets als \( y = ax^b \), met \( a \) en \( b \) getallen die bepalen hoe snel de functie precies groeit. Als \( b = 2 \) gaat het bijvoorbeeld over een kwadratisch groeiende functie. Wat is eigenlijk het verschil tussen dit soort functies, en waarom stijgt de één veel sneller dan de ander?

uitroepteken
Afbeelding 1. Uitroepteken met een schoppenaas als streep.Het uitroepteken is de wiskundige notatie voor de faculteit, een enorm snel groeiende functie die je bijvoorbeeld tegenkomt als je je afvraagt hoe je een pak speelkaarten kunt ordenen. Afbeelding gemaakt met Claude.

We kunnen over het toenemen van functies nadenken door te overwegen: wat gebeurt er met \( y \), elke keer als ik 1 toevoeg aan \( x \)? Laten we eenvoudig beginnen met een lineaire vergelijking, waarvoor je \( b = 1 \) kiest in het bovenstaande: \( y = ax \). In dat geval krijg je, als je 1 aan \( x \) toevoegt, dat \(  ax \rightarrow ax + a \). Met andere woorden: er wordt een constante waarde \( a \) bij \( y \) opgeteld. Om dit te vergelijken met het gedrag van andere functies, willen we weten met welke factor \( y \) wordt vermenigvuldigd als x op deze manier omhoog gaat:

\( \frac{ax + a}{ax} = \frac{x+1}{x} \).

Het punt hier is: deze factor slinkt naarmate \( x \) omhoog gaat. Als \( x = 1 \), dan is de factor gelijk aan 2, maar als je \( x \) heel groot neemt, zoals \( x = 3000 \), dan wordt deze factor praktisch gelijk aan 1; in dit geval 1,000333… . Oftewel: \( y \) verandert bijna niet meer als \( x \) een stapje omhoog gaat.

Dit verschijnsel is niet typisch voor lineaire functies, maar komt voor bij alle functies van de vorm \( y=ax^b\). Reken zelf maar na, bijvoorbeeld voor \( b=2 \), of in het algemeen. De lineaire functie is een speciaal geval van dit soort functies met \( b = 1 \). De vermenigvuldigingsfactor, de factor waarmee \( y \) omhoog gaat na een stapje van \( x \), neemt in al deze gevallen af naarmate \( x \) groter wordt.

Misschien vraag je je al af: wat is dan een soort functie waarvoor deze vermenigvuldigingsfactor niet afneemt, maar bijvoorbeeld constant blijft, of zelfs toeneemt? Het antwoord voor de constante factor is: een exponentiële functie – in zekere zin is die functie zelfs zo gedefinieerd. Ga maar na: een exponentiële functie ziet er bijvoorbeeld uit als \( y = cd^x  \), met bepaalde constante waardes voor \( c \) en \( d \). Als \( x \) een stapje toeneemt, krijg je \( cd^x \rightarrow cd^{x+1}=cd^x \cdot d\). Oftewel: de functie wordt vermenigvuldigd met een constante waarde, namelijk \( d \). Dit is waarom een exponentiële functie altijd een functie van het type \( y = ax^b \) ‘inhaalt’, tenminste: als \( d > 1 \) zodat de functie daadwerkelijk groeit.

Ten slotte: wat is dan een functie waarvoor de vermenigvuldigingsfactor toeneemt naarmate \( x \) groter wordt? Een voorbeeld van zo’n functie is de functie die vandaag een hoofdrol speelt: de faculteit, aangeduid met een uitroepteken ‘!’. De definitie van de faculteit is als volgt:

\( y = x! = x \times (x – 1) \times (x-2) \times \cdots \times 1\).

Met andere woorden: je vermenigvuldigt het (gehele) getal waarvan de faculteit wordt genomen met alle gehele getallen tussen dat getal en 1. We kunnen nu nagaan hoe deze functie groeit: \( x! \rightarrow (x+1)! = (x+1)\times x!\). Met andere woorden: de groeifactor is afhankelijk van \( x \), en wordt nu dus groter naarmate \( x \) toeneemt! Het valt bijna niet te overschatten hoe snel deze functie toeneemt.

functies
Afbeelding 2. Machtsfunctie vs exponentieel vs factorieel. Je ziet hier in het rood de functie y = x2, in het blauw de functie y = x4, in het paars de functie y = 2x en in het zwart de functie y = x! . Langs de y-as wordt een logaritmische schaal gebruikt. Dit betekent dat exponentiële functies rechte lijnen worden, en machtsfuncties naar beneden afbuigen, zoals je bij de rode en blauwe lijnen ziet. De exponentiële functie haalt altijd een machtsfunctie in, maar je ziet dat de faculteit-functie altijd de exponentiële inhaalt.

Grappig genoeg komt deze op het gezicht vrij extreme functie op veel plekken voor in het dagelijkse leven – bijvoorbeeld bij kansberekening, waar je de faculteit gebruikt voor het berekenen van het aantal mogelijke uitkomsten van een bepaalde actie. Misschien is het bekendste voorbeeld wel dat van een pak speelkaarten. Zo’n pak heeft 52 verschillende kaarten. Je kan je afvragen op hoeveel verschillende manieren je dit pak kaarten kan ordenen. Je begint één volgorde samen te stellen en je begint daarvoor bij de eerste kaart: hiervoor heb je keuze uit 52 kaarten. Vervolgens kies je de tweede kaart, en er zijn nog maar 51 kaarten om uit te kiezen; en voor de derde kaart kan je nog maar uit 50 kaarten kiezen. Het aantal mogelijke ordeningen is dus 52!. Het is simpelweg absurd hoe groot dit getal is. Als je het probeert uit te rekenen op een standaard rekenmachine, is de kans groot dat je een error krijgt. Het precieze antwoord is 68 cijfers lang:

80658175170943878571660636856403766975289505440883277824000000000000

Er is een beroemd gedachte-experiment dat illustreert hoe groot dit getal is, bedacht door Scott Czepiel. Stel je voor dat je 52! seconden wilt vullen. Je begint met een wandeling langs de evenaar, die ongeveer 40.075.000 meter lang is. Het wordt een lange wandeling, want je zet elke 1 miljard jaar maar één stap! Bedenk je hoelang dit alleen al duurt: aangenomen dat je grote stappen zet, zal het bijna de geschatte leeftijd van het universum duren. Als je vervolgens een rondje hebt gelopen, neem je één druppel water uit de Stille Oceaan, en maak je nog een rondje. Herhaal dit tot de Stille Oceaan (met een inhoud van ongeveer 708 kubieke kilometer) leeg is, en dan leg je één velletje papier op de grond. Vul de Stille Oceaan weer met water en herhaal het hele circus tot je een stapel papiertjes hebt van de aarde tot de zon, ongeveer 150 miljoen kilometer hoog. Het aantal seconden dat nu voorbij is gegaan, heeft nog geen deuk in het pakje boter geslagen: je hebt nog steeds het overgrote deel van de \( 8 \times 10^67 \) seconden te gaan! Als je nu 1000 stapels bouwt op dezelfde manier, dan ben je ongeveer op één derde!

Om de resterende tijd door te brengen, neem je je pak kaarten, en deel je jezelf elke miljard jaar één pokerhand, oftewel: vijf kaarten. Elke keer dat je jezelf een royal flush deelt – de kans hierop is 1 op 649.740 – koop je een kaartje voor de loterij. En elke keer dat je de loterij wint, waarvoor je 6 correcte nummers moet gokken tussen 1 en 59 (met een kans van 1 op 45.057.474), neem je één korreltje zand en gooi je dat in de Grand Canyon. Als je vaak genoeg een royal flush hebt gedeeld, en daarna vaak genoeg de loterij hebt gewonnen om de hele Grand Canyon te vullen, neem je vervolgens een schepje zand van de Mount Everest van ongeveer 28 gram (één ounce). Daarna leeg je de Grand Canyon en begin je weer van voor af aan, tot je de hele Mount Everest hebt afgegraven. Als je vervolgens dit hele riedeltje zo’n 256 keer doet, is de timer eindelijk klaar en heb je 52! seconden gevuld.

Dit alles om te zeggen: 52! is veel. Onvoorstelbaar veel, zelfs met dit voorbeeld. Een direct gevolg is: pak een pakje kaarten, en als dat pakje goed geschud is, is het vrijwel zeker dat jouw pakje kaarten nu in een volgorde ligt waarin geen enkel pakje kaarten ooit gelegen heeft, of ooit weer zal liggen.

Wat is een goed geschud pak kaarten?

Een vraag die je vervolgens kan stellen is: hoe goed moet je een pakje kaarten schudden voordat je echt een willekeurige volgorde krijgt? Stel dat je begint met een pakje kaarten dat gesorteerd is, bijvoorbeeld met alle harten op volgorde bij elkaar, dan alle klaveren bij elkaar, enzovoort. Het is dan redelijk om aan te nemen dat je het pak kaarten een aantal keer goed moet schudden, voordat het écht ongeordend wordt. Je hebt dit vast en zeker weleens zelf ervaren, als iemand bij een potje kaarten de kaarten niet genoeg geschud heeft, en iemand wel heel veel kaarten van één kleur krijgt. Aangenomen dat je goed schudt, hoe vaak moet je dan schudden voordat de resulterende volgorde een bij benadering ‘willekeurige’ is? Willekeurig betekent hier dat na het schudden elke volgorde ongeveer even waarschijnlijk is als uitkomst.

Een antwoord op deze vraag werd in 1992 gegeven door de wiskundigen Dave Bayer en Persi Diaconis. Zij ontdekten eerder al dat bij vraagstukken als dit een soort faseovergang plaatsvindt: van de ene keer schudden op de volgende gaat het pak kaarten heel plotseling over van een nog redelijk geordende fase, naar een vrijwel willekeurige. Dit feit is ook voor de natuurkunde interessant, want het blijkt dat je dezelfde soort faseovergangen ook in ‘’spin glas’’ tegenkomt, of bij modellen zoals het Isingmodel. In 1992 vonden de wiskundigen een bewijs dat liet zien dat het aantal keer dat je een pak kaarten moet schudden voordat deze overgang plaatsvindt, zeven keer is. Hieraan ligt wel een aantal aannames over de methode van schudden ten grondslag.

De methode van schudden waar het in het bewijs om gaat heet de ‘riffle shuffle’. Je deelt dan het pak kaarten in tweeën en combineert de kaarten weer door ze als een soort rits weer samen te laten vallen. De wiskundigen namen hiervoor aan dat dit met de precisie van een professionele goochelaar of pokerdeler wordt gedaan: het pak kaarten moet vrij dicht bij het midden in tweeën gedeeld worden, en de manier waarop de kaaten samenritsen komt overeen met een precies model waar willekeurig gekozen wordt of de volgende kaart uit de linker of rechter stapel komt, waarbij de kans op links of rechts evenredig is met het aantal kaarten dat nog in de betreffende stapel zit.

schudden
Afbeelding 3. De Riffle Shuffle. Afbeelding door Poker Photos, via Flickr.

Precies zo schudden is natuurlijk niet helemaal realistisch voor de amateur die bij een recreatief potje kaarten thuis de kaarten schudt. Een van de voornaamste uitdagingen is om het pak kaarten goed in het midden te splitsen. De wiskundige Steven Lalley probeerde het bewijs in 1999 te generaliseren naar willekeurige locaties van de splitsing, maar kwam er in plaats daarvan slechts achter, dat wanneer je op die wijze schudt, het pak kaarten de neiging heeft om zogenaamde ‘cold spots’ te vormen. Dat houdt in dat een deel van de kaarten hardnekkig in dezelfde relatieve ordening blijft. Pas als je zó veel schudt dat die ‘cold spots’ verdwijnen, kan je spreken van een faseovergang. Hoe vaak je daarvoor precies moet schudden, kon hij echter niet bewijzen.

Zo’n 20 jaar later zou een zoon van een van Lalleys collega’s daarachter komen. Mark Sellke ontdekte in 2021 wanneer de faseovergang gebeurt, afhankelijk van waar je het pak splitst, maar hiervoor moest je wel elke keer dat je splitst, dat op exact dezelfde plaats doen. Uiteindelijk wist hij zelfs die aanname weg te generaliseren, naar het realistische geval waarbij je elke keer dat je schudt het pak kaarten op een andere plek splitst. Dat kreeg hij in 2024 voor elkaar, in samenwerking met promovendi Jialu Shi en Jiamin Wang.

Hiervoor gebruikten zij een methode waarbij je aan elke kaart een code toekent die bijhoudt wat het ‘pad’ is dat de kaart aflegt naarmate het pak kaarten vaker en vaker geschud wordt. Wanneer je het pak splitst, krijgen alle kaarten in de linker stapel een 1, en alle kaarten in de rechter stapel een 0. Vervolgens schud je, en als je splitst voor het volgende rondje schudden, voeg je aan de bestaande codes van de kaarten weer een cijfer toe, afhankelijk van of ze in de linker of rechter stapel gesplitst worden. Zo zou na vier keer schudden een kaart een code van ‘0100’ kunnen hebben, wat zou betekenen dat die kaart eerst in de rechter stapel terechtkwam, dan in de linker stapel, en dan weer twee keer in de rechter stapel. Als je dan klaar bent met schudden, kan je alle codes van de kaarten vergelijken: hebben ze dezelfde code, dan hebben ze hetzelfde pad genomen en hebben ze dus nog dezelfde relatieve positie.

Het is echter tijdrovend om alle codes te vergelijken, dus wat beter werkt is om alleen de codes van de kaarten in de eerdergenoemde ‘cold spots’ met elkaar te vergelijken. Vervolgens neem je de codes van de kaarten in de cold spots, interpreteer je die als binaire getallen, en sorteer je ze van klein naar groot. Je kan alle codes dan grafisch weergeven als naast elkaar gelegen punten, en als twee naast elkaar liggende codes hetzelfde zijn, trek je er een lijn tussen. Het idee is nu om dat voor twee pakjes kaarten te doen, en de cold spots te vergelijken. Je legt deze lijndiagrammen boven elkaar, en identificeert waar de lijnen overlappen. Wanneer deze overlappende plekken verdwijnen, zeggen we dat de cold spots verdwenen zijn. Sellke, Shi en Wang kwamen er op deze manier achter dat de aantallen cold spots na een bepaald aantal keer schudden ineens exponentieel afnemen! Daar vindt dus de faseovergang naar een ongeordende toestand plaats. Voor een pak van 52 kaarten rekenden de wiskundigen uit dat je 14 keer moet schudden, aangenomen dat je het pak kaarten elke keer op een willekeurige plek splitst. Je kan meer over hun methode lezen in dit mooie artikel. Aangenomen dat je wel een poging doet om het pak kaarten in het midden te splitsen, zal het aantal keer dat je moet schudden dus ergens tussen de 7 en 14 in liggen.

Een volgende vraag is of iemand ditzelfde kan uitrekenen voor een realistischer schudmodel, waarbij kaarten ‘klonteren’: als je de riffle shuffle doet hebben de kaarten de neiging een beetje aan elkaar vast te plakken, zodat er steeds een aantal tegelijk van rechts en dan een aantal tegelijk van links komen. Dat is een nog onbeantwoorde vraag!