4-7 mai 2020
Licence Informatique - Semestre 4
ASD
DM1 - dur´ee de travail 0h45 - `a rendre pour le 4 mai 2020
Consignes de rendu :
Date : du lundi 4 mai 8h au jeudi 7 mai 2020 17h
Lieu : `a d´eposer sur le cours Moodle
Format : le devoir doit ˆetre r´edig´e de mani`ere manuscrite sur feuille (ayez une ´ecriture appliqu´ee)
et l’ensemble des feuilles doivent ˆetre prises en photo (ou scan) et d´epos´ees sur Moodle (attention
Moodle accepte au maximum 10 fichiers et au maximum 50Mo par rendu).
Vous devez conserver votre copie de mani`ere `a pouvoir la produire sur demande.
La clart´e des explications et justifications sera un ´el´ement important pris en compte lors de la cor-
rection.
C’est un travail individuel qui est demand´e.
INDIQUEZ : votre NOM, votre NUMERO DU GROUPE, votre NU-
MERO D’ETUDIANT et NUMEROTEZ VOS PAGES
Exercice 1 : Calculer une m´ediane
On se pose le probl`eme de calculer une valeur m´ediane d’un tableau d’entiers positifs.
On rappelle que si test un tableau de taille n,mun ´el´ement du tableau t, on dit que mest m´ediane de tsi
abs(card(I1)card(I2)) 1 o`u I1={ide [0, n1] tel que t[i]m}et I2={ide [0, n1] tel que t[i]m}.
Par exemple, la m´ediane de :
[1972321154]
est 3 car le tableau contient 6 valeurs inf´erieures ou ´egales `a 3 (les valeurs 1,2,3,2,1,1) et 5 valeurs sup´erieures
ou ´egales `a 3 (les valeurs 9,7,3,5,4)
Autre exemple, la m´ediane de :
[3972321154]
est ´egalement 3 car le tableau contient 6 valeurs inf´erieures ou ´egales `a 3 (les valeurs 3,2,3,2,1,1) et 6 valeurs
sup´erieures ou ´egales `a 3 (3,9,7,3,5,4).
Dernier exemple, la m´ediane de :
[3972321134]
est ´egalement 3 car le tableau contient 7 valeurs inf´erieures ou ´egales `a 3 (les valeurs 3,2,3,2,1,1,3) et 6
valeurs sup´erieures ou ´egales `a 3 (3,9,7,3,3,4).
Les algorithmes demand´es peuvent ˆetre ´ecrits en Python ou en pseudocode (dans tous les cas les ins-
tructions doivent ˆetre claires). Si vous r´eutilisez des algorithmes vus en cours, TD, TP, vous devrez sp´ecifier
ceux-ci (entr´ee, sortie, complexit´e asymptotique en temps et en espace, mais inutile d’en ´ecrire le code).
1
Q 1.1 Proposer un algorithme dont la complexit´e asymptotique en temps est Θ(n2) et dont la complexit´e
asymptotique en espace est Θ(1).
Q 1.2 Justifier la complexit´e en temps.
Q 1.3 Justifier la complexit´e en espace.
Q 1.4 Proposer un algorithme dont la complexit´e asymptotique en temps est O(nlog n) et dont la com-
plexit´e asymptotique en espace est Θ(1).
Q 1.5 Justifier la complexit´e en temps.
Q 1.6 Justifier la complexit´e en espace.
Q 1.7 Proposer un algorithme dont la complexit´e asymptotique en espace est Θ(M) o`u Mest la valeur
maximale du tableau t.
Q 1.8 Justifier la complexit´e en espace.
Q 1.9 Quelle est la complexit´e asymptotique en temps de votre algorithme ? Justifier.
Voici maintenant une proposition de solution de Albert Gorithm qui s’est dit qu’il pourrait utiliser la
fonction permettant de partitionner un tableau selon un pivot (fonction qu’il a vue lorsqu’il a implant´e le
Quicksort en TP). Il donne ici son implantation en Python 1:
def mediane_de_al_gorithm (t):
"""
t : a list of int
"""
for i in range ( len ( t )):
tt = copy . deepcopy (t )
e1 , e2 = parti t ionner (tt , cmp , i )
di ff = len ( e1 ) - len ( e2 )
if -1 <= diff <= 1:
return t[ i]
partitionner prend en entr´ee une liste tt d’entiers, une fonction de comparaison qui retourne -1, 0 ou 1,
et un indice idonnant la position du pivot. Elle retourne deux listes e1 et e2 telles que tout ´el´ement de e1
est plus petit ou ´egal `a tt[i] et tout ´el´ement de e2 est strictement plus grand que tt[i]. On suppose que
partitionner est ´ecrit efficacement.
Q 1.10 Quelle est la complexit´e asymptotique en temps de son algorithme ? Justifier.
Q 1.11 Quelle est la complexit´e asymptotique en espace de son algorithme ? Justifier.
Q 1.12 Pourquoi son algorithme ne fonctionne-t-il pas toujours ?
1. On rappelle que deepcopy cr´eer un nouveau tableau, et est en Θ(n) en temps et en espace.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !