Bonjour,
Je me suis penché sur le problème de la célébrité et sa solution en 2N tests.
Pour ceux qui ne connaîtraient pas ce problème, il peut s'énoncer comme ça :
Soit un ensemble de N personnes parmi lesquelles figure peut-être une célébrité. Une célébrité est défini comme étant une personne que tout le monde connaît mais qui ne connaît personne.
On peut représenter ce problème sous forme d'une matrice NxN remplie comme suit. Si la personne de la j-eme colonne connaît la personne de la i-eme ligne, alors l'élément d'indice (i, j) est un 1, sinon c'est un 0.
Par exemple :La personne numéro 2 connaît la personne numéro 1 mais ne connaît pas la personne numéro 3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 1 2 3 4 5 1 0, 1, 1, 0, 0 2 1, 0, 1, 0, 0 3 0, 0, 1, 0, 0 4 1, 1, 1, 1, 1 5 1, 1, 1, 0, 1
Chercher la célébrité (elle est forcément unique) revient à chercher dans la matrice un n tel que la n-ième ligne soit remplie de 1 et la n-ième colonne remplie de 0. (Bien évidemment sans s'occuper de savoir si on se connaît soi-même.)
Notre prof nous a indiquer comment procéder pour trouver la célébrité avec un maximum de 2N questions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Soient A et B deux personnes prises au hasard dans la foule Si A connaît B alors A n'est pas la célébrité sinon Si B connaît A alors B n'est pas la célébrité sinon A n'est pas la célébrité fin si fin si
C'est là que commencent mes problèmes :
Si j'ai bien compris, à chaque itération on élimine une des deux personnes. Mais je ne comprend pas comment cet algorithme peut garantir qu'une fois terminé la personne restante est bien la célébrité sachant qu'on est pas sûr qu'il y ait une célébrité dans l'ensemble.
De plus je ne comprend pas pourquoi la deuxième question est indispensable car si A connait B, alors A n'est pas la célébrité, mais si A ne connait pas B, alors B n'est pas la célébrité.
Et aussi, je ne vois pas comment on peut peut-être trouver la célébrité en moins de 2N tests puisque à supposer qu'on tombe directement sur la célébrité, il faudra dans le pire des cas 2N tests pour vérifier qu'on est bien tombé sur la célébrité.
J'aimerais comprendre où mon raisonnement est faux.
Merci d'avance
Celelibi
Partager