Voy a resumir brevemente un bosquejo de un argumento adversario.
Considere su algoritmo de selección jugando contra un oponente que llamaremos adversario. El objetivo del adversario es proporcionar una entrada X para su algoritmo que maximice el número de operaciones de comparación realizadas por su algoritmo. De hecho, su algoritmo puede verse como un árbol de comparación, en el que una ruta corresponde a un orden parcial. Cuando el algoritmo le pregunta al adversario sobre un par ( x , y) de elementos, el adversario devuelve x < y o y< x . Las respuestas adversarias nunca pueden contradecir los resultados anteriores.
Suponga que el k -ésimo elemento más grande es X∗ : considerando el orden parcial asociado a cualquier hoja del árbol de comparación, entonces X∗ debe ser comparable con cualquier otro elemento para que el algoritmo sea correcto, de modo que el algoritmo debe tener hizo al menos una comparación ( y, z) ∀ y≠ x∗ cuyo resultado es y< z≤ x∗ o X∗≤ z< y . Llame a tal comparación crucial para un elemento y. Obviamente, el adversario quiere maximizar el número de comparaciones no cruciales realizadas por su algoritmo.
Sea L el conjunto de k - 1 elementos más grandes; su algoritmo necesita identificar correctamente todos los elementos en L y también el elemento más grande en X∖ L , es decir, X∗ . Observe que cada elemento en X∖ L ha perdido al menos una comparación crucial. Ahora, el adversario tiene una estrategia que obliga a cada uno de los elementos k - 1 en L a ganar al menos ⌈ lgnortek - 1⌉comparaciones, ninguno de los cuales es crucial paraX∖ L. Agregando lasn - kcomparaciones crucialesrestantesparaX∖ Lse obtiene el límite inferior. Para más detalles, lea lo siguiente, excelente,señalaJeff Erikson.
crucial comparison for $y$