Vous êtes sur la page 1sur 8

Prosit4 

: Un peu de structure
Rôles :
- Gestionnaire : Adrien
- Animateur : Emre
- Scribe : Jocelin
- Secrétaire : Youssef

1) Prendre connaissance du sujet et clarifier


 1.1) Mots-Clés :

- Algorithme
- Moyenne glissante
- Pointeur
- Tronqué
- Variable statique
- Notion de complexité
- Structure
 

1.2) Contexte :
L’équipe MMH ont réalisé un algorithme de gestion de données, cependant il y’a des points à
éclaircir notamment sur la notion de complexité du programme, la mémoire et l’optimisation
 
 
2) Analyse des besoins :
2.1) Problèmes :
- Comment résoudre le problème de complexité en utilisant les structures à la place des
tableaux ?
- Comment améliorer la performance ?
- Trouver de solutions pour changer les tableaux.

2.2) Contraintes :
- Limitation de calcul
- Utiliser les différentes fonctions données

2.3) Livrable :
- Un algorithme
- Evaluer la complexité des algorithmes 
3) Généralisation :
-  Complexité d’un algorithme

4) Pistes de solutions :
- Factoriser le programme.
- Nous passerons d’une complexité exponentielle à logarithmique.
- Utiliser les pointeurs.
- Changer les tableaux en structure va nous permettre d’optimiser la mémoire.
- Nos deux fonctions vont pouvoir être mieux factorisé.
- On obtiendra des nombres aussi grands qu’avant, on utilisera donc moins d’espace. 

5) Elaborer le plan d’action :


1) Définir les mots clés :

2) Corbeille d’exercices :

3) Workshop :

4) Analyse des ressources :

a. Pointeurs
b. Complexité
c. Structure et tableaux
d. Représentation de l’information

5) Analyse de la complexité de l’Algorithme original

6) Identifier/résoudre les problèmes (expliquer la démarche)

7) Etudier la complexité de l’Algorithme à jour

8) Validation des hypothèses :

9) Conclusion :
Définir les mots clés :

 L'analyse de la complexité d'un algorithme consiste en l'étude formelle de la quantité


de ressources (par exemple de temps ou d'espace) nécessaire à l'exécution de
cet algorithme.
 La moyenne mobile, ou moyenne glissante, est un type de moyenne statistique utilisée
pour analyser des séries ordonnées de données, le plus souvent des séries temporelles,
en supprimant les fluctuations transitoires de façon à en souligner les tendances à plus
long terme.
 Un algorithme est une suite finie et non ambiguë d'instructions et d’opérations
permettant de résoudre une classe de problèmes.
 En programmation informatique, un pointeur est un objet qui contient l'adresse
mémoire d'une donnée ou d'une fonction. C'est l'outil fondamental de l'adressage dit
« indirect ».
  Variable déclarée statique dans une fonction, et donc dont la valeur est conservée à
chaque rappel de cette fonction

Analyse des ressources :


Complexité d’un algorithme :
Le calcul de la complexité d’un algorithme permet de mesurer sa performance. Il existe deux types de
complexité :

Complexité spatiale : permet de quantifier l’utilisation de la mémoire.

Complexité temporelle : permet de quantifier la vitesse d’exécution.

1) Complexité temporelle :

L’objectif d’un calcul de complexité algorithmique temporelle est de pouvoir comparer l’efficacité
d’algorithmes résolvant le même problème. Dans une situation donnée, cela permet donc d’établir lequel
des algorithmes disponibles est le plus optimal.

Puisqu’il s’agit seulement de comparer des algorithmes, les règles de ce calcul doivent être
indépendantes :

 Du langage de programmation utilisé ;


 Du processeur de l’ordinateur sur lequel sera exécuté le code ;
 De l’éventuel compilateur employé.

Par soucis de simplicité, on fera l’hypothèse que toutes les opérations élémentaires sont à égalité de
coût, soit 1 « unité » de temps.

Exemple : a = b * 3 : 1 multiplication + 1 affectation = 2 « unités »

La complexité en temps d’un algorithme sera exprimée par une fonction, notée T (pour Time), qui
dépend :

 De la taille des données passées en paramètres : plus ces données seront volumineuses, plus
il faudra d’opérations élémentaires pour les traiter.
On notera n le nombre de données à traiter.
 De la donnée en elle-même, de la façon dont sont réparties les différentes valeurs qui la
constituent.

Les pointures :
Comment afficher l’adresse d’une variable

 désigne la valeur de la variable

 désigne l'adresse de la variable.

 Créer un pointeur :

 Pour initialiser un pointeur et lui donner une valeur par défaut on utilise le mot-clé
NULL

Vocabulaire : on dit que le pointeur pointSurAge pointe sur la variable age.


On demande la valeur de pointeurSurAge et sa valeur c’est l’adresse de la variable age :

Comment faire pour demander à avoir la valeur de la variable se trouvant à l'adresse


indiquée :
Livrable :
Calcul de la complexité pour chaque fonction et procédure :
Pour chaque instruction soit 1 « unité » du temps alors :

Egalité 1
Boucle for (indice_max_Tableau)
Affectation (1)
Affectation (1)
Retour (1)

Temps de calcul = 1+(indice_max_Tableau-1) *2+1


Pour optimiser et fixer l’algorithme il faut remplacer d’abord la ligne de boucle for par :
Pour i allant de 0 à indice_max-Tableau-2
Alors Temps de calcul = 1+(indice_max_Tableau-2) *2+1
Temps de calcul = 1+(indice_max_Tableau) *2+1

Temps de calcul = 1+1+(nb capteur) *(2+1)

Temps de calcul :(1+1) *instruction tableau de capteur

Temps de calcul =1+(long tableau) *(1+1+1)


Validation des hypothèses :
- Factoriser le programme.
- Nous passerons d’une complexité exponentielle à logarithmique.
- Utiliser les pointeurs.
- Changer les tableaux en structure va nous permettre d’optimiser la mémoire.
- Nos deux fonctions vont pouvoir être mieux factorisé.
- On obtiendra des nombres aussi grands qu’avant, on utilisera donc moins d’espace. 

Vous aimerez peut-être aussi