0% ont trouvé ce document utile (0 vote)
856 vues4 pages

Serie 2 Complexitecorrection

Ce document contient 5 exercices portant sur des algorithmes de complexité. Les exercices traitent de sujets comme la recherche d'éléments dans un tableau trié, le tri rapide, la suite de Fibonacci et la normalisation de boucles.

Transféré par

Chouichi Ghada
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
856 vues4 pages

Serie 2 Complexitecorrection

Ce document contient 5 exercices portant sur des algorithmes de complexité. Les exercices traitent de sujets comme la recherche d'éléments dans un tableau trié, le tri rapide, la suite de Fibonacci et la normalisation de boucles.

Transféré par

Chouichi Ghada
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Série N°2 Complexité : correction

Exercice 1
Soit un graphe G=(X , U) où n=∣X∣ et m=∣u∣ . Soit A la matrice d'adjacence de G. A est une
matrice carrée d'ordre n tel que a(i , j)=1 s'il existe un arc entre les noeuds i et j, 0 sinon. On
désire calculer le maximum des degrès des n noeuds.

Ecrire l'algorithme correspondant. Est il de coût minimal?

Indications :
Pour chaque noeud, on calcule ne nombre d'arc incident. Ensuite on cherche le noeud avant le plus
grand nombre.

T:tableau [1:n]
//phase de calcul
Pour i de 1 à n faire
t[i]=0
Pour j de 1 à n faire
t[i]+=t[j]
fin pour
fin pour
//phase du recherche du maximum
Max=1
Pour i de 2 à n faire
si t[i]>max alors max=t[i]
fin si
Fin pour

La complexité de cet algorithme est O(n2 )

Exercice 2
Normaliser la boucle suivante :
Pour i de n à m pas -p
corps(i)
Fin pour

avec n>m et p>0


Indications :
Phase 1: Rendre le pas positif
on pose j=n+m-i
Pour m à n pas p faire
corps (n+m-j)
Fin pour

Phase 2 : rendre le pas = 1


n−m
on pose q=[ ]
p

Pour k=0 à q faire


corps(n-kp)
Fin pour

Exercice 3
Ecrire l'algorithme récursif qui permet de chercher un élément v dans un tableau T et évaluer sa
complexité.

Indications:
D'abord, on suppose que le tableau T est trié

Recheche (T,d, f, v)

Si d==f
alors revoyer v==t[d]
fin si
tantque d>f
m=(d+f)/2
si t[m]>x alors recherche (T,d,m,v)
sinon recherche (T,m+1,f,v)
fin si
Fin pour

La complexité de cette procedure est O(log 2 (n)) : en effet, on a au plus log2 (n) appels à faire
avant d'arriver à d=f

Exercice 4
Rappeler l'algorithme de tri rapide. Evaluer sa complexité (en illustrant les details du calcul).

Algorithme TRI RAPIDE


partitionner(tableau T, premier, dernier, pivot)
échanger T[pivot] et T[dernier]
j := premier
pour i de premier à dernier - 1
si T[i] <= T[dernier] alors
échanger T[i] et T[j]
j := j + 1
échanger T[dernier] et T[j]
renvoyer j

tri_rapide(tableau t, entier premier, entier dernier)


début
si premier < dernier alors
pivot := choix_pivot(t,premier,dernier)
pivot := partitionner(t,premier, dernier,pivot)
tri_rapide(t,premier,pivot-1)
tri_rapide(t,pivot+1,dernier)
fin si
fin

La complexité de l'algorithme dépend du choix du pivot


En moyenne : O(nlog 2 (n))
Au pire des cas : O(n2 )

La complexité provient du fait que cette recurrence est de type T(n)=cn+2T(n/2).

Exercice 5
La suite de Fibonacci est définie comme suit

{ }
1 si n = 0
f (n)= 1 si n = 1
f(n-1) + f(n-2) si n >= 2

1. Écrire la version itérative de la fonction de Fibonacci. Évaluer sa complexité


2. Écrire la version récursive de cette même fonction. Évaluer sa complexité

Indications :
1.
u=1
v=1
Pour i de 2 à n faire
s=u+v
u=v
v=s
fin Pour
La complexité est O(n) (un seul parcours de taille n)

2.
Pour chaque niveau i , l'algorithme fait 2n addition. Comme nous avons n-1 niveaux (voir figure), la
complexité est donnée par
0 1 n−1 n
T ( n)=2 +2 +............+2 =2 −1
il s'agit d'une suite géométrique de raison 2 et dont le premier terme est 1
La complexité est par conséquent O(2n )

Vous aimerez peut-être aussi