Claude Shannon1 (1916-2001) — de vader van de informatietheorie — had een wel heel bijzondere fascinatie voor jongleren. Hij werd vaak al jonglerend gespot toen hij met zijn eenwieler door de gangen van Bell Labs2 aan het rijden was, en hij bouwde in de jaren '70 de eerste jongleerrobot met een Erector Set3. De machine in onderstaand videofragment is een nabootsing van W.C. Fields4, die zelf jongleur was in een vaudeville voor hij zich omschoolde tot komiek.

Met een verwijzing naar het feit jongleren een sterke aantrekkingkracht lijkt uit te oefenen op mensen met een wiskundig brein, poneerde Shannon de volgende stelling over jongleren: \[H(F + D) = B(V + D)\] waarbij $$H$$ staat voor het aantal handen, $$F$$ voor de tijd dat de bal in de lucht hangt (vluchttijd, flight time), $$D$$ voor de tijd dat de bal in de hand zit (verblijftijd, dwell time), $$V$$ voor de tijd dat de hand leeg is (lege tijd, vacant time) en $$B$$ voor het aantal ballen.

Hij schreef hierover:

De jongleervergelijking maakt het mogelijk om de duur van een mogelijke periode te berekenen (de tijd tussen twee ballen die door een hand geworpen worden) voor een gegeven type van uniform gejongleer en een gegeven vluchttijd. Een jongleur kan deze periode aanpassen — waarbij de hoogte van zijn worpen hetzelfde blijft — door de verblijftijd te verlengen (om de periode langer te maken) of te verkorten (om de periode korter te maken). Het totale wiskundige bereik dat beschikbaar is voor een gegeven vluchttijd wordt bekomen door in de jongleervergelijking $$D = 0$$ te stellen voor een minimaal bereik en $$V = 0$$ voor een maximaal bereik. De verhouding van deze twee grenzen is onafhankelijk van de vluchttijd en hangt enkel af van het aantal ballen en het aantal handen.

Om verblijftijden te meten bouwde Shannon een "jugglometer". Hierbij droeg een jongleur een koperen gaas over zijn vingers en jongleerde met lacrosseballen die met aluminiumfolie bedekt waren. Het vangen van de bal sloot een stroomkring tussen de vingers waardoor een klok gestart werd.

Voorlopige resultaten van de tests met een aantal jongleurs geven aan dat tijdens het jongleren de lege tijd normaal gezien kleiner is dan de verblijftijd, waarbij $$V$$ in onze metingen varieert van vijftig tot zeventig procent van $$D$$.

Shannon merkte op dat jongleren extreem veel moeilijker wordt naarmate het aantal ballen toeneemt. Hij werkte een waterdichte oplossing uit voor de vergelijking, althans in theorie. Een lichtstraal die vertrekt vanuit het brandpunt van een ellips wordt gereflecteerd naar het andere brandpunt. Als de ellips gedraaid wordt rond haar hoofdas, ontstaat daardoor een eivormige schil met twee brandpunten. Als een jongleur zich nu opstelt met één hand in elk brandpunt, dan zal een bal die in om het even welke richting geworpen worden uit elk van beide handen, botsen tegen de schil en in de andere hand terechtkomen!

Opgave

Als voor een lineaire vergelijking met $$n \in \mathbb{N}$$ parameters de waarden van $$n - 1$$ parameters gekend zijn (met $$n \geq 2$$), dan kan de waarde van de ontbrekende parameter onmiddellijk berekend worden op basis van de vergelijking. In deze opgave passen we dit toe voor de jongleervergelijking.

De parameters van een vergelijking stellen we voor als een container van strings (een string, een lijst, een tuple of een verzameling), waarbij elke string bestaat uit een geldige parameternaam voor een functie in Python (daarvoor gelden dezelfde regels als voor variabelen: namen bestaan uit letters, cijfers en underscores en beginnen niet met een cijfer). Daarbij geldt ook dat de namen van alle parameters verschillend moeten zijn. Gevraagd wordt:

Voorbeeld

>>> ontbrekende_parameter({'F':1.2, 'D':0.6, 'H':2, 'B':4}, 'FDVBH')
'V'
>>> ontbrekende_parameter({'F':1.2, 'D':0.6, 'H':2, 'X':4}, 'FDVBH')
Traceback (most recent call last):
AssertionError: ongeldige parameters
>>> ontbrekende_parameter({'F':1.2, 'D':0.6, 'H':2}, 'FDVBH')
Traceback (most recent call last):
AssertionError: ongeldige parameters

