• Aucun résultat trouvé

• et un compilateur spécifique ou bien avec des paramètres de compilations spécifiques.

On détermine la fonction de complexité, f(n), en calculant le nombre d’opérations élé-mentaires réalisées en fonction d’une grandeur extérieure n, n étant une quantité de données d’entrée (valeur, liste de valeurs, grandeur) ; n est le paramètre de la complexité.

17.1 Notation : grand O

On note généralement la fonction de complexité O(g(n)) ("grand O", en anglais "Big O")), où g représente la fonction grandeur de la complexité dépendant de n, grandeur des entrées exerçant une influence sur l’exécution de l’algorithme. Cette fonction est simplifiée et tient compte de l’ordre de grandeur de la variabilité.

Fonction de complexité, grand O

15opérations flottantes (sur des nombres réels)

17.1.1 Complexité constante : O(1)

Une complexité constante indique que quel que soit la taille des données d’entrée, l’espace et/ou le temps nécessaires seront fixes.

Code source 101 – Complexité constante 1 i n t f (i n t n)

2 {3 return (n∗n ) ; 4 }

La mesure de l’évolution du nombre d’instructions exécutées en fonction de la grandeur de n nous donne :

• pour n valant 1, 1 instruction

• pour n valant 2, 1 instruction

• pour n valant 3, 1 instruction

• pour n valant 10, 1 instruction

• pour n valant 100, 1 instruction

Elle est de la forme f(n) = a où a est une valeur constante qui dépendra de l’architecture matérielle et logiciel de l’ordinateur d’exécution, ici pour simplifier, a vaut 1.

Exemples :

• exemple 1 (ci-dessus),

• calcul du discriminant d’une fonction du 2ème degré,

• accès direct à un élément d’un tableau grâce à un indice, etc.

• accès au 1er élément d’une liste de valeur,

Quelques soient les données d’entrée, le nombre d’instructions et l’espace alloué sera constant.

17.1.2 Linéaire : O(n)

Une complexité linéaire indique que l’espace et/ou le temps nécessaires vont augmenter de même manière que la taille des données d’entrée.

Code source 102 – Complexité linéaire 1 i n t f (i n t n)

2 {3 i n t r = 1 ;

4 f o r( i =1; i<=n ; i=i +1)

5 {

6 r = r ∗ i ;

7 }

8 return r ;

9 }

La mesure de l’évolution du nombre d’instructions exécutées en fonction de la grandeur de n nous donne

• pour n valant 0, 0 répétition du groupe d’instructions

• pour n valant 1, 1 répétition du groupe d’instructions

• pour n valant 3, 3 répétitions du groupe d’instructions

• pour n valant 10, 10 répétitions du groupe d’instructions

• pour n valant 100, 100 répétitions du groupe d’instructions Elle est de la forme f(n) = n .

Exemples :

• exemples 2 et 3 (ci-dessus),

• calcul de la factorielle d’un nombre,

• parcours d’une liste de valeurs dans un tableau,

• recherche d’une valeur dans un tableau non trié ; dans cet exemple, la complexité O(n) est le pire des cas ; il se peut que la valeur cherchée soit trouvée immédiatement (au mieux : O(1)), ou en moyenne il y a 50% de chance de trouver la valeur soit dans la première moitié (O(n))

Le nombre d’opérations nécessaires sera dépendant linéairement de n.

17.1.3 Quadratique : O(n2) et polynomiale (nc)

Une complexité quadratique indique que l’espace et/ou le temps nécessaires vont quadrupler quand n va doubler ; la polynomiale que le temps sera multiplié par 2c quand n va doubler

Exemple :

• tri de n nombres (utilisation du tri bulle dans le pire des cas),

• parcours d’un tableau/liste de n éléments pour chaque valeur d’un tableau/liste de n éléments,

• produit de 2 matrices(n3)

Le nombre d’opérations nécessaires sera dépendant de 2 17.1.4 Autres fonctions :

• Exponentielle : O(cn)Où c est une constante (exemple de la tour de Hanoï)

• Logarithmique :O(logbn)où b est une constante (exemple : recherche dichotomique =>

tableau trié)

