Exercices sur les algorithmes et les structures de données, Exercices de Algorithmique et programmation d'applications
Christophe
Christophe28 February 2014

Exercices sur les algorithmes et les structures de données, Exercices de Algorithmique et programmation d'applications

PDF (1.3 MB)
3 pages
305Numéro de visites
Description
Exercices de mathématique sur les algorithmes et les structures de données. Les principaux thèmes abordés sont les suivants: exercices, Algorithme glouton, Barèrne envisagé.
20points
Points de téléchargement necessaire pour télécharger
ce document
Télécharger le document

Enseirb, Filière Electronique, Semestre 1 Algorithmes et Structures de Données

Epreuve proposée par Robert Cori

20 .janvier 2008, durée t heure 30

Le polycopi.é, les notes d,e cou,rs et d,e traaau,r dirigés son,t o,u,torisées, à I'erclu,sion d,e tout autre docu,ment.

Exercice 1 : Algorithme glouton. Barème enuisagé : 10 po'ints

On s'interesse au problème suivant : afin de réaliser un produit une entreprise doit acquerir tous les objets d'un ensemble de n éléments A: {et,€2,...,€n}, ces ob.iets ne sont pas vendus séparément mais par des paquets chaque paquet constituant un sous- ensembie St de E.

Chacun de ces paquets a un coût c.r et on doit déterminer le coût minimal permettant d'acquérir tous les objets. Un exemple est le suivant :

Sr : {1,2},Sr: {3,4},,5.: {1,3,4},Sa: {1,4}, Ss: {2,4}

avec ies coûts :

cr : 5rc2 : 3rcJ : 5, c4 : 4, cs : 2

Plusieurs solutions sont possibles par exemple :

- Acquérir ,Sr et Sz dont le coût total est 8 - Acquérir',9r et 53 de coût 10 - Acquérir Sr, S+ et ,S5 de coût 9 - Mais la meilleure solution consiste à retenir ^9s, et .9s de coût 7. Un premier aigorithme glouton consiste à classer les paquets par coûts moyens crois-

sants; le coût moyen d'un sous-ensemble ,S; est le quotient de son coût par son nombre n; d'éléments. On pose ainsi uo : f.Par cet algorithme on retient d'abord l'ensemble St tel eue u; est minimum, puis à chaque étape on retient un nouvel ensemble ayant la plus petite valeur de z1 parmi ceux qui n'ont pas été retenus et ceci jusqu'à obtenir que chaque e, soit dans trn ,9, retenu.

Question 1. Quels sont les sous-ensembles retenus par l'algorithme glouton dans i'exemple considéré plus haut ? Cet algorithme glouton donne-t-il I'optimum ?

Question 2. On suppose que les ensembles ,S; sont donnés par un tableau (noté appartient) à deux indices et à valeurs booléennes. Ainsi appart ient t j I til est égal à true si et seule- ment si l'élément e3 appartient à I'ensemble Sr. On vous demande d'écrire un algorithme détaillé du calcul du tableau nb tel que nbIi] soit Ie nombre d'éléments de 1'ensemble S;.

On modifie i'algorithme glouton de façon à ne pas tenir compte au cours des étapes des éléments déjà acquis. Ainsi après avoir sélectionné un ,Si, on recalcule le coût moven de chaque ensemble ,S; en ne tenant compte que des éléments qui n'appartiennent pas à un ^9s dé.jà retenu. On pose alors

où nl est le nombre d'éléments de ,S, qui ne sont pas dans un ensemble dé.jà retenu.

Question 3. Appliquer le nouvel algorithme à I'exemple donné plus haut : volts donnerez la valeur des n'o une fois qu'un premier sous-ensemble a été retenu ainsi que ia vaieur des ud après la première étape. Qu'en est-il de la deuxième étape.

Question 4. Ecrire en détail I'algorithme reCalcule(nb, j)

qui modifie la valeur des nb[i] une fois retenu l'ensembie ,57 (d'indice j), en utilisant le tableau appartient.

Question 5. Donner un exemple pour lequel ce nouvel algorithme ne donne pas le résultat optimal.

C,;

Tlt.

Exercice 2 Barèrne enu'isagé : 10 points

On se propose de calculer une plus longue sous-suite croissante d'une suite de nombres

en utilisant des techniques inspirées de la proglammation dynamique.

Pour ceci on commence par un algorithme simple qui sera utilisé par la suite.

Question 1. Soit u un tableau de n nombres entiers (u[0J, u[1], , u[n-11)tous distincts. On vous demande d'écrire en détail la fonction precedent(i) (où i est un indice compris entre 0 et n-1), dont le résultat est j, indice de l'élément du tableau situé avant u[i] inférieur ou égal à u[i] et Ie plus proche de lui. Le résultat doit êire -1 si tous les élements situés avant u[i] lui sont supérieurs. Ainsi on doit avoir (si ulil = j

, 1 {\est drnerenï oe -l I : : . I utjl < u[i] u[k] > u[i] Pourj < k < i

Par exemple, pour Ie tableau 6, 2, 5, 4, g, 7, B on au[3] - 4, ainsi precedent(3) = 1,caru[1] = 214etut2l = 5 ) 4.Onaaussiprecedent(1) = -1.

Question 2. Une sous-suite croissante d'une suite 26, L17,. . . ?r'-1 €St donnée pàr ui,ui,z,. . . ,utp tels que

it f iz...lLp uit 11J;" 1...luio

par exemple2,5,9 est une sous-suite croissante de lasuite considérée à la Question l mais ce n'est pas la plus longue car 2,5, 7, B est plus longue.

On se propose de donner un algorii,hme qui calcule une sous-suite de longlteur maxi-

male. Tout d'abord on calcule cette longueur ; pouï cela on note ti la longueur de la plus longue sous-suite croissante dont le dernier élément €st u;, quelle est la valeur de li si precedent(j-) - - t? On suppose calculé li, quelle est la valeur de l; si precedent(i) = j? {,r : 1T "J "r t: ,' rri :ç '" I ':l

Question 3. Donner un algorithme qui calcule les l; en utilisant la fonction precedent que vous avez donné à Ia Question 1.

Question 4. Comment compléter I'algorihme précédent afin qu'il affiche une suiie de lonsueur maximale ?

commentaires (0)
Aucun commentaire n'a été pas fait
Écrire ton premier commentaire
Ceci c'est un aperçu avant impression
Chercher dans l'extrait du document
Docsity n'est pas optimisée pour le navigateur que vous utilisez. Passez à Google Chrome, Firefox, Internet Explorer ou Safari 9+! Téléchargez Google Chrome