Vou esboçar brevemente um esboço de um argumento adversário.
Considere o seu algoritmo de seleção jogando contra um oponente que chamaremos de adversário. O objetivo do adversário é fornecer uma entrada X para o seu algoritmo que maximize o número de operações de comparação realizadas pelo seu algoritmo. De fato, seu algoritmo pode ser visto como uma árvore de comparação, na qual um caminho corresponde a uma ordem parcial. Quando o algoritmo pergunta ao adversário sobre um par ( x , y) de elementos, o adversário retorna x < y ou y< x . As respostas do adversário nunca podem contradizer resultados anteriores.
Suponha que o k ésimo elemento maior seja x∗ : considerando a ordem parcial associada a qualquer folha da árvore de comparação, então x∗ deve ser comparável a qualquer outro elemento para que o algoritmo esteja correto, de modo que o algoritmo deve ter fez pelo menos uma comparação ( y, z) ∀ y≠ x∗ cujo resultado é y< z≤ x∗ ou x∗≤ z< y . Chame essa comparação de crucial para um elemento y. Obviamente, o adversário deseja maximizar o número de comparações não cruciais feitas pelo seu algoritmo.
Seja eu o conjunto de k - 1 maiores elementos; seu algoritmo precisa identificar corretamente todos os elementos em eu e também o maior elemento em X∖ L , ou seja, x∗ . Observe que cada elemento em X∖ L perdeu pelo menos uma comparação crucial. Agora, o adversário tem uma estratégia que força cada um dos elementos k - 1 em eu a vencer pelo menos ⌈ lgnk - 1⌉comparações, nenhum dos quais é crucial paraX∖ L. Adicionando ascomparações cruciaisn - krestantesparaX∖ Lvocê obtém o limite inferior. Para detalhes, leia o seguinte, excelente,observaJeff Erikson.
crucial comparison for $y$