• Ou toute autre fonction permettant la modélisation de la complexité

Dixième partie

Annexes

18 Codage de l’information

L’informatique, (en anglais : IT, Information Technology) dans le cadre de l’entreprise ou (en anglais : Computer Science) dans le domaine de l’enseignement, est la "science du traitement rationnel, notamment à l’aide de machines automatiques, de l’information considérée comme le support des connaissances et des communications".

L’information, plus précisément sa représentation, est donc au coeur du fonctionnement de l’ordinateur.

18.1 Architecture des ordinateurs

L’ordinateur est une machine (automate programmable) qui va permettre, grâce aux pro-grammes (les logiciels qui y sont installés) et au matériel (les équipements électroniques qui le composent) d’aider l’utilisateur dans ses tâches quotidiennes en automatisant certaines de celles-ci ou en les simplifiant. (voir Figure 40 en page 133)

Figure40 – Architecture simplifiée de l’ordinateur

De manière plus précise, plusieurs composants essentiels sont ms en oeuvre pour assurer l’ensemble des traitements attendus par l’utilisateur. (voir Figure 41en page 134).

L’architecture d’un ordinateur est composée de 2 ensembles formant un tout cohérent : 1. l’architecture matérielle, assemblage de 3 composants essentiels reliés par des bus :

• l’Unité Centrale de Traitement, UCT, (en anglais :CPU, Central Prossesing Unit) : coeur de l’ordinateur, c’est le calculateur ; il est composé de :

– l’unité arithmétique et logique (en anglais : arithmetic-logic unit, ALU), res-ponsable des calculs arithmétiques, des opérations logiques, des comparaisons et autres opérations élémentaires

– l’unité de contrôle (ou de commande) (en anglais : control unit) : en charge de gérer l’ordonnancement des différentes instructions à exécuter

Figure41 – Architecture matérielle de l’ordinateur

– des registres, mémoires stockant les valeurs du calcul en cours de traitement

• la mémoire centrale (mémoire vive, appelée aussi RAM) : contient les programmes en cours d’exécution et les données en cours d’utilisation16;

• lesunités d’Entrées-Sorties (en anglais :Input-Output units) : assurent les échanges avec le monde extérieur (réseaux, périphériques) ;

2. l’architecture logicielle, assemblage de logiciels qui assurent le bon fonctionnement de l’architecture matérielle et apportent des services aux utilisateurs :

• le système d’exploitation (en anglais : Operating System) : logiciel de base de l’or-dinateur ;

• des logiciels utilitaires : assurent des services complémentaires au système d’exploi-tation (pilotes de périphériques, antivirus, etc.) ;

• des logiciels utilisateurs qui répondent aux besoin des utilisateurs.

L’exécution de chacune des instructions d’un programme (logiciel) procède de la manière suivante : : 1)récupérer l’instruction ((en anglais : fetch)) ; 2)la décoder ((en anglais :decode)) ; 3) l’exécuter ((en anglais : execute)) ; 4) en mémoriser le résultat. Le processeur exécute ce cycle de manière ininterrompue.

16les systèmes de persistance des données (mémoire de masse), comme le disque dur (en anglais :hard disk), assurent la conservation durable des données et programmes après que l’ordinateur ait été éteint

Unité de controle

Unité Arith-métique et Logique (ALU) Unité Centrale de Traitement (CPU)

Mémoire centrale

Unité d’En- trées/-Sorties instructions1 données

2 3

4

Tous les signaux qui circulent sur les bus et qui sont traitées par les différents composants de l’ordinateur sont électriques.

Aussi, dès la conception des 1ers ordinateurs, il a été décidé d’utiliser les symboles 0 et 1 pour représenter 2 niveaux de signaux électriques :

• ces 2 niveaux sont facilement identifiables ;

• des circuits peuvent traiter les opérations logiques (ET, OU, etc.) ;

• avec 2 valeurs élémentaires, il est aisé de représenter les nombres (binaire).

Le chiffre binaire, ou bit (en anglais : binary digit) est la plus petite unité d’information manipulable par une machine numérique.

Toutes les informations traitées par l’ordinateur sont codées en une suite de 0 et de 1.