Telechargé par testingtest

Algorithmique et Complexité: TD N°2 - ENIS Sfax

publicité
Ecole Nationale d'ingénieurs de Sfax
A.U 2013/2014
Responsable du cours : M. Sofien Khemakhem
Auditoire : GI1
Travaux Dirigés N°2
ALGORITHMIQUE ET COMPLEXITE
Exercice1 :
Soit la fonction mystere(t, k) ou t est un tableau d'entiers non vide et k verifiant 0≤k≤ longeur(t)
Fonction mystere(t,k) : Boolean
debut
si k= longeur(t)­1 alors
retourner vrai
si t[k]>t[k+1] alors
retourner faux
retouner mystere (t,k+1)
fin
(a) Soit t= [6, 9, 4, 8, 12]
i : Que retourne mystere(t, 2) (Donner la liste des appels recursifs) ?
ii :Que retourne mystere(t, 0) (Donner la liste des appels recursifs) ?
iii : Que fait la fonction mystere dans le cas general ?
(b) Quel est le nombre maximum d'appels recursifs (en fonction de n
et k ) de la fonction mystere(t,k) si le tableau t est de longueur n?
(c) En vous inspirant de la fonction mystere, ecrire une fonction recursive estDans(t,x, k)
qui retourne True si x apparait dans le tableau t a partir de l'indice k, False sinon.
Exercice2 :
On considère la procédure suivante qui permet d’inverser les éléments d’un tableau
de taille n :
procedure Inverser (var T : tableau, n : integer) ;
var i, k, x : integer ;
begin
k := n div 2;
for i:= 1 to k do
begin
x:= T[i];
T[i] := T[n-i+1];
T[n-i+1] :=x;
end;
1/2
end;
Donnez une version récursive de cette procédure et calculez la complexité de la version récursive.
Exercice3 :
La recherche binaire d’un élément v dans un tableau trié d’entiers se fait de la façon suivante :
On compare v avec l ‘élément au milieu m (cet élément divise le tableau en deux parties : une
première partie dont les éléments sont inférieurs ou égaux à m, et une deuxième partie dont les
éléments sont strictement supérieurs à m)
♦ Si v est inférieur ou égal à m, alors la recherche se poursuit de la même manière dans la
première partie du tableau.
♦ Si v est strictement supérieur à m, alors la recherche se poursuit de la même manière dans la
deuxième partie du tableau.
1. Ecrivez une fonction non récursive qui retourne la position de v dans le tableau si v est trouvé,
et 0 sinon. Cette fonction a trois paramètres seulement : le tableau T, sa taille N et l’entier à
chercher v.
2. Ecrivez une version récursive de cette fonction
3. Déterminez la complexité de cette fonction et justifiez votre réponse.
2/2
Téléchargement