Le volume III de The Art of Computer Programming de Knuth (chapitre 5, verset 3.2) comprend le tableau suivant répertoriant le nombre minimum exact de comparaisons nécessaires pour sélectionner le ème plus petit élément à partir d'un ensemble non trié de taille , pour tous les . Ce tableau, avec les expressions bien connues de forme fermée et , représente l' essentiel de l'état de l'art à partir de 1976 .n 1 ≤ t ≤ n ≤ 10 V 1 ( n ) = n - 1 V 2 ( n ) = n - 2 + ⌈ n / 2 ⌉
Des valeurs plus exactes de été calculées au cours des 36 dernières années? Je suis particulièrement intéressé par les valeurs exactes de , le nombre minimum de comparaisons nécessaires pour calculer la médiane.M ( n ) = V ⌈ n / 2 ⌉ ( n )
Comme le souligne @ MarkusBläser, le tableau de Knuth semble déjà intégrer des résultats plus récents de Bill Gasarch, Wayne Kelly et Bill Pugh ( Trouver le ième plus grand de n pour les petits i, n . SIGACT News 27 (2): 88-96, 1996 .)
Réponses:
Merci à @ MarkusBläser pour le plomb!
la source
Je me demande si cette information pourrait vous être utile. Malheureusement, il ne fournit aucune information supplémentaire à la question de ce message, mais répond plutôt à votre commentaire sur ce à quoi il servait (analyse des variantes de QuickSelect).
Ce résultat n'est pas rarement utilisé et constitue en particulier la base des algorithmes de "Adaptive Sampling for QuickSelect" de Martínez, Panario et Viola . Le point de départ de l'article est la médiane de trois QuickSelect, puis de se demander: est-il pertinent de choisir systématiquement la médiane, lorsque l'élément que nous recherchons a un rang relatif bien inférieur à n / 2 ou bien supérieur à n / 2 ?
En d'autres termes, supposons que vous recherchez le ème élément dans une liste de éléments, et que vous choisissez votre pivot parmi des clusters de éléments. Au lieu de prendre la médiane ( ), vous prendrez où . Ils montrent que cet algorithme peut, pour le bon choix de être pratiquement plus efficace que la variante médiane de trois.n m m / 2 α m α = k / n mk n m m/2 αm α=k/n m
la source