Trouver un argmax approximatif en utilisant uniquement des requêtes max approximatives


10

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 nR S { 1 , , n } max i S v inv1,,vnRS{1,,n}maxiSvi

Ce problème est simple: nous pouvons utiliser la recherche binaire pour trouver l'argmax avec les requêtes O(logn) . ie Construire un arbre binaire complet avec n 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 n valeurs inconnues v1,,vn . Ceux-ci sont accessibles avec des requêtes dans lesquelles un ensemble S{1,,n} est spécifié et un échantillon de N(maxiSvi,1) est renvoyé. Le but est d'identifier i{1,,n} telle sorte que E[vi]maxivi1 utilisant le moins de requêtes possible. (L'attente est supérieure au choix de i , 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 )E[vi]maxiviO(logn)1O(log2n)O(log3n)

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 )O(log2n)Ω(log2n)O~(logn)Ω(1)0O(logn)


Qu'en est-il d'une recherche binaire qui à chaque niveau crée des paires de requêtes O (log n) (une pour le max du côté gauche, une pour le max du côté droit) et enregistre qui gagne. Ensuite, après O (log n) tours, l'algorithme procède récursivement du côté qui a "gagné" le plus de fois. Un bref calcul dans ma tête a semblé indiquer que cela fonctionnait avec une probabilité de dans le réglage où une entrée est et toutes les autres sont ... je pourrais être loin cependant. 2 011/nc20
daniello

@daniello Cela fonctionne quand il y a un écart entre la plus grande et la deuxième plus grande valeur. Le cas général semble cependant plus difficile.
Thomas

note à soi-même: lire toute la question avant de commenter
daniello

Réponses:


1

Commentaire étendu d'une idée ou deux vers une borne inférieure. Supposons que (bien que le meilleur choix puisse être différent), et que . Envisagez de dessiner l'entrée en choisissant une permutation uniforme de ces valeurs au hasard.{ v 1 , , v n } = { 1B=Θ(logn){v1,,vn}={1nB,,n1nB,B}

L'idée devrait être que si nous fixons les indices de toutes les valeurs à l'exception des valeurs et , alors nous devrions être en mesure de montrer la différence dans la probabilité de l'algorithme de choisir l'un par rapport à l'autre est très petite: La distance de variation entre les résultats des requêtes des algorithmes est très petite étant donné la distribution 50-50 sur les affectations de ces valeurs aux deux indices disponibles et les résultats de toute séquence de requêtes.n - 1Bn1nB

Cet argument est valable pour chaque paire de valeurs adjacentes, nous obtenons donc une chaîne de contraintes sur la probabilité que l'algorithme sélectionne les valeurs les plus élevées, les secondes les plus élevées, ... Cela donne une limite supérieure sur la valeur attendue de l'algorithme, nous définissons donc cette limite supérieure sur et voyons quel doit être le nombre de requêtes.B1

Je ne pourrais pas encore améliorer avec l'approche ci-dessus, mais je pense que vous pourriez obtenir si vous pouvez tirer parti du fait que les requêtes ne peuvent pas aider à plusieurs étapes à la fois. Autrement dit, si une requête change lorsque nous déplaçons la valeur la plus élevée vers un index différent, alors une de ces fois elle ne change pas lorsque nous déplaçons une autre valeur vers un index différent.( log n ) 2logn(logn)2

La confidentialité différentielle peut être utile pour l'une de ces étapes, par exemple, si nous ne pensons qu'au cas où nous échangeons l'emplacement des deux valeurs les plus élevées, la "sensibilité" de cette requête est simplement puis avancée la composition pourrait être utile.Bn

Désolé, c'est à moitié cuit, mais j'espère que cela peut être utile!


Je n'ai pas vraiment pensé aux bornes inférieures, car j'espère une borne supérieure. :) tient même dans le cas silencieux. Je pense que nous devrions être en mesure de prouver une limite inférieure . Ω ( log 2 n )Ω(logn)Ω(log2n)
Thomas

D'ACCORD. J'ai un croquis d'une borne inférieure , mais c'est un peu compliqué. Ω(log2n)
Thomas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.