IN 101 - Cours 7
1 Passage d’argument par adresse
Une fonction ne peut retourner qu’une seule valeur au plus.
On voudrait parfois plusieurs valeurs r´esultat.
En C, les param`etres sont pass´es par valeur :
1. Ils sont ´evalu´es,
2. ils sont copi´es sur la pile avant l’appel.
Impossible de modifier une variable de l’appelant depuis l’appel´e.
Pour s’en sortir, dans la fonction appelante on va passer l’adresse des variables dans lesquelles
stocker (retourner ) les r´esultats.
Dans la fonction appel´ee, l’argument re¸cu est une adresse, donc le param`etre est un pointeur.
#include <s t d i o . h>
void f ( int v )
{
(v )++ ;
}
int main ( )
{
int x = 5 ;
f (&x ) ;
p r i n t f ( ”x = %d\n , x ) ; // On at te n d 6 comme a f f i c h a g e .
return ( 0 ) ;
}
Un tableau ´etant un pointeur sur la 1`ere case, il est forc´ement pass´e par adresse.
2 Complexit´e
Il existe toujours plusieurs algorithmes pour r´esoudre un probl`eme. Certains sont plus efficaces que
d’autres.
La complexit´e d’un algorithme mesure asymptotiquement son efficacit´e intrins`eque en fonction
de la taille des donn´ees `a traiter.
L’efficacit´e en terme de m´emoire est la complexit´e spatiale.
L’efficacit´e en terme de temps est la complexit´e temporelle.
2.1 Complexit´e temporelle
On compte le nombre d’op´erations de base ecessaires et on regarde comment ce nombre
´evolue asymptotiquement.
On cherche `a encadrer ce nombre lorsque la taille de l’entr´ee tend vers +.
1
2.1.1 Notations
O(g) : ensemble des fonctions ftelles que 0 f(x)k×g(x).
avec kN
t x0N,xx0.
θ(g) : ensemble des fonctions ftelles que k1×g(x)f(x)k2×g(x)
avec k1, k2N
et x0N,xx0.
Une fonction fa une complexit´e en O(g) si fO(g) (respectivement en θ).
Par convention au lieu d’´ecrire fO(g) on ´ecrit f=O(g).
2.1.2 Exemple
x2+x+ 1 = θ(n2)
2.1.3 Classement de complexit´es
log(n)nnnlog(n)n2n32nexp(n)n!nn22n
Un algorithme avec une complexit´e polynomiale (nk) est souvent utilisable.
`
A partir d’une complexit´e exponentielle (kn) un algorithme devient rapidement inutilisable.
2.1.4 Th´eorie de la complexit´e
But : classifier des probl`emes en fonction de la complexit´e du meilleur algorithme pour les
r´esoudre.
On ne sait pas toujours pr´evoir la complexit´e optimale.
Probl`eme : question comportant un ou plusieurs param`etres.
Probl`eme de d´ecision : probl`eme dont la solution ∈ {oui, non}.
Les deux classes de probl`emes dont on parle le plus sont :
Classe P: Ensemble des probl`emes de d´ecision r´esolubles en temps polynomial.
Classe NP : Ensemble des probl`emes de d´ecision dont la solution peut ˆetre erifi´ee en
temps polynomial quand la r´eponse est oui .
Un probl`eme est dit NP-complet si c’est un probl`eme dans NP au moins aussi difficile que tout
autre probl`eme de NP.
Les algorithmes connus pour r´esoudre des probl`emes NP -complets ont une complexit´e tempo-
relle exponentielle. Ils sont donc inexploitables en pratique.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !