Le problème suivant est survenu lors de la recherche et il est étonnamment propre:
Vous avez une source de pièces. Chaque pièce a un biais, à savoir une probabilité qu'elle tombe sur la "tête". Pour chaque pièce indépendamment, il y a une probabilité 2/3 qu'elle ait un biais d'au moins 0,9, et avec le reste de la probabilité, son biais peut être n'importe quel nombre dans [0,1]. Vous ne connaissez pas les biais des pièces. Tout ce que vous pouvez faire à n'importe quelle étape est de lancer une pièce et d'observer le résultat.
Pour un n donné, votre tâche consiste à trouver une pièce avec un biais d'au moins 0,8 avec une probabilité d'au moins . Pouvez-vous faire cela en utilisant uniquement des lancers de pièces O (n)?
ds.algorithms
pr.probability
Dana Moshkovitz
la source
la source
Réponses:
Ce qui suit est un algorithme de lancerO(nlogn) assez simple .
Supposons que1−exp(−n) est la probabilité d'erreur que nous visons. Soit N une puissance de 2 comprise entre, disons, 100n et 200n (juste quelques temps constants assez grands n ). Nous maintenons un ensemble candidat de pièces de monnaie, C . Dans un premier temps , nous avons mis N pièces en C .
Maintenant, pouri=1,…,logN , procédez comme suit: C pour Di=2i1010 fois (juste une assez grande constante). N/2i avec la plupart des têtes.
Mélangez chaque pièce en
Gardez les pièces
La preuve est basée sur quelques bornes de Chernoff. L'idée principale est que nous divisons par deux le nombre de candidats à chaque fois et que nous pouvons ainsi nous permettre de lancer deux fois plus de pièces.
la source