• Aucun résultat trouvé

TD1.10 – Diviser pour Régner / Algorithmes gloutons

N/A
N/A
Protected

Academic year: 2022

Partager "TD1.10 – Diviser pour Régner / Algorithmes gloutons"

Copied!
3
0
0

Texte intégral

(1)

TD1.10 – Diviser pour Régner / Algorithmes gloutons

Objectifs

À la fin de cette séance, vous devriez être capable de :

— utiliser la méthodeDiviser pour Régner pour résoudre un problème

— étudier un algorithme glouton

Exercice 1 : Majoritaire

Définition :un élémentxest ditmajoritairedans un multiensembleEdenéléments, si et seulement si le nombre d’occurences dexdansEest strictement supérieur àn/2.

Propriétés :

— il y aau plus un élément majoritaire (s’en convaincre).

SiE=E1∪E2 avecE1etE2 de taillen0 (sin= 2×n0) ou de taillesn0 etn0+ 1sin= 2×n0+ 1, alors :

— si xest majoritaire dansE, alorsxest majoritaire dansE1ou dansE2.

— si xest majoritaire dansE1 et dansE2, alors il est majoritaire dansE.

(le démontrer).

Dans la suite E est un tableau indicé de1à n.

1. Algorithme naïf

existe_majoritaire <- faux pour i de 1 à n

c <- 0 j <- 1

tant que j <=n et non(existe_majoritaire) faire si E[j]=E[i] alors c <- c+1

si (c> n/2) alors

existe_majoritaire <- vrai majo <- E[i]

j <- j+1

Quel est le coût au mieux et au pire de cet algorithme ? 2. Diviser pour régner

En explorant récursivement les deux moitiés de tableau, écrivez une procéduremajoritaire(i,j) qui cherche s’il existe un élément majoritaire dansE[i..j]. Elle retourne :

—(-, 0)s’il n’y a pas de majoritaire dansE[i..j].

—(x, c)sixest majoritaire avec un nombre d’occurrences égal àc.

Étudiez sa complexité.

3. Pour aller (un tout petit peu) plus loin Démontrez les propriétés suivantes :

— si une seule des “moitiés” fournit un majoritaire, seul cet élément peut être majoritaire dans le tableau complet.

— si les deux appels récursifs fournissent des majoritaires, qu’ils sont différents, avec un nombre d’occurences différent : le seul qui puisse être majoriatire est celui qui a la plus grand nombre d’occurences.

— dans le cas où n est une puissance de 2, et donc les moitiés toujours de taille égale, s’il y a deux majoritaires différents avec le mêmne nombre d’occurences, alors il ne peut y avoir de majoritaire dans le tableau complet.

En vous plaçant dans le cas où la taille du tableau est une puissance de 2, écrivez une nouvelle version de la fonctionmajoritairerécursive qui tienne compte de ces propriétés.

L3 Info – Algorithmique et analyse d’algorithmes 2021-2022 – 1/3

(2)

TD1.10 – Diviser pour Régner / Algorithmes gloutons

Exercice 2 :

Un algorithme glouton pour colorier un graphe :

— prendre les sommets dans un ordre quelconque

— attribuer à chaque sommet la plus petite couleur non utilisée par ses voisins déjà coloriés Combien de couleurs nécessite cet algorithme ?

Est-il optimal ?

L3 Info – Algorithmique et analyse d’algorithmes 2021-2022 – 2/3

(3)

TD1.10 – Diviser pour Régner / Algorithmes gloutons

Membres du groupe

Exercice 1 : Majoritaire

Diviser pour régner

En explorant récursivement les deux moitiés de tableau, écrivez une procédure majoritaire(i,j) qui cherche s’il existe un élément majoritaire dansE[i..j]. Elle retourne :

— (-, 0)s’il n’y a pas de majoritaire dansE[i..j].

— (x, c)sixest majoritaire avec un nombre d’occurrences égal àc.

Étudiez sa complexité.

L3 Info – Algorithmique et analyse d’algorithmes 2021-2022 – 3/3

Références

Documents relatifs

L’arborescence représentant un codage préfixe optimal possède Exactement |C| feuilles, une pour chaque lettre de l’alphabet, Et exactement |C| − 1 nœuds internes..

Ce nom risque de vous induire en erreur : si le tri par pivot est effecti- vement très rapide en pratique dans les meilleurs cas, il est en pratique délicat à mettre en œuvre si on

— dans le cas où n est une puissance de 2, et donc les moitiés toujours de taille égale, s’il y a deux majoritaires différents avec le mêmne nombre d’occurences, alors il ne peut

attribuer à chaque sommet la plus petite couleur non utilisée par ses voisins déjà coloriés Que penser de cet algorithme par rapport au précédent..

attribuer à chaque sommet la plus petite couleur non utilisée par ses voisins déjà coloriés Combien de couleurs nécessite cet algorithme?.

La figure 7 illustre les trois premiers appels récursifs de la fonction récursive multiply dont le code est présenté figure 2, avec pour paramètres x = 105 et y = 253 (pour des

(Tri rapide) Dans l'algorithme de tri rapide, on choisit récursivement un pivot, dans cet exercice le premier élément de la liste, et on place à sa gauche les éléments qui lui

De plus, chacun des couples de cordes issu de ces deux points et d'un troisième point du cercle forme un angle droit... On va ensuite s'intéresser aux différentes valeurs de d