Vous êtes sur la page 1sur 1

Département d’Informatique -------------– Faculté des Sciences –------------------------ UFAS1

Algorithmique Avancée et Complexité


Série 02
Exercice 01 : Quicksort revisité
Donnez une exécution de l’algorithme Quicksort sur la liste L = (14,11,7,5,41,9,2,11,6,3)
Ecrire une procédure de partition partition(A, p, r) d’un tableau A [1...n] sur place en prenant comme pivot le dernier
élément de A ; p et r sont les bornes du tableau A. Estimer sa complexité. Exécuter votre procédure sur la liste L.
Exercice 02
Soit deux matrices X et Y de taille NxN; Pour calculer le produit XY on commence par partitionner les deux matrices
en 9 blocs de taille N/3xN/3. Donnez la relation de récurrence qui définit la complexité de cette méthode et la
résoudre.
Exercice 03 : Plus Grande Somme
Soit une liste L de n entiers relatifs. On cherche une sous-liste de L dont la somme des éléments soit maximale.
𝒋
Autrement dit, on cherche un couple d’entiers i et j, 1 ≤ i ≤ j ≤ n tel que PGS= ∑𝒌=𝒊 𝑨[𝒌]soit maximale. Exemple dans
la liste L= (2, -3, 2,-1, 10, -5, 4) l’intervalle de la plus grande somme PGS = 11 est définie par début = 3 et fin = 5.

Proposez un algorithme itératif simple qui calcule le PGS. Calculer sa complexité.


Proposez un algorithme plus efficace en (n2).
Exercice 04 : Elément majoritaire
On appelle élément majoritaire d’une liste l’élément dont le nombre d’occurrences est strictement supérieur à la
moitié de la taille de la liste, s’il existe. Par exemple 5 est l’élément majoritaire de la liste L=(12,5,7,5,9,5,5)
Écrivez un algorithme Occurences(L,X) qui renvoie le nombre d’occurrences de la valeur X dans la liste L. Quelle est
complexité de votre algorithme ? Utilisez Occurences(L,X) pour écrire un algorithme Majoritaire(L) qui renvoie
l’élément majoritaire de la liste L s’il existe et 0 sinon. Quelle est la complexité de votre algorithme ?
Donner un autre algorithme récursif basé sur un découpage de L en deux listes de même taille. Quelle est sa
complexité ?
Exercice 05 : string matching
Soit un texte T[1..n] et un motif P[1..m] ; les éléments de T et P sont des caractères d’un alphabet Σ. Le problème
« string matching » consiste à déterminer toutes les occurrences du motif P dans le texte T.
Exemple motif P = ABABC sujet T= ABABABCCABCABABCA. Ce problème trouve de nombreuses applications dans les
éditeurs de texte. Construire un algorithme qui résout ce problème. Déterminer la complexité de votre algorithme
en fonction de la taille du motif m et du sujet n.
Exercice 06 : Plus court chemin
On considère le graphe G=(V,E,w) sans cycle, orienté et valué ci-dessous. Exécuter l’algorithme du plus court chemin
en utilisant le paradigme de programmation dynamique défini par l’algorithme récursif :
δ(s,s) = 0 et δ(s, v) = Min{ δ(s,u) + w(u,v)} ; (u,v) ϵ E

Exercice 07 Appliquer l’algorithme qui calcule la plus longue séquence palindromique vue en cours au mot
CHARACTER.

Vous aimerez peut-être aussi