Gltco 121
Gltco 121
Gltco 121
Équipe Pédagogique
Dr NKONJOH Armel
2 Introduction à l’algorithmique 21
2.1 Rôle des Algorithmes en Informatique . . . . . . . . . . . . . . . . . . . . 21
2.1.1 Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.2 Exemple de problèmes susceptibles d’être résolus par les algorithmes 22
2.1.3 Structures de données . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.4 Problèmes difficiles . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.5 Influence des algorithmes sur la technologie . . . . . . . . . . . . . 22
2.2 Langage Algorithmique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.1 Structure d’un algorithme . . . . . . . . . . . . . . . . . . . . . . 22
2.2.2 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3
4 CONTENTS
3 Logiciels Applicatifs 51
3.1 Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2 Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.3 Powerpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4 Latex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.5 Latex Beamer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4 Introduction à la Programmation en C 53
4.1 Syntaxe Générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2 Instructions de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3 Fonction et Procédure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
CONTENTS 1
Ce modèle est généralement utilisé dans les architectures ou la même structure est
utilisé pour stocker à la fois les données et les programmes. Dans ce cas, le même bus est
utilisé pour le transport de ces informations (instructions et données).
On peut dire que l’architecture de von Neumann décompose l’ordinateur en 4 parties
distinctes :
3
4 CHAPTER 1. INTRODUCTION À L’ARCHITECTURE DES ORDINATEURS
Le Modèle de HARVARD sépare physiquement la mémoire des données et celle des pro-
grammes. L’ accès à chacune de ces mémoires se fait à travers deux bus, un bus de
données et un bus d’ adresse. Ce qui permet par exemple de transférer simultanément
les instructions et les données.
Cette architecture est utilisée dans des ordinateurs disposant des mémoires différentes
pour le stockage des données et des programmes. Le transfert simultané des instructions
et des données donne un avantage de performances à cette architecture comparée à l’
architecture précédente. Le problème avec cette architecture est la complexité de mise
en œuvre.
1.1. MACHINE DE VON NEUMANN ET MACHINE DE HARVARD 5
Structure
Configuration matérielle
Espace requis
Rapidité d’ exécution:
Utilisation de l’ espace:
L’ espace n’ est pas gaspillé dans l’architecture de Von Neumann car l’ espace
de la mémoire de données peut être utilisé par la mémoire d’ instructions et
vice-versa.
1.2.1 Définitions
Hardware (mot anglais qui signifie quincaillerie): Le hardware représente tout ce qui est
matériel dans un ordinateur.
Technologie : la technologie des ordinateurs est l’ étude des composants matériels :
diode, transistors, circuits intégrés et des techniques de leur réalisation.
Logique : elle désigne l’ étude des techniques d’ assemblage des composants élémen-
taires pour en faire des circuits et/ou des éléments fonctionnels
Architecture : consiste à :
• Couche 0 ou niveau physique: Les objets manipulés à ce niveau sont les portes
logiques. Chaque porte dispose d’ une ou plusieurs entrées logiques et rend en
sortie une fonction simple de ses entrées comme résultat. Une porte se construit
à l’ aide des transistors. Les circuits électroniques de cette couche exécutent les
microprogrammes du niveau 1.
peut être composé de plusieurs ordinateurs reliés entre eux par des moyens de communi-
cation : on parle dans ce cas de réseau d’ ordinateurs.
Un système informatique assure trois grandes fonctions :
Par ailleurs, le cycle mémoire est une fonction de la taille mémoire. Plus la mémoire
est grande, plus l’ accès à un emplacement est lent. La réduction du temps de cycle
mémoire peut se faire de façon technologique ou de façon algorithmique.
Sur le plan technologique, la réduction du temps de cycle est fonction des matériaux
utilisés pour fabriquer la mémoire :
• Les mémoires statiques SRAM. Une cellule mémoire est une simple bascule qui
conserve sa valeur tant qu’ il y a alimentation en énergie.
• les mémoires dynamiques DRAM. Une cellule mémoire est un condensateur qui
chargé représente le 1 logique et déchargé représente 0 logique. Un condensateur
a tendance à se décharger. Il faut le rafraîchir périodiquement pour qu’ il reste
chargé.
Les SRAM sont plus rapides que les DRAM. Par contre les DRAM ont un coût par
bit plus faible et permettent de forte densité d’ intégration. Les mémoires cache sont des
SRAM alors que les mémoires centrales sont des DRAM.
1.2. COMPOSANTS D’UN ORDINATEUR 11
Sur le plan algorithmique, deux techniques sont utilisées pour améliorer les perfor-
mances de la mémoire: l’organisation verticale et l’organisation horizontale.
Hiérarchie. On distingue en général cinq niveaux: les registres, Les caches, la mémoire
centrale, la mémoire virtuelle, la Bande magnétique. La technologie utilisée pour con-
struire un niveau de mémoire est caractérisée par cinq paramètres: Temps d’ accès (ti ),
Taille (si ), Coût par octet (ci ), Bande passante (bi ), Unité de transfert (xi ). En général
dans une hiérarchie de mémoire (M0 , M1 , ..., Mn−1 ) On a:
• ti−1 ≤ ti
• si−1 ≤ si
• ci−1 ≥ ci
• bi−1 ≥ bi
• xi−1 ≥ xi
Mémoire centrale. Elle est la source et la destination des informations échangées par
d’ autres organes de l’ ordinateur. Elle peut être vue comme une collection d’ emplace-
ments (mot) pouvant contenir chacun une information de base. A chaque emplacement
est associée une adresse (numéro) par laquelle il peut être référencé. La capacité d’ un
emplacement est mesurée en bits (16bits, 32bits . . . etc.). Dans la plupart des ordinateurs
personnels un mot est égal à un octet (8 bits). Le rôle de la mémoire est de stocker:
les programmes en cours d’ exécution, les données nécessaires à l’ exécution d’ un pro-
gramme, les résultats intermédiaires ou finaux. A la mémoire sont associés un registre de
sélection (ou registre d’ adresse) et un registre de données (tampon).
12 CHAPTER 1. INTRODUCTION À L’ARCHITECTURE DES ORDINATEURS
L’ unité de traitement
Elle effectue les traitements qui lui sont indiqués par l’ unité de commande. Les
1.2. COMPOSANTS D’UN ORDINATEUR 13
commandes qui lui sont envoyées par l’ unité de commande précisent : - la nature de l’
opération à effectuer, - où rechercher les éventuelles données nécessaires et - ce qu’ il faut
faire des résultats.
Les unités d’ échanges ou unités d’ entrées/sorties sont des éléments qui permettent
de transférer des informations entre l’ unité centrale et les unités périphériques. En
effet le processeur est extrêmement rapide par rapport aux organes périphériques. En
laissant la gestion des E/S au processeur, celui-ci passera la grande partie du temps à
attendre. Les unités d’ échanges ont été introduites pour aider le processeur central dans
l’ accomplissement des opérations d’ entrées/sorties. Pour effectuer une opération d’
entrée/sortie, il faut exécuter une instruction d’ entrée/sortie dans le CPU. C’ est donc
le processeur central qui prend l’ initiative des E/S. Il initialise le transfère et passe la
main à l’ unité d’ échange pour la suite des opérations. Les unités d’ échanges sont : le
DMA (direct memory accesc) ou le canal.
• Le DMA. Il est utilisé dans les ordinateurs de petites tailles pour permettre aux
périphériques d’ accéder directement à la mémoire centrale sans passer par le CPU.
Il est doté d’ un registre d’ adresse, d’ un compteur, d’ un registre de données et
d’ un dispositif de commande capable d’ assurer le transfert. Lorsque le compteur
passe à zéro, le DMA signale au CPU que le transfert est terminé. Le DMA est
prioritaire par rapport au CPU pour l’ accès à la mémoire.
14 CHAPTER 1. INTRODUCTION À L’ARCHITECTURE DES ORDINATEURS
• Les CANAUX. Les canaux sont des processeurs spécialisés dans les opérations d’
E/S. On en distingue deux types
NB:
• Une interface est un ensemble de règles et de conventions à respecter pour que deux
systèmes donnés puissent échanger des informations. Une interface peut également
désigner la gestion câblée ou programmée du lien entre deux systèmes.
• Une interruption est un signal électronique généré par une unité fonctionnelle et
qui est envoyée au CPU pour provoquer une rupture de séquence afin d’ exécuter
un programme prioritaire traitant la cause de l’ interruption.
Elles sont composées des unités de communication avec l’ extérieur et des mémoires
auxiliaires. La nature de ces unités est très variée. Elles sont caractérisées par le sens des
transferts (entrées ou sorties), le support physique utilisé et le type d’ information traité.
Exemple:
1.3. INTRODUCTION A LA PROGRAMMATION ASSEMBLEUR 15
Sens des
() transferts Type d’ informations et support
Nom de l’ unité
()
Clavier entrée caractères sur touches d’ un dispositif
électronique
Moniteur sortie caractères ou images (tube cathodique)
Imprimante sortie caractères ou images sur papier
Table Traçante sortie diagrammes sur papier
Disque entrée sortie données numériques ou alphanumériques
sur support magnétique.
Scanners entrée documents imprimés sur papier
()
1.3.1 Généralités
L’assembleur est un langage dont le fonctionnement est très proche du langage machine;
il est le langage de bas niveau le plus populaire. Il est également très utilisé pour la
conception des systèmes d’exploitation.
Pour exécuter un programme en langage assembleur, (c’est à dire traduire un pro-
gramme en langage machine), on doit passer par les étapes suivantes:
1.3.2 Instructions
La syntaxe des instructions est définie comme suit:
16 CHAPTER 1. INTRODUCTION À L’ARCHITECTURE DES ORDINATEURS
figure
• Le champ Label est destiné pour marquer une ligne qui sera une cible d’instruction
de saut ou de branchement. Elle peut être formée de 31 caractères alphanumériques
au maximum. Il se termine par ‘:’ et ne peut pas commencer par un chiffre. Il n’est
pas sensible à la casse.
Quelques mnémonique
() syntaxe Description
Mnémonique
()
MOV MOV destination, source Copie le contenu de source
dans destination
1.3. INTRODUCTION A LA PROGRAMMATION ASSEMBLEUR 17
() syntaxe Description
Mnémonique
()
XCHG XCHG destination, source Échange les contenus de
source et de destination
JMP JMP MonLabel Saute à l’instruction
pointée par MonLabel
CMP CMP nbre1, nbre2 Sert à comparer deux
nombres nombre1 et
nombre2
()
Exemple d’instruction: ET1: MOV AX, 500H. Cette instruction permet de met-
tre la valeur 500 dans le registre AX.
Quelques directives
18 CHAPTER 1. INTRODUCTION À L’ARCHITECTURE DES ORDINATEURS
Algorithme: somme
Var sum,tem: entier;
Debut
sum <-- 0;
temp <-- 1;
tantque(temp<=1000)faire;
sum <-- sum+temp;
temp <-- temp + 1;
FinTantque;
1.3. INTRODUCTION A LA PROGRAMMATION ASSEMBLEUR 19
ecrire(sum);
Fin
Version assembleur
org 100h
again
add AX, BX; addition des valeurs contenues dans AX et BX
inc BX ; incrémentation de la valeur contenu dans BX
cmp BX, 1000;comparaison de la valeur contenue dans BX et 1000.
jbe again; On retourne à "again" si la condition est vérifiée
end
Exercice 2 : Écrivez un code assembleur qui permet de calculer la somme des nombres
binaires suivants: 1010 et 1001.
Exercice 5 : Écrivez un code assembleur qui permet d’effectuer la division par sous-
traction successive.
20 CHAPTER 1. INTRODUCTION À L’ARCHITECTURE DES ORDINATEURS
Chapter 2
Introduction à l’algorithmique
2.1.1 Algorithmes
Un algorithme est une procédure de cacul bien définie qui prend en entrée une valeur, ou
un ensemble de valeurs, et qui donne en sortie une valeur, ou un ensemble de valeurs. Un
algorithme est donc une séquence d’étapes de calcul qui transforment l’entrée en sortie.
On peut aussi considérer un algorithme comme un outil permettant de résoudre un
problème de calcul bien spécifié. L’énoncer du problème spécifie, en termes généraux, la
relation désirée entre l’entrée et la sortie. L’algorithme décrit une procédure de calcul
spécifique permettant d’obtenir cette relation entrée/sortie.
Exemple: Problème de tri . Entrée: suite de n nombres < a1 , a2 , ..., an >. Sortie:
une permutation (réorganisation) < a′1 , a′2 , ..., a′n > de sorte que a′1 ≤ a′2 ≤ a′3 ≤ ... ≤ a′n
Une instance d’un problème consiste en l’entrée requise par le calcul d’une solution
au problème.
21
22 CHAPTER 2. INTRODUCTION À L’ALGORITHMIQUE
Algorithme [:nom_algorithme]
[Entree : Description des variables d’entrées]
[Sortie : Description des variables de sortie]
var var1,var2,.... typeVariable;
debut:
instruction 1;
instruction 2;
2.2. LANGAGE ALGORITHMIQUE 23
.
.
.
fin
Un algorithme doit contenir des instructions compréhensibles par celui qui devra
l’exécuter. Les quatres familles d’instructions sont :
2. opérations de lecture/écriture
4. les boucles
Une variable est un élément permettant de stocker une information dans un programme
ou un algorithme. Une variable peut être vue comme une boite que le programme (ou
l’ordinateur) va récupérer par une étiquette. Dans la réalité, l’ordinateur a un emplace-
ment mémoire (boite) récupéré par une adresse mémoire (l’étiquette) sous forme binaire.
Type de la variable :
• Octet
• Entier
• Réel
type chaîne de caractère Une chaîne de caractère est notée avec les guillemets.
type booléen Contient des valeurs logiques vrai et faux (True et False) ou encore (0
et 1)
autre type
L’instruction d’affectation
L’affectation est le fait d’attribuer une valeur à une variable. A gauche on a la variable
(jamais une valeur ) A droite on a une expression (Une valeur, une variable, ou un en-
semble de valeurs|variables reliées entre elles par des opérateurs et équivalent à une seule
valeur).
Au milieu, on a une flèche orientée vers la gauche. L’affectation est valide si la variable
à gauche est du même type que la valeur à droite. Naturellement, une affectation ne
modifie que la variable de gauche.
Exemple
Algorithme
var A,B entier;
debut:
A <- 4;
B <- 5;
A <- A+B;
fin
2.2. LANGAGE ALGORITHMIQUE 25
Exercice
Algorithme1
var A,B entier;
debut:
A <- 4;
B <- 5;
A <- A+B;
fin
Algorithme2
var A,B,C entier;
debut:
A <- 4;
B <- A+3;
A <- 3;
fin
Algorithme3
var A,B,C entier;
debut:
A <- 5;
B <- A+4;
A <- A+1;
B <- A-4;
fin
Algorithme4
var A,B,C entier;
debut:
A <- 5;
B <- 3;
C <- A+B;
A <- 2;
26 CHAPTER 2. INTRODUCTION À L’ALGORITHMIQUE
C <- B - A;
fin
Algorithme5
var A,B,C entier;
debut:
A <- 3;
B <- 10;
C <- A+B;
B <- A+B;
A <- C;
fin
Algorithme6
var A,B,C entier;
debut:
A <- 5;
B <- 2;
A <- B;
B <- A;
fin
Expressions et opérateurs
Une expression est un ensemble de valeurs, reliées entre elles par des opérateurs et équiv-
alent à une seule valeur.
Exemple
7
5+4
123 - 45 - 844
Est ce que l’expression suivante est valide ? si oui, sous quelle condition ?
Toto -12 +5 - riko
2.2. LANGAGE ALGORITHMIQUE 27
Un opérateur est un signe qui relie deux valeurs pour produire un résultat.
Opérateurs numériques
• + Addition
• - Soustraction
• * Multiplication
• / Division
• % Modulo
• ET
• OU
• NON
Algorithme
var nom: chaine;
debut:
lire(variable)// une sorte d’affectation à partir du clavier
ecrire("Entrez votre nom");//Affichage à l’écran
lire(nom);
fin
Algorithme
var val, double: entier;
debut:
val <-- 231;
double <-- val*2;
ecrire(val, double);
fin
utilisateur: Messi
Forme Simple
Si(condition)Alors
Instructions;
FinSi
La condition désigne ici une expression (un booléen, une comparaison entre deux vari-
ables) dont la valeur est vrai ou faux. Si cette condition a pour valeur vrai, la machine
exécute la série d’instructions. Par contre, si cette condition a pour valeur faux, la
machine saute directement aux instructions situées après le finsi.
Forme Complète
Si(condition)Alors
Instructions_1;
Sinon:
2.2. LANGAGE ALGORITHMIQUE 29
Instructions_2;
FinSi
Structure Tantque
Syntaxe
Tantque(condition)Faire
Instructions;
FinTantque
Remarques
• Le corps de la boucle (le bloc d’instructions) est tel qu’on doit pouvoir sortir de la
boucle. Sinon, on aura affaire à une boucle infinie.
Structure Repeter
Syntaxe
Repeter
Instructions;
Jusqu’à(condition)
Fonctionnement
2. On évalue la condition
Structure Pour
Syntaxe
• sinon,
Remarques
2.3.1 Pointeurs
Un pointeur est une variable permettant de contenir une adresse mémoire. En algorith-
mique, un pointeur d’entier est défini par: var Pˆ entier;
À la création, le pointeur P contient l’adresse NULL. On distingue deux fonctions
pour la gestion de la mémoire (pour un pointeur P):
• liberer(p): libère l’espace mémoire qui était occupé par l’élément sur lequel pointe
P.
Exemple en algorithmique:
var P^ entier;
var i entier;
i <-- 4;
P <-- @i;
ecrire(P^); //affichera la valeur de i qui est 4;
32 CHAPTER 2. INTRODUCTION À L’ALGORITHMIQUE
Syntaxe en algorithmique:
Syntaxe en algorithmique:
suivant : d_liste;
fin
2.3.4 Exercices:
Écrire les algorithmes correspondants aux exercices ci-après (à rendre dans un document
pdf), puis une classe java pour chaque exercice (4 classes).
(a) Écrire un algorithme qui crée une liste avec deux entiers.
(b) Écrire un algorithme qui crée une liste de n éléments entiers entrés par l’utilisateur.
(c) Écrire un algorithme qui crée une liste d’éléments entrés entiers par l’utilisateur,
la liste est achevée lorsque l’utilisateur saisit -1.
(a) Écrire une procédure qui recherche une valeur dans une liste chainée et affiche
un message à l’utilisateur disant si la valeur est présente ou pas.
(b) Écrire une procédure qui recherche la dernière occurence d’une valeur dans une
liste chainée et affiche un message à l’utilisateur disant si la valeur est présente
ou pas, et si elle est présente la position de la dernière occurence.
(a) Écrire une procédure qui supprime le premier élément d’une liste chainée.
(b) Écrire une procédure qui supprime la première occurrence d’une valeur passée
en paramètre.
(c) Écrire une procédure qui supprime toutes les occurrences d’une valeur dans
une liste chainée.
2.3.5 Piles.
Définition.
Une pile est une liste ou une collection d’élements dans laquelle on ne peut introduire ou
enlever un élément qu’à une extrémité appelée tête de pile ou sommet de pile.
Le dernier élément inséré sera le premier élément à être supprimé ou retiré de la pile:
premier arrivé, dernier servi, en anglais Last In, First Out (LIFO). La figure 2.3.5 illustre
une pile d’entiers.
Exemples Courants:
• Pile de livres,
• Pile d’assiètes,
• Pile de cartes
• initialiser(P:Pile) qui permet d’initialiser la pile (la péprarer à recevoir les don-
nées).
Exercices d’application:
Une pile peut être réalisée en stoquant ses éléments dans un tableau ou dans une liste
chainée. Écrire en algorithmique puis une classe java permetant de:
2.3.7 Files:
Définition:
Une file est une structure de données correspondant à une liste d’éléments ou une col-
lection d’éléments dans laquelle on insère des nouveaux éléments à la fin (queue) et on
enlève les éléments au début (tête de file). En d’autres termes, dans une file, le premier
élément inséré est aussi le premier élément retiré; en anglais First In, First Out (FIFO).
La figure 2.3.7 illustre une file d’entiers.
Exemples Courants:
• initialiser(F:File) qui permet d’initialiser la file (la péprarer à recevoir les données).
Algorithme: liste_de_2_elements
var tete, P: liste;
Debut
tete <-- null;
nouveau(P);
ecrire("Entrer la première valeur de la liste");
lire(P^.info);
2.3. STRUCTURES DE DONNÉES DE BASE 37
nouveau(P);
ecrire("Entrer la deuxième valeur de la liste");
lire(P^.info);
P^.suivant <-- tete;
tete <-- P;
Fin
Algorithme: liste_de_n_elements
var tete, P: liste;
i, n: entier;
Debut
ecrire("Entrer le nombre d’éléments de la liste");
lire(n);
tete <-- null;
Debut
P <-- tete;
Tantque ((P<>null) faire
ecrire(P^.info, " ");
Q <-- P;
P <-- P^.suivant;
FinTantque
Tantque ((Q<>null) faire
ecrire(Q^.info, " ");
Q <-- Q^.precedent;
FinTantque
Fin
File = enregistrement
tableau Tab[N]: entier;
tete : entier;
queue : entier;
longueur_file: entier;
fin
Fonction enfiler(f: File, a: entier):File
Debut
Si (file_pleine(f)<>vrai) alors
f.Tab[f.queue] <-- a;
f.queue <-- f.queue + 1;
Sinon
ecrire("La file est pleine");
FinSi
retourner f;
Fin
fonction: nom_fonction(liste_des_parametres):Type_result
Var resultat: Type_result;
declaration_des_objets_locaux_a_la_fonction;
Debut
instructions_fonction;
retourner resultat;
Fin
procedure: nom_procedure(liste_des_parametres)
declaration_des_objets_locaux_a_la_fonction;
Debut
instructions_procedure;
Fin
2.4. PROCÉDURES ET FONCTIONS 43
Exercice: Écrire une fonction max3 qui compare trois entiers et retourne le max de
ces entiers. Écrire ensuite une procédure max_et_min qui affiche le max et le min de
trois entiers en se servant de max3. Indications: pour déterminer le min, se servir de
l’appel de max3 avec les opposés des nombres.
• Par valeur: Le paramètre transmis n’est jamais affecté par la modification dans
la procédure ou la fonction appelée.
• Par adresse ou par reférence: Le paramètre transmis dans ce cas peut être
modifié et on recupère les résultats dans la fonction qui appelle.
La transmission dans les exemples précédents était la transmission par valeur. Dans
une transmission par adresse, le mot clé var est ajouter avant la variable.
Exemple: Ecrire une autre version de la procédure permettant de faire l’échange du
contenu de deux variables avec une transmission par adresse.
Algorithme: test
Var a,b: reel;
Debut
a <-- 10;
b <-- 20;
echange_1(a,b);
ecrire(a,b);
echange_1(a,b);
ecrire(a,b);
Fin
fonction: factoriel(n:entier):entier
Debut
Si(n=0)alors
retourner 1;
Sinon
retourner n*factoriel(n-1);
FinSi
Fin
2.4.5 Exercices
• PGCD: Écrire une fonction qui prend en paramètres deux entiers et calcule leur
PGCD en utilisant l’algorithme d’Euclide.
• PPMC: Écrire une fonction qui prend en paramètres deux entiers et calcule leur
PPMC.
2.5. ANALYSE DES ALGORITHMES 45
• Division par soustraction successives: Écrire une fonction qui réalise la division
des entiers par soustractions successives.
• Palindrome: Écrire une fonction qui prend en paramètre une chaine de caractère
et dit si cette chaine est un palindrome.
2.5.1 Généralités.
• Le pire des cas. Il s’agit du cas où l’agorithme prend le plus grand temps.
• Le meilleur des cas. Il s’agit du cas où l’algorithme prend le plus petit temps.
• Le cas moyen. C’est le temps d’exécution moyen que prendra l’algorithme quelque
soit la taille du jeu de données.
La complexité retenue pour un algorithme est généralement donné par le pire des cas.
La O-notation.
Soit g(n) une fonction de N. O(g(n)), "O de g(n)", est l’ensemble des fonctions f(n) tel
qu’il existe une constante C et un entier n0 de sorte qu’à partir de n ≥ n0 , f (n) ≤ Cg(n)
. Ceci se note:
O(g(n)) = {f (n) : ∃ C, ∃n0 | ∀n ≥ n0 , f (n) ≤ Cg(n)}.
Sur le schéma, on voit que la courbe de f(n) est en bas de celle de Cg(n). Cg(n) est
la borne maximale de f(n).
La Ω-notation.
Soit g(n) une fonction de N. Ω(g(n)), "Omega de g(n)", est l’ensemble des fonctions f(n)
tel qu’il existe une constante C et un entier n0 de sorte qu’à partir n ≥ n0 , f (n) ≥ Cg(n).
Ceci se note:
Ω(g(n)) = {f (n) : ∃C, ∃n0 | ∀n ≥ n0 , f (n) ≥ Cg(n)}
Sur le schéma, on voit que la courbe de f(n) est au dessus de celle de Cg(n). Cg(n)
est la borne minimale de f(n).
2.5. ANALYSE DES ALGORITHMES 47
La θ-notation.
Soit g(n) une fonction de N. θ(g(n)) est l’ensemble des fonctions f(n) tels qu’il existe
deux constantes C1 et C2 et un entier n0 de sorte qu’à partir n ≥ n0 , f(n) est encadré par
C1 g(n) et C2 g(n). Ceci se note:
θ(g(n)) = {f (n) : ∃C1 , C2 et n0 | ∀n ≥ n0 , 0 ≤ C1 g(n) ≤ f (n) ≤ C2 g(n)}
Exercices:
n2
2. Montrer que 2
− 3n = θ(n2 )
Autres notations
ω-notation f (n) ∈ ω(g(n)) ⇔ g(n) ∈ o(f (n)). En d’autres termes, ω(g(n)) = {f (n) :
∀C > 0, ∃n0 | ∀n ≥ n0 , 0 ≤ Cg(n) < f (n)}
Exercices: