par nodjim » 05 Jan 2016, 09:09
Pour expliquer ce que j'ai avancé, voici le tableau suivant où:
-une ligne représente une bouteille. Elle comporte 60 bits.
-Un "1" est un verre rempli, un "0" un verre vide.
-Une colonne représente un testeur.
B1: 1100000...
B2: 1010000...
Si B1 et B2 empoisonnées, les malades seront les testeurs 1,2 et 3 (les 3 1ères colonnes). On ne peut distinguer les bouteilles empoisonnées qui si la "somme" des 2 B empoisonnées est unique. Une somme se fait bit par bit situés sur le même rang, avec 1+0, 0+1 et 1+1=1 et 0+0=0.
Soit
B1:1100000...
B2:1010000...
B3:1001000...
B4:1000100..
Toutes les paires exclues sont celles dont les 2 bits se trouvent dans les rangs 2 à 5, ce qui représente C(4,2)=6 paires exclues.
S'il y a 60 bits, le nombre de paires est C(60,2).
Le nombre de paires max, compte tenu des exclusions possibles, est :
60(k+C(k,2)) <= C(60,2)
On trouve k=7, soit 420 paires max.
Mais ce nombre n'est pas bon, car les exclusions sont parfois comptées 2 fois;
1100000
1010000
0110000 est exclu.
0100010
0010010
0110000 est exclu.
Et là ça se complique pour faire le bilan des redondances....
Sinon, quand on a rempli toutes les paires possibles, qui représentent des sommes avec 3 ou 4 "1", il est évident que tous les triplets ne sont pas représentés C(60,3) et encore moins tous les quadruplets C(60,4). Et il est possible de mettre des triplets pour des bouteilles là où les paires sont exclues:
B1:1100000
B2:1010000
B3:0110000 code exclu
B4:0110001 code autorisé (vis à vis de B1/B2)
Et quand on aura complété avec des triplets et des quadruplets, on pourra examiner les quintuplets, etc....