Complexité des algorithmes

Fonction en la taille de la donnée Ex: un entier se code en O(log(n)) Toute algo de cette forme est exponentiel : T(log n) = O(n)

Complexité des algorithmes recursifs

Arbre d’execution dont les noeuds sont des appels a la fonction La complexité c’est le nombre de nœuds coût d’un nœud Certains noeuds prennent les meme parametres Hypothese : un algo avec les meme parametres donne le même resultat

Acceleration (Programmation dynamique)

Complexité = nombre de noeuds differents cout d’un noeud Espace = Les combinaisons d’entré possible (tableau, matrice, etc.)

Exemple

input : Qui représente les dimensions de n matrices. Le coût du produit de 2 matrices est Question : Calculer le produit de avec un coût minimal. Par exemple

M(i, j)
deb
si i=j alors retourner 0
v = +inf
pour k=i à j-1 faire
	x=M(i,k)
	y=M(k+1,j)
	v'=x+y+P_i-1 P_k P_j
	si v' < v
		v = v'
retourner v

Complexité : profondeur de l’arbre = n dégré max = n Donc la complexité =

Avec acceleration : Nombre de noeuds differents : Dom(i) x Dom(j) n x n = O(n²) Cout d’un noeud = O(n)

Classes

Classe P = polynomial Classe NP = Non-deterministe (Certificat poly + Verification poly) Classe NP-hard = alors

P = NP

On suppose que P=NP alors on a un oracle pour un problème de décision