>>> jongleren({'F':1.2, 'D':0.6, 'H':2, 'B':4})
{'F': 1.2, 'D': 0.6, 'B': 4.0, 'V': 0.3, 'H': 2.0}
>>> jongleren({'D': 0.6, 'B': 4, 'V': 0.3, 'H': 2})
{'D': 0.6, 'V': 0.3, 'F': 1.2, 'H': 2.0, 'B': 4.0}
>>> jongleren({'F':1.2, 'D':0.6, 'H':2, 'X':4})
Traceback (most recent call last):
AssertionError: ongeldige parameters

>>> jongleur(F=1.2, D=0.6, H=2, B=4)
{'F': 1.2, 'D': 0.6, 'B': 4.0, 'V': 0.3, 'H': 2.0}
>>> jongleur(D=0.6, B=4, V=0.3, H=2)
{'D': 0.6, 'V': 0.3, 'F': 1.2, 'H': 2.0, 'B': 4.0}
>>> jongleur(F=1.2, D=0.6, H=2, X=4)
Traceback (most recent call last):
AssertionError: ongeldige parameters

Epiloog

De vader van de informatietheorie zou dit jaar honderd geworden zijn. Tijd dus om — letter en figuurlijk — een portret te schilderen van de wiskundige Claude Shannon.

Claude Shannon
Claude Shannon (1916-2001) — de vader van de informatietheorie — zou dit jaar honderd zijn geworden.Ter gelegenheid daarvan schilderde Jan Hein van Dierendonck dit portret van de wiskundige Claude Shannon.

Een jonglerende Claude Elwood Shannon rijdt in de jaren veertig op een eenwieler door de eindeloze gangen van Bell Labs, een onderzoekslaboratorium voor telecommunicatie ten zuiden van New York. Wellicht brengt dit jonglerend balanceren zijn geniale brein in de juiste toestand om op een originele manier naar complexe problemen te kijken en de formules te bedenken die de aanzet geven tot het digitale tijdperk.

Als 21-jarige masterstudent aan het befaamde Massachussetts Institute of Technology (MIT) schrijft Shannon de misschien wel meest invloedrijke scriptie ooit. Hierin legt hij het verband tussen de logische bewerkingen van de wiskundige George Boole en elektronische schakelingen. Het vormt de basis voor het ontwerp van geïntegreerde schakelingen en digitale computers.

Als afgestudeerde wiskundige en elektronicus werkt hij aan wiskundige cryptografie, de basis voor informatiebeveiliging waardoor we veilig kunnen pinnen en kopen via het Internet. Hij werkt ook aan een theoretisch kader dat in 1948 leidt tot een baanbrekende publicatie over datacompressie en communicatie in aanwezigheid van ruis: de informatietheorie. Sinds die dag is informatie iets waaraan je kan rekenen met als eenheid de bit. Of het nu gaat om beeld, tekst of geluid: zet alles om in enen en nullen en verwijder alle overbodige informatie en ruis. Dit heeft onze wereld totaal veranderd. Zonder Shannons informatietheorie was je smartphone niet smart.

Als professor in de elektronica knutselt Shannon het liefste aan zijn talloze speelse projecten, zoals mechanische jongleerrobots, een computer die in Romeinse cijfers rekent en een telkens te veranderen doolhof waarin een magnetische speelgoedmuis (Theseus) de gevonden kortste routes feilloos lijk te onthouden, een voorzichtige aanzet tot kunstmatige intelligentie. Ook verzamelt hij het bewijs voor zijn jongleervergelijking: $$H(F + D) = B(V + D)$$, ofwel het aantal handen ($$H$$) vermenigvuldigd met de som van de tijd dat de bal in de lucht blijft ($$F$$) en in de hand ($$D$$) is in balans met het aantal ballen ($$B$$) vermenigvuldigd met de som van de tijd dat de hand leeg is ($$V$$) en een bal in de hand blijft ($$D$$).

Shannon is wars van roem en blijft daardoor wellicht onbekend bij het grote publiek. Dat hij geen Nobelprijs krijgt, komt omdat zijn vakgebied daar nu eenmaal buiten valt. Maar in 1985 is hij wel de allereerste winnaar van de Japanse equivalent daarvan, de prestigieuze Kyoto Prize. Dit jaar zou hij honderd geworden zijn.

Bronnen