Il solito algoritmo semplice per trovare l'elemento mediano in una matrice di numeri è:
- Campione di elementi da con sostituzione in
- Ordina e trovare il rango elementi e di
- Verificare che ed sono su lati opposti del mediano e che ci sono al massimo elementi in tra ed per una costante appropriata . Fallire se ciò non accade.
- Altrimenti, trova la mediana ordinando gli elementi di tra e
Non è difficile vedere che questo funziona in tempo lineare e che ha successo con alta probabilità. (Tutti i cattivi eventi sono grandi deviazioni dall'aspettativa di un binomio.)
Un algoritmo alternativo per lo stesso problema, che è più naturale insegnare agli studenti che hanno visto l'ordinamento rapido, è quello descritto qui: Selezione casuale
È anche facile vedere che questo ha un tempo di esecuzione previsto lineare: supponiamo che un "round" sia una sequenza di chiamate ricorsive che termina quando si dà una divisione 1 / 4-3 / 4, quindi osservare che la lunghezza prevista di un round è al massimo 2. (Nel primo sorteggio di un round, la probabilità di ottenere una buona divisione è 1/2 e poi dopo effettivamente aumenta, poiché l'algoritmo è stato descritto in modo che la lunghezza del round sia dominata da una variabile geometrica casuale).
Quindi ora la domanda:
È possibile dimostrare che la selezione randomizzata viene eseguita in tempo lineare con alta probabilità?
Abbiamo round e ogni round ha lunghezza almeno con probabilità al massimo , quindi un limite di unione indica che il tempo di esecuzione è con probabilità .
Questo è un po 'insoddisfacente, ma in realtà è la verità?