Risposte:
Descriverò brevemente uno schizzo di una discussione avversaria.
Considera il tuo algoritmo di selezione che gioca contro un avversario che chiameremo avversario. Lo scopo dell'avversario è fornire un input per il tuo algoritmo che massimizzi il numero di operazioni di confronto eseguite dal tuo algoritmo. In effetti, il tuo algoritmo può essere visto come un albero di confronto, in cui un percorso corrisponde a un ordine parziale. Quando l'algoritmo chiede all'avversario di una coppia di elementi, l'avversario restituisce oppure . Le risposte dell'avversario non possono mai contraddire i risultati precedenti.
Supponiamo che l' elemento -esimo più grande sia : considerando l'ordine parziale associato a qualsiasi foglia dell'albero di confronto, allora deve essere comparabile con ogni altro elemento affinché l'algoritmo sia corretto, in modo che l'algoritmo sia corretto deve aver effettuato almeno un confronto cui risultato è o o . Chiama un simile confronto cruciale per un elemento . Ovviamente, l'avversario vuole massimizzare il numero di confronti non cruciali effettuati dal tuo algoritmo.
Sia l'insieme di elementi più grandi; il tuo algoritmo deve identificare correttamente tutti gli elementi in e anche l'elemento più grande in , ovvero . Osserva che ogni elemento in ha perso almeno un confronto cruciale. Ora, l'avversario ha una strategia che obbliga ciascuno dei elementi in a vincere almeno confronti, nessuno di che è cruciale per . Aggiungendo i rimanenti confronti cruciali perottieni il limite inferiore. Per i dettagli, leggi le seguenti, eccellenti note di Jeff Erikson .
crucial comparison for $y$
: i confronti dove o and è l'obiettivo elemento. Che cosa succede se non conosciamo la relazione tra e quando vengono effettuati questi confronti? Abbiamo un oracolo qui? O siamo onniscienti con le informazioni complete (anche le informazioni future nella foglia)?