Volumen III de Knuth de The Art of Computer Programming (capítulo 5, verso 3.2) incluye la siguiente tabla que enumera el exacto número mínimo de comparaciones requeridas para seleccionar el -ésimo elemento más pequeño de un conjunto sin ordenar de tamaño , para todos . Esta tabla, junto con las conocidas expresiones de forma cerrada y , representa la mayor parte del estado del arte a partir de 1976 .n 1 ≤ t ≤ n ≤ 10 V 1 ( n ) = n - 1 V 2 ( n ) = n - 2 + ⌈ n / 2 ⌉
¿Se han calculado más valores exactos de en los últimos 36 años? Estoy particularmente interesado en los valores exactos de , el número mínimo de comparaciones requeridas para calcular la mediana.M ( n ) = V ⌈ n / 2 ⌉ ( n )
Como señala @ MarkusBläser, la tabla de Knuth ya parece incorporar resultados más recientes de Bill Gasarch, Wayne Kelly y Bill Pugh ( Encontrando el i-ésimo más grande de n para los pequeños i, n . SIGACT News 27 (2): 88-96, 1996 .)
Respuestas:
Kenneth Oksanen ha publicado una tabla ampliada de valores hasta , basada en su propia búsqueda en la computadora . Okansen también proporciona descripciones de los árboles de comparación óptimos para la mayoría de los valores que informa. Aquí hay una captura de pantalla de su mesa:n=15
¡Gracias a @ MarkusBläser por el liderazgo!
fuente
Me pregunto si esta información podría serle útil. Desafortunadamente, no proporciona ninguna información adicional a la pregunta de esta publicación, sino que responde más bien a su comentario sobre para qué sirve (análisis de variantes de QuickSelect).
El número mínimo esperado de comparaciones, observado o es, por supuesto, significativamente más fácil de calcular (con la expectativa tomada uniformemente en todas las permutaciones), v t ( n ) v t ( n ) = n + minv(n,t) vt(n)
Este resultado no se usa con poca frecuencia y, en particular, es la base de los algoritmos en "Muestreo adaptativo para QuickSelect" de Martínez, Panario y Viola . El punto de partida del artículo es QuickSelect mediana de tres, y luego preguntar: ¿es pertinente elegir sistemáticamente la mediana, cuando el elemento que buscamos tiene un rango relativo mucho más bajo que n / 2 o mucho más alto que n / 2 ?
En otras palabras, suponga que está buscando el -ésimo elemento en una lista de elementos, y está eligiendo su pivote de los grupos de elementos. En lugar de tomar la mediana ( ), tomará donde . Muestran que este algoritmo puede, para la elección correcta de ser prácticamente más eficiente que la variante mediana de tres.k n m m/2 αm α=k/n m
fuente