L'algorithme simple habituel pour trouver l'élément médian dans un tableau de n nombres est:
- Echantillon des éléments de A , avec remplacement en B
- Triez et trouvez le rang | B | ± √ élémentsletrdeB
- Vérifier que et r sont de part et d'autre de la médiane de A et qu'il y a au plus C √ éléments dansAentreletrpour une constante appropriéeC>0. Échouez si cela ne se produit pas.
- Sinon, trouvez la médiane en triant les éléments de entre l et r
Il n'est pas difficile de voir que cela fonctionne en temps linéaire et qu'il réussit avec une forte probabilité. (Tous les mauvais événements sont des écarts importants par rapport à l'attente d'un binôme.)
Un algorithme alternatif pour le même problème, qui est plus naturel à enseigner aux élèves qui ont vu un tri rapide, est celui décrit ici: Sélection aléatoire
Il est également facile de voir que celui-ci a un temps d'exécution prévu linéaire: disons qu'un "round" est une séquence d'appels récursifs qui se termine lorsque l'on donne un fractionnement 1 / 4-3 / 4, puis observez que la longueur attendue de un tour est au maximum de 2. (Dans le premier tirage d'un tour, la probabilité d'obtenir un bon fractionnement est de 1/2, puis augmente en fait, comme l'algorithme a été décrit de sorte que la longueur du tour est dominée par une variable aléatoire géométrique.)
Alors maintenant, la question:
Est-il possible de montrer que la sélection aléatoire s'exécute en temps linéaire avec une forte probabilité?
C'est un peu insatisfaisant, mais est-ce vraiment la vérité?
Réponses:
la source