Vous êtes sur la page 1sur 17

DÉPARTEMENT MATH ET

INFORMATIQUE

Révision AlgoII

Pr.CHEMLAL Yman

2022-2023
2

Révision
3

Exercice 1

• a mod3=x
• b mod3=y
• a= 3*a’+x
• b=3*b’+y
• mod (a+b)=mod(3*(a’+b’)+x+y)=mod
(3*(a’+b’))+mod (x+y)= 0+mod(x+y)

 mod3 (a+b)= mod3 (mod3(a)+mod3(b))


4

Correction: solution itérative


1 2 3 4 5 6 7 8 9 10

[1%3+2%3+3%3+4%3+5%3+6%3+7%3+8%3+9%3+10%3]%3

i=0, M=T[0]%3 1
Fonction Modulo (T: tableau des entier):entier
i=1, M=(M+T[1]%3)%3
Var: i, n, M:entier
(1+2)%3=0
Début
i=2, M=(M+T[2]%3)%3
n longueur (T)
(0+0)%3=0
M0
i=3, M=(M+T[3]%3)%3
Pour (i0 à n-1)
(0+1)%3=1
M=M+T[i]%3 O(n)
……..
FinPour
……….
Retourne (M%3)
i=9
Fin
5

Correction: solution récursive


Fonction Modulo (T: tableau des entier, d:entier):entier
Var: n, M:entier
Début
M=0
n longueur (T)
Si d=n-1 alors M= T[d]%3
retourne (M)
Sinon
Retourne ((T[d]%3+Modulo (T, d+1))%3))
Fin
Evolution d’un appel récursif

1 2 3 4

Dépilement: Phase de la
Empilement: Phase de

remontée
descente

Mod (T,3)=T[3]%3=1

Mod (T,2)=[T[2]%3+Mod(T,3)]%3
Mod (T,2)=[0+1]%3=1

Mod (T,1)=[T[1]%3+Mod(T,2)]%3
Mod (T,1)=[2+1]%3=0

(1+0)%3=1
Mod (T,0)=[T[0]%3+Mod(T,1)]%3
7

Calcul complexité

Fonction Modulo (T: tableau des entier,


d:entier):entier
Var: n, M:entier
Début
M=0
n longueur (T)
Si d=n-1 alors M= T[d]%3 a Si n<=1
retourne (M) T(n)=
Sinon b+T(n-1) Sinon
Retourne ((T[d]%3+Modulo (T, d+1))%3))
Fin Calculer T(n) en fonction de n et T(0)
8

Complexité de la fonction récursive


T(n)= b+T(n-1) = b+b+T(n-2)
=2b+T(n-2)
=3b+T(n-3)
=…….
=i*b+T(n-i)
À T(1) les appels récursifs se terminent. donc, à une valeur particulière de i.
Ce cas serait lorsque n-i=1.
Donc à i=n-1, T(n)= (n-1)*b+T(1)
T(1)=’a’ comme indiqué dans la relation de récurrence.

T(n)=nb-b+T(1)
= nb-b+a
= b*n+constante O(T)=O(b*n+constant)

O(T)=O(n)
Correction: solution diviser pour régner
Diviser

Modulo (T, debut, m)


debut m

1 2 3 4
Modulo (T, debut, m)
Modulo (T, m+1, fin)

1 2 3 4
Régner

Modulo (T, debut, m) Modulo (T, m+1, fin) Modulo (T, m+1, fin)
Modulo (T, debut, m)

1 2 3 4

(1%3+2%3)%3=0 (3%3+4%3)%3=1
Terminer

(0+1)%3=1
10

Correction: solution diviser pour régner


Fonction Modulo (T: tableau des entier, d:entier, f:entier ):entier
Var: M:entier
Début
Si d=f alors retourne (T[d]%3 )
Sinon
M=(d+f)/2
Retourne ((Modulo (T, d,M)+Modulo (T,M+1,f)%3))
Fin
11

Diviser pour régner : complexité

Fonction Modulo (T: tableau des entier, d:entier, f:entier


):entier
Var: M:entier
Début
Si d=f alors retourne (T[d]%3 )
Sinon
M=(d+f)/2
Retourne ((Modulo (T, d,M)+Modulo (T,M+1,f)%3))
Fin
12

Diviser pour régner : complexité


• Théorème de résolution de la récurrence:
• Soient a >=1 et b >= 1 deux constantes, soit f (n) une fonction
et soit T(n) une fonction définie pour les entiers positifs par
la récurrence : T(n) = aT(n/b)+ f (n)
• T(n) peut alors être bornée asymptotiquement comme suit :
13

Paradigme ‘’diviser pour régner’’:


Recherche maximum

• Complexité de l’algorithme de recherche du maximum


14

Révision
15

N=4
i=0 1
j=0
k=0

i=1 1 2 2
j=01
k=1 T[k]=i+1
K=2

i=2
1 2 2 3 3 3
j=02
k=3 T[k]=i+1
k=4
k=5

i=3 1 2 2 3 3 3 4 4 4 4
j=03
k=6 T[k]=i+1
k=7
k=8
K=9
16

Exercice 2
Procédure remplissage (n: entier, S;T: tableau des
entier)
Var: i,j,k:entier
T[n]: tableau des entiers
Début
k0
Pour (i0 à n-1) faire
Pour (j0 à i) faire
T [k]=i+1
kk+1
FinPour
Retourne (M%3)
17

Complexité
• i=0 1
• i=1 2 2
• i=2 3 3 3
• i=3 4 4 4 4

•  1+2+3+4+….n
•  ((n+1)*n)/2
•  O(n^2)

Vous aimerez peut-être aussi