Supposons que nous ayons une boîte noire que nous pouvons interroger et réinitialiser. Lorsque nous réinitialisons , l'état de est défini sur un élément choisi uniformément au hasard dans l'ensemble où est fixe et connu pour donné . Pour interroger , un élément (la supposition) de est fourni, et la valeur renvoyée est . De plus, l'état f_S de f est réglé sur une valeur f_S '= f_S \ pm k , où k est sélectionné uniformément au hasard parmi
En faisant des suppositions uniformément aléatoires avec chaque requête, on s'attendrait à devoir faire suppositions avant d'obtenir , avec la variance (indiqué sans preuve).
Un algorithme peut-il être conçu pour faire mieux (c.-à-d. Faire moins de suppositions, éventuellement avec moins de variance dans le nombre de suppositions)? Que pourrait-il faire de mieux (c.-à-d. Qu'est-ce qu'un algorithme optimal et quelles sont ses performances)?
Une solution efficace à ce problème pourrait avoir d'importantes implications en termes de réduction des coûts pour tirer sur un lapin (confiné au saut sur une piste circulaire) dans une pièce sombre.
Réponses:
Tout d'abord, je suppose que par
tu veux dire
Sinon, il n'est pas tout à fait clair que est toujours valable et comment exactement se comporte.fS∈{0,...,n−1} fS±k
En utilisant cela, le problème se résume à "manquer autant que possible". Observez que plus nous tirons sur le lapin de près, plus le houblon qu'il fait est gros; dans le cas extrême, nous avons . Il en résulte un saut uniforme entre et , ce qui, fondamentalement, randomise à nouveau complètement la position du lapin. D'un autre côté, si nous manquons le plus mal possible - par un décalage de , le lapin ne bouge pas du tout (!) Et la boîte noire nous met à jour sur ce fait. Par conséquent, nous pouvons simplement nous retourner et tirer sur le lapin.fS−x=±1modn −(⌊n/2⌋±1) (⌊n/2⌋±1) fS−xmodn=⌊n/2⌋
Il nous reste à trouver une procédure pour manquer de plus en plus à chaque coup. Je propose une simple "recherche binaire". (Je vais commodément omettre l'arrondi.) Il se déroule approximativement comme suit:
Chaque étape a besoin de temps pour réussir et divise par deux l'espace de recherche, ce qui donne un nombre global de nombre d'étapes attendu.2=O(1) O(logn)
la source