On me donne n objets, et un ensemble de n permutations de ces n objets (sur n! Permutations totales). Il y a une vraie permutation sous-jacente, dont je sais qu'elle fait partie de l'ensemble des n permutations, mais je ne sais pas laquelle. Un oracle connaît cependant la véritable permutation. Pour trouver la vraie permutation, je suis autorisé à interroger l'oracle pour une comparaison par paire entre 2 objets (est un avant b dans la vraie permutation?).
Une stratégie naïve serait de faire une recherche binaire (poser la «bonne» question de comparaison par paire qui élimine la moitié des permutations à chaque étape), pour trouver la vraie permutation en log n étapes. Ma question est, cela peut-il toujours être fait? Ou puis-je trouver un ensemble de permutations contradictoires telles que les requêtes O (log n) ne suffisent pas.
Edit:
Exemple: disons que mes objets sont 1,2,3,4. L'ensemble des permutations est {1243, 2341, 1342, 3412}. Je ne connais pas la vraie permutation. Je demande "Est-ce que 2 avant 4 est dans la vraie permutation?". L'oracle revient oui. Je sais donc que c'est parmi les deux premières permutations. Je demande alors "Est-ce que 1 avant 3 est dans la vraie permutation?" pour trouver la vraie permutation.
Réponses:
Considérez l'ensemble suivant den ordres, que je donne pour n = 6 :
Si vous ne comparez jamaisje et i + 1 alors vous ne pouvez pas distinguer la permutation 1 par permutation i + 1 . Cela signifie que vous avez besoin d'au moinsn - 1 des comparaisons (ce n'est pas un argument, mais il peut être converti en un seul); c'est serré (pour cet exemple).
Permettez-moi également de mentionner deux articles bien connus dans le domaine:
Fredman a montré que s'il y aΓ de nombreuses commandes possibles, alors vous pouvez trouver la bonne en utilisant Journal2Γ + 2 n requêtes.
Kahn et Kim ont montré que si les commandes potentielles constituent toutes les commandes possibles prolongeant une commande partielle, alorsO ( logΓ ) les requêtes suffisent.
la source