Considérez le problème suivant.
Il existe valeurs inconnues . La tâche consiste à rechercher l'index du plus grand en utilisant uniquement les requêtes du formulaire suivant. Une requête est spécifiée par un ensemble et la réponse correspondante est . L'objectif est d'utiliser le moins de requêtes possible.v 1 , ⋯ , v n ∈ R S ⊆ { 1 , ⋯ , n } max i ∈ S v i
Ce problème est simple: nous pouvons utiliser la recherche binaire pour trouver l'argmax avec les requêtes . ie Construire un arbre binaire complet avec feuilles correspondant aux indices. Commencez à la racine et descendez jusqu'à une feuille comme suit. À chaque nœud, interrogez la valeur maximale dans les sous-arbres droit et gauche, puis déplacez-vous vers l'enfant sur le côté avec la réponse la plus large. En atteignant une feuille, sortez son index.
La version bruyante suivante de ce problème est apparue dans mes recherches.
Il existe valeurs inconnues . Ceux-ci sont accessibles avec des requêtes dans lesquelles un ensemble est spécifié et un échantillon de est renvoyé. Le but est d'identifier telle sorte que utilisant le moins de requêtes possible. (L'attente est supérieure au choix de , qui dépend à la fois des pièces de l'algorithme et des réponses de requête bruyantes.)
Supposons que nous essayions de résoudre ce problème en utilisant la même stratégie de recherche binaire qu'avant (mais avec des réponses bruyantes). Il est raisonnablement facile de montrer que cela permet d'atteindre et que cela est serré dans le pire des cas. Nous pouvons réduire l'erreur au souhaité en répétant chaque requête fois et en utilisant la moyenne (ce qui réduit la variance). Cela donne un algorithme utilisant des requêtes .1 O ( log 2 n ) O ( log 3 n )
Existe-t-il un meilleur algorithme? Je suppose que les requêtes suffisent. Et je crois que je peux prouver une limite inférieure . En outre, le problème devient facile - c'est-à-dire les requêtes via la recherche binaire - sous la promesse qu'il existe un écart entre la plus grande valeur et la deuxième plus grande valeur. Si cela peut vous aider, vous pouvez supposer que toutes les valeurs sont comprises entre et .Ω ( log 2 n ) ˜ O ( log n ) Ω ( 1 ) 0 O ( log n )