Het 12 munten probleem




Een nieuw en meer uitgebreid artikel vind je hier: www.davdata.nl/munten.html

Inleiding.
De 12 munten in een zakje zien er hetzelfde uit, maar misschien is er een
lichter of zwaarder dan de 11 andere. Hoeveel wegingen met een balans zijn
nodig om die lichtere of zwaardere munt te vinden? En hoe pak je zoiets aan?

Bij elke weging zijn er drie mogelijkheden:
1. de linkerschaal van de balans zakt omlaag. Noem dit L.
2. de balans blijft in evenwicht. Noem dit =.
3. de rechterschaal van de balans zakt omlaag. Noem dit R.

Het resultaat van elke weging kan dus met L,= of R worden aangeduid.
Een serie wegingen levert een code op, bijvoorbeeld L=R bij 3 wegingen:
bij de eerste weging gaat de linkerschaal omlaag, bij de tweede is er evenwicht
en bij de derde weging gaat de rechterschaal omlaag.

Bij een code hoort een bepaalde afwijkende (valse) munt.
De aanpak is als volgt:
- schrijf in een tabel alle mogelijke codes op
- koppel een code aan een afwijkende munt
- bepaal aan de hand van de codes de inhoud van de schalen per weging.

De code == (alleen = tekens) hoort natuurlijk bij "alle munten gelijk".
De code LLR hoort bij RRL.
Als LLR betekent "munt 3 zwaarder" dan is RRL uiteraard "munt 3 lichter".

Eerst eens 2 wegingen bekijken.
We koppelen de munten zonder nadenken aan de codes en zien wel.
De volgende resultaten zijn mogelijk:

weging1weging2betekenis
LLmunt 1 zwaarder
L=munt 2 zwaarder
LRmunt 3 zwaarder
=Lmunt 4 zwaarder
==munten gelijk
=Rmunt 4 lichter
RLmunt 3 lichter
R=munt 2 lichter
RRmunt 1 lichter


Twee wegingen leveren 3 x 3 = 9 codes op.
Alle munten gelijk is 1 mogelijkheid.
Blijven over 8 mogelijkheden voor een lichtere of zwaardere munt,
zodat het lijkt alsof met twee wegingen een uit 8 / 2 = 4 munten is te
selecteren.
Koppelen we de uitslag "LL" aan munt1 zwaarder, dan volgt dat de
uitslag "RR" betekent: munt1 lichter.

We bepalen nu aan de hand van de tabel welke munten per weging in het linker-
of rechter schaaltje van de balans moeten liggen.
De munten nummeren we 1..4.
weginglinkerschaalrechterschaal
11 2 3- - -
21 - -3 4 -

Bij zowel weging 1 als 2 moet dan munt1 op het linker schaaltje liggen.
Munt 2 moet bij de eerste weging links liggen en mag bij de tweede weging
niet meedoen.
Munt 3 moet bij de eerste weging links liggen en bij de tweede weging rechts.
Munt 4 mag bij de eerste weging niet meedoen en ligt rechts bij weging 2.

In de tabel hierboven zien we twee problemen: Beschouw in de code-tabel hierboven de regels LL .. =L .
Dat zijn (3*3 - 1)/2 = 4 regels.
Elke regel hoort bij een mogelijk afwijkende munt.
Een letter (L,R) betekent, dat die munt aan de weging moet meedoen.
Een = teken wil zeggen, dat die munt niet aan de weging mag meedoen.

We tellen 3 letters per kolom over de beschouwde 4 regels.
En 3 munten kunnen niet gelijk over de schaaltjes worden verdeeld.
We moeten per kolom van 1 letter afzien.
Dat kan, door de codes LL en RR niet te gebruiken.

De code-tabel passen we aan:
(de munten zijn nog steeds zonder nadenken aan de codes gekoppeld)

weging1weging2betekenis
L=munt 1 zwaarder
LRmunt 2 zwaarder
=Lmunt 3 zwaarder
==munten gelijk
=Rmunt 3 lichter
RLmunt 2 lichter
R=munt 1 lichter


De plaatsing van de munten wordt nu:
weginglinkerschaalrechterschaal
11 2 - -
23 -2 -

Het aantal munten klopt, maar de verdelening over de schaaltjes is nog ongelijk.
Dat is te verhelpen door de betekenis van de codes wat aan te passen.
Om munt 1 bij de eerste weging in het rechter schaaltje te krijgen, moet de
betekenis van code L= worden gewijzigd van "munt-1 zwaarder" in "munt-1 lichter".
(code R= verandert dus mee)

De code tabel wordt nu:

weging1weging2betekenis
L=munt 1 lichter
LRmunt 2 zwaarder
=Lmunt 3 zwaarder
==munten gelijk
=Rmunt 3 lichter
RLmunt 2 lichter
R=munt 1 zwaarder


De plaatsing wordt:

weginglinkerschaalrechterschaal
12 1
23 2

Nu is de zaak in orde.
Aan de uitslag van twee wegingen is in de code-tabel af te lezen of er een munt afwijkt.
Met twee wegingen zijn dus 3 munten te testen.

Het algemene geval.
W wegingen leveren 3W verschillende codes.
Daarvan is er een "=....=" , voor "alle munten gelijk".
Blijft over 3w - 1 codes voor een ongelijke munt.

De tekens L,=,R komen in de codes evenvaak voor.
We beschouwen in de code-tabel de regels LL..LL tot en met ==...=L.
Voorbij code ==..== komen alleen symmetrische gevallen voor (licht - zwaar verwisseld).

In kolom 1 staan op deze regels 1/3 * 3w letters L.
Elke letter betekent, dat die munt aan de weging moet deelnemen.
Dat kan niet, want het is een oneven aantal.
Daarom laten we codes LL..LL en RR..RR niet meedoen.
Er blijven nu 3w - 3 codes over om een lichtere of zwaardere munt aan te duiden.

Daarom kunnen bij w wegingen m = (3w - 3) / 2 munten worden getest.

De volgende tabel is het gevolg van deze formule:

aantal wegingenaantal munten
23
312
439
5120


Vraag.
Stel eens, dat we over een normale munt beschikken, die aan elke weging
mag worden toegevoegd.
Het probleem van een oneven aantal munten bestaat dan niet meer.
Hoe zou de formule m = .... dan worden?