Recherche de l’élément majoritaire

Page 1 sur 1Lecteur de document UniversityLib

Recherche de l’élément majoritaire

Algorithmique avancée, Complexité des algorithmes · notes

Voir tous les documents en programmation

TD d’algorithmique avancée

TD 4 : recherche de l’élément majoritaire

Jean-Michel Dischler et Frédéric Vivien

Nous nous intéressons à un tableau A de n éléments, n étant supposé être une puissance de deux. Nous

supposons également que la seule opération à notre disposition nous permet de vérifier si deux éléments sont

ou non égaux. Un élément x de A est dit majoritaire si et seulement si A contient strictement plus de n/2

occurrences de x. Nous nous intéresserons à la complexité au pire.

Algorithme na¨ıf

Publicité

1. Écrivez un algorithme qui calcule le nombre d’occurrences d’une valeur x présentes entre les indices i

et j d’un tableau A.

2. Quelle est la complexité de cet algorithme ?

3. Au moyen de l’algorithme précédent, écrivez un algorithme Majoritaire qui vérifie si un tableau A

contient un élément majoritaire.

4. Quelle est la complexité de cet algorithme ?

Premier algorithme « diviser pour régner »

1. Proposez un algorithme Majoritaire construit suivant le paradigme « diviser pour régner ». Cet

Publicité

algorithme divisera en deux le tableau A sur lequel il travaille. Il renverra le couple (Vrai, x) si le

tableau A contient un élément majoritaire (x étant cet élément) et renverra le couple (Faux, 0) si le

tableau A ne contient pas d’élément majoritaire.

2. Quelle est la complexité de cet algorithme ?

Deuxième algorithme « diviser pour régner »

1. Écrivez un algorithme construit suivant le paradigme « diviser pour régner », prenant en entrée un

tableau A —qu’il divisera en deux— et possédant la propriété suivante :

– soit cet algorithme nous garantit que le tableau A ne contient pas d’élément majoritaire ;

Publicité

– soit cet algorithme nous renvoie un élément x et un entier cx > n/2 tels que x apparaisse au plus cx

fois dans A et que tout autre élément de A apparaisse au plus n − cx fois dans A.

2. Quelle est la complexité de cet algorithme ?

3. À partir de l’algorithme précédent, écrivez un algorithme Majoritaire qui vérifie si un tableau A

contient un élément majoritaire.

4. Quelle est la complexité de cet algorithme ?