0% ont trouvé ce document utile (0 vote)
7 vues76 pages

Algorithmes Récursifs en Informatique

Le document présente un cours d'algorithmique et de méthodes de programmation pour la promotion G2 Informatique, dispensé par l'assistant Ali Koj. Il couvre des sujets tels que la complexité des algorithmes, les structures de données, et les concepts d'itération et de récursivité. L'objectif est d'aider les étudiants à comprendre et à choisir les structures de données appropriées pour optimiser l'efficacité des programmes.

Transféré par

kibujedia77
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues76 pages

Algorithmes Récursifs en Informatique

Le document présente un cours d'algorithmique et de méthodes de programmation pour la promotion G2 Informatique, dispensé par l'assistant Ali Koj. Il couvre des sujets tels que la complexité des algorithmes, les structures de données, et les concepts d'itération et de récursivité. L'objectif est d'aider les étudiants à comprendre et à choisir les structures de données appropriées pour optimiser l'efficacité des programmes.

Transféré par

kibujedia77
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

COURS D’ALGORITHMIQUE ET METHODES DE

PROGRAMMATION II

Promotion : G2 Informatique

Dispensé par : Ass. ALI KOJ


Cours d’Algorithmique II
G2 Informatique de Gestion 1

TABLE DES MATIERES


TABLE DES MATIERES ................................................................................................................. 1
PLAN DU COURS ......................................................................................................................... 3
BIBLIOGRAPHIE .......................................................................................................................... 3
BUT ET OBJECTIF DU COURS ...................................................................................................... 4
CHAPITRE Ier : DEFINITIONS ....................................................................................................... 5
CHAPITRE II : COMPLEXITE DES ALGORITHMES ......................................................................... 6
II. 1. Définition de la complexité ........................................................................................... 6
II. 2. Taux de croissance......................................................................................................... 6
II. 3. Expression des Algorithmes ........................................................................................... 9
CHAPITRE III. ITERATION RECURSIVITE ET RECURRENCE ......................................................... 11
III.1 Définition des concepts ........................................................................................... 11
III.2 Récursivité et algorithmes récursifs........................................................................ 12
CHAPITRE IV. STRUCTURES PRINCIPALES DES DONNEES ......................................................... 15
A. TABLEAU.......................................................................................................................... 15
A1. Représentation en mémoire ..................................................................................... 15
A 2. Opérations ............................................................................................................... 16
A.3 Tableau multidimensionnel ...................................................................................... 22
A.4 Traits principaux des tableaux et conclusion ........................................................... 25
B. ENREGISTREMENT ........................................................................................................... 29
B.1 Représentation en mémoire ..................................................................................... 30
B.2 Opérations ................................................................................................................ 31
B.3 Enregistrements de longueur variable ..................................................................... 32
C. LISTE ................................................................................................................................ 37
C.1 Représentation en mémoire ..................................................................................... 37
C.2 Opérations ................................................................................................................ 39
C.3 Liste chaînée circulaire à en tête .............................................................................. 42
C.4 Liste bidirectionnelle ................................................................................................. 43
C.5 Liste inversée ............................................................................................................ 44
D. PILE .................................................................................................................................. 48
D.1 Représentation en mémoire ..................................................................................... 48
D.2 Opérations ................................................................................................................ 49
D.3 Exemples .................................................................................................................. 50
E. FILE D’ATTENTE ............................................................................................................... 56
E.1 Représentation en mémoire ..................................................................................... 56
E.2 Opérations ................................................................................................................ 57
E.3 File d’attente à niveau de priorité ............................................................................ 57

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 2

E.4 Deque ........................................................................................................................ 58


F. ARBRE .............................................................................................................................. 59
F.1 Arbre binaire ............................................................................................................. 59
F.2 Arbre binaire complet ............................................................................................... 60
F.3 Arbre binaire étendu (arbre pair) ............................................................................. 61
F.4 Arbre binaire de recherche ....................................................................................... 63
F.5 Représentation en mémoire ..................................................................................... 63
F.6 Opération .................................................................................................................. 64
F.7 Arbre binaire ordonné............................................................................................... 71
F.8 Arbre généralisé ........................................................................................................ 74

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 3

PLAN DU COURS

BUT ET OBJECTIF DU COURS

CHAP Ier : DEFINITIONS

CHAP II : COMPLEXITE DES ALGORITHMES


CHAP III : ITERATION RECURSIVITE ET RECURRENCE
CHAP VI : STRUCTURES PRINCIPALES DES DONNEES EN MEMOIRE
PRIMAIRE

BIBLIOGRAPHIE
1. B. MUYER, Méthodes de programmation, Ed. Eyrolles, Paris, 1978.

2. Chantal RICHARD, Patrice RICHARD, Initiation à l’algorithmique 85 exercices


corrigés, Ed. Belin, Paris, Juin 1981.

3. Charles CORGE, Eléments d’informatique Informatique et démarche de l’esprit,,


Larousse, Paris, 1975.

4. Jean Pierre LAURENT, Jacqueline AYEL, Exercices commentés d’analyse et de


programmation, Ed. Dunod, Paris, 1985.

5. L. ALBERT, P. GASTIN, B. PETAZZONI, A. PETIT, N. PUECH, P. WEIL, Cours et


exercices d’informatique, Ed. Vuibert, Paris, 1998.

6. SEYMOUR LIPSCHUTZ, Les structures de données cours et problèmes, Série


Schaum, Hill inc, Paris, 1987.

7. Yves GRANJON, Informatique Algorithmiques en Pascal et en langage C, Ed.


Dunod, Paris, 1999.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 4

BUT ET OBJECTIF DU COURS

L’efficacité et la stabilité d’un programme sont principalement


soutenues par :
L’organisation de sa partie active (qu’on appelle généralement
l’ALGORITHMIQUE),
L’organisation de sa partie passive (qu’on appelle généralement
les DONNEES).

Il faudrait que les deux parties soient mutuellement organisées.


L’Algorithme vient de AL KWARIZMI est un ensemble des tâches à
accomplir.
Lorsque la relation qui est entre la nature d’une donnée et sa
structure est la lâche, cela a un impact négatif sur :

 La structure du programme qu’il utilise ;


 La consommation en temps et en espace dans l’exécution de
ce programme.

L’organisation des données et l’étude des Structures de données


sont donc des éléments essentiels en programmation.

Le but de ce cours est de pouvoir examiner quelques structures


de base et les différentes opérations courantes que ces structures admettent
afin d’amener les étudiants futurs analystes programmeurs, à faire un choix
raisonné et adéquat des structures face à un ensemble déterminé des
données.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 5

CHAPITRE Ier : DEFINITIONS

Les données peuvent être organisées de diverses manières. Le


modèle logique ou mathématique d’une organisation particulière des
données constitue ce que l’on appelle structure de données.

Le choix d’un modèle des données dépend de deux types de


considérations :
 La richesse STRUCTURELLE de ce modèle doit être suffisamment
grande pour refléter les relations effectives qui lient les données
dans le monde réel ;

 La simplicité de ce modèle doit être suffisamment grande pour


permettre une manipulation aisée et rapide des données qu’il
contient.

Une structure de données est donc une représentation


mathématique des données qui :

 Copie plus ou moins fidèlement les relations qui existent entre les
données dans le monde réel ;

 Permet un accès rapide à ces données.

Une structure de données est un paramètre déterminant de la


complexité en temps et en espace des Algorithmes.
D’une manière générale, en informatique nous aurons à faire à :
 Des Structures de données linéaires ;
 Des Structures de données non linéaires.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 6

CHAPITRE II : COMPLEXITE DES ALGORITHMES


II. 1. Définition de la complexité

L’analyse des Algorithmes constitue un domaine fondamental


dans le cours de structures de données.
Un algorithme est une liste parfaitement définie des étapes
nécessaires à la résolution d’un problème donné.
La taille des données à traiter est le critère le plus important pour
pouvoir mesurer l’efficacité d’un Algorithme.
Le temps et l’espace nécessaire à un Algorithme constituent les
deux objets principaux de la mesure de son efficacité.
La complexité d’un Algorithme M est la fonction f(n) qui donne le
temps d’exécution et/ou l’espace mémoire qui lui est nécessaire étant
donnée la taille n des données à traiter et la nature de ces données.
L’espace mémoire nécessaire est simplement un multiple de la
taille n des données
Un Algorithme qui recherche dans un dictionnaire des mots qui
ont une forte chance d’apparaître en début de ce dictionnaire n’aura pas la
même complexité en temps qu’un deuxième Algorithme qui recherche dans
ce même dictionnaire des mots qui ont une forte chance d’apparaître en fin
de ce dictionnaire.
L’évaluation de la complexité d’un Algorithme se fera
généralement en précisant le cas :
Favorable ;
Courant ;
Défavorable.

II. 2. Taux de croissance

Soit M un algorithme, et soit n la taille des données à traiter, il est


évident que la complexité f(n) doit augmenter avec l’accroissement de n.
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 7

En général ce sera le taux de croissance f(n) que l’on devra


considérer pour mieux cerner la complexité.
Cela se fait en comparant f(n) (le taux de croissance) à une
fonction de référence. Les fonctions de références les plus utilisées sont les
suivantes :
log2 n, n, n log2 n, n², n3, 2n

En considérant, les fonctions suivantes comme étant des


fonctions de références, nous pouvons donner les taux de croissance avec
des valeurs approximatives dans le tableau ci-après :
g(n) log2 n n n log2 n n² n3 2n
n
2 1 2 2 4 8 4
4 2 4 8 16 64 16
6 2,584962501 6 15,50978 36 216 64
8 3 8 24 64 512 256
9 3,169925001 9 28,52933 81 729 512
10 3,321928095 10 33,21928 100 1000 1024
11 3,459431619 11 38,05375 121 1331 2048
12 3,584962501 12 43,01955 144 1728 4096

On peut remarquer que pour une valeur donnée de n, log2 n


croît beaucoup plus lentement que 2n.
Une manière de comparer f(n) à ces fonctions de référence est
d’utiliser la fonction θ.

Supposons que f(n) et g(n) sont des fonctions définies sur


l’ensemble des entiers positifs avec la propriété que f(n) est bornée par un
multiple quelconque de g(n) pour presque toutes les valeurs de n, c’est-à-
dire qu’il existe un entier positif n0 et un nombre positif m tels que pour tout n >
n0 on a :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 8

|f(n) | ≤ m.|g(n) |,
Dans ce cas, on peut alors écrire que :
f(n) = θ (g(n))
Ce qui se lit ‘‘ f(n) est de l’ordre de g(n) ’’.

Exemple 1 : Soit un Algorithme qui calcule le polynôme


p(n)= a0 + a1n + a2n2 +a3n3+………+ aknk avec les ai  R
On demande de calculer la complexité de cet Algorithme

Solution : considérons ce qui suit :


Posons b0= a0, b 1 = a1, b2 = a2,..., bk = ak
Alors p(n) ≤ b0 + b1n + b2 n2 +…+ bk nk
P(n) ≤ nk( b0/nk+ b1n/nk + b2 n2/nk +…+ bk nk/nk)
P(n) ≤ nk( b0/nk+ b1/nk-1 + b2 /nk-2 +…+ bk)
Lorsque la valeur de n tend vers l’infini positif, b0/nk+ b1/nk-1 + b2
/nk-2 +…+ bk tend vers une constante

Lim ( b0/nk+ b1/nk-1 + b2 /nk-2 +…+ bk) = m

Si nk se nomme g(n), nous pouvons dire que : p(n) ≤ m. g(n)


Donc, la complexité de cet algorithme est de l’ordre θ (nk)

Exemple 2 : Soit l’algorithme suivant :


ALGORITHME PUIS
VARIABLE j, n, t : Entier
DEBUT
LIRE n, t
j 1
Tantque (j<=n) Faire
Exécuter G
j j*t
FinTantQue
FIN

Déterminer sa complexité.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 9

Solution
En considérant pour cet algorithme que les différentes valeurs
que j devra prendre sont les puissances successives de t, nous aurons :
t0, t1, t2, t3, , t4, , t5, ……
En revanche, G sera répété exactement X fois, avec X le premier
exposant tel que :
tx > n
En introduisant de par et d’autre de notre inéquation le
logarithme en base t, nous aurons : logt tx > logt n qui donne :
X . logt t > logt n
X > logt n
Par conséquent X = ( logt n)+1
La complexité de cet algorithme est de l’ordre de logt n, c.à.d. θ (logt n)

II. 3. Expression des Algorithmes

Les Algorithmes qui seront mentionnés dans ce cours pour


exprimer les différentes opérations utiliseront principalement cinq Algorithmes
de mécanismes de contrôle de flux d’action, qui sont :
L’itération,
La sélection,
La séquence,
L’affectation,
L’appel extérieur.
Le langage utilisé pour représenter ces mécanismes est le
pseudo code suivant :
Pour l’itération : Tantque c faire
X
Fintantque

Pour la sélection : Si c alors x


Sinon x
Finsi
Pour la séquence :
x KOJ NGALANDO
ASSISTANT ALI
CONCEPTEUR DES SYSTEMES D’INFORMATION
x
Cours d’Algorithmique II
G2 Informatique de Gestion 10

Pour l’affectation : Z1 Z2

Pour l’appel extérieur : Nom (A)

Avec C = une forme booléenne


x = mécanisme quelconque de contrôle de flux d’actions
Z1 et Z2 sont des zones quelconques se mémoire
Nom est l’indication de l’objet appelé
A = série des arguments attachés à l’appel extérieur

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 11

CHAPITRE III. ITERATION RECURSIVITE ET RECURRENCE


III.1 Définition des concepts

En informatique, le thème ITERATION se rencontre sous différents


aspects. Les algorithmes et les programmes utilisent l’itération pour accomplir
des tâches répétitives et évitent ainsi d’avoir à spécifier individuellement un
grand nombre d’états similaires. Les langages de programmation utilisent des
constructions des boucles pour cela.

Pour mettre en œuvre des algorithmes itératifs, une notion


proche de la répétition est la RECURSIVITE. Une technique ou un concept est
défini directement ou indirectement en fonction de lui-même.

La récursivité est un outil très important et très utile en


informatique. Des nombreux algorithmes sont en effet décrits de manière plus
descriptive et plus directe en terme de récursivité.
Une procédure est récursive si elle peut faire appel à elle –
même.
Pour qu’une procédure récursive ne continue pas à tourner
indéfiniment, elle doit être bien définie c’est – à – dire qu’elle doit remplir les
deux propriétés suivantes :
1. Elle doit posséder des critères appelés (critères de base)
pour lesquels la procédure ne s’appelle pas elle-même,
2. A chacun de ses appels, elle doit s’approcher de ses
critères.
Une autre notion importante est la RECURRENCE très proche de la
récursivité.
La récurrence, la récursivité et l’itération sont des concepts
fondamentaux qui apparaissent sous des multiples formes dans les modèles
de données, les structures de données et les algorithmes

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 12

III.2 Récursivité et algorithmes récursifs

Une définition récursive met en jeu une base, où un ou plusieurs


objets simples sont définis, et une étape de récurrence où des objets de
complexité supérieure sont définis en fonction des objets de la collection qui
sont de moindre complexité.
Pour transformer une fonction itérative en une fonction récursive,
nous devons définir UN INVARIANT DE BOUCLE, UNE BASE et UNE
RECURRENCE.
Un invariant de boucle est une assertion S qui est VRAIE par
récurrence chaque fois que nous atteignons un endroit particulier dans la
boucle.
L’assertion S est prouvée par récurrence sur un paramètre qui
mesure le nombre de fois que nous avons parcouru la boucle.

Exemple : calcul de la factorielle de n par une fonction non récursive.

Algorithme Factoriel
Variable Fact : entier
n, P : octet
Début
Lire n
Si (n = 0) Alors Fact 1

Sinon P 1
Fact 1
Tantque (P< = n) Faire
Fact Fact * P
P P+1
Fintantque
Finsi
Ecrire Fact
Fin

En considérant, la fonction ci-haut, nous allons nous intéresser à


la partie itérative de l’algorithme, c'est-à-dire aux lignes qui commencent par
Tantque, et qui finissent par Fintantque.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 13

Tantque (P< = n) Faire


Fact Fact * P
P P+1
Fintantque

Nous pouvons considérer le point d’entrée de la boucle, où nous


avons Tantque (P < = n) Faire dans cette partie de l’algorithme.

La base est considérée comme la première valeur à partir de


laquelle l’invariant de la boucle respecte la condition posée. Dans ce cas,
comme P a été initialisé à 1, alors nous pouvons prendre la base qui vaut 1.
BASE = 1

Chaque fois que nous atteignons le point fixé dans notre


algorithme, la valeur de la Fact vaut toujours la factorielle de P-1 donc :
INVARIANT vaut: S(i) = (i – 1)! pour tout i valeur de P.

Vérifions cette assertion pour toutes les valeurs de P si l’assertion


est correcte.
RECURRENCE

i S(i)
1 0! = 1
2 1!=2
3 2!=4
n-1 (n-2) !
n (n-1) !
Lorsque i aura la valeur de n+1 nous n+1 nou
n+1 n! quitterons la boucle et S(i) vaudra n !

Comme cet algorithme peut vérifier cette assertion on peut le


mettre sous forme de fonction récursive. Pour le faire, il faut :
1. remplacer la ligne d’entrée de la boucle par une

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 14

alternative Si,
2. appeler la fonction en modifiant la valeur qui doit être
passée en paramètre.
3. supprimer la ligne qui permet de changer la valeur qui
était dans la condition de la boucle,
Pour notre cas, nous aurons :
Si (P < = n) alors Fact n* factoriel (Fact, n-1)

Le calcul de la factorielle de n par une fonction


récursive deviendra:
FONCTION Factoriel (Variable Fact, n)
Si (n = 0) Alors Fact 1
Exit
Sinon P 1
Si (P< = n) alors P 1
Fact n * Factoriel(Fact, n- P)
Finsi
Finsi
Finprocedure

EXERCICES

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 15

CHAPITRE IV. STRUCTURES PRINCIPALES DES DONNEES


En mémoire primaire
A. TABLEAU
Un tableau est une structure linaire de n éléments homogènes
des données, dans laquelle la représentation de la relation entre les données
se fait au moyen des positions d’emplacement séquentielles et contiguës.
n est un entier appelé longueur ou taille du tableau.
L’accès aux différents éléments du tableau se fait à l’aide d’un
ensemble d’indices.
Un indice permet à un élément du tableau d’être repéré par sa
position relative dans ce tableau. Le plus petit indice de cet ensemble
d’indices est appelé borne inférieure, le plus grand indice de cet ensemble
d’indices est appelé borne supérieure.
Soit TAB, le nom d’un tableau de n éléments, alors TAB(k) est une
variable indicée et k dont la valeur appartient à l’ensemble des indices de
TAB, est l’indice de cette variable indicée.
Si A et B sont respectivement la borne inférieure et la borne
supérieure du tableau TAB, alors la structure est notée : TAB (A : B).Un tel
tableau est appelé tableau à une dimension.

A1. Représentation en mémoire

Les éléments du tableau étant des mots séquentiels et contigus,


le système d’exploitation n’a pas besoin de garder la trace de chaque
élément du tableau. Pour un tableau donné, il ne garde que sa base.
Exemple : Le tableau E(10 : 14) est représenté comme suit en
mémoire :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 16

Si l’adresse de E(10) est 317 et que chaque case a 3 bytes alors


E(11) aura l’adresse 320.

Pour chaque tableau on note la seule adresse du premier


élément qui est la BASE.

Si W est considérée comme l’espace occupé par un élément du


tableau TAB en mémoire, et si A représente la borne inférieure du tableau et
B la borne supérieure du tableau, nous aurons :

 La taille du tableau TAB(A : B) vaudra :


TAILLE de TAB(A : B) = B – A +1

 L’espace total occupé par le tableau en mémoire sera égal à :


ESPACE occupé par TAB(A : B) = W * TAILLE

 L’adresse d’un élément d’indice k en mémoire sera trouvée par :


ADRESSE de TAB(k) = BASE + (k – 1)*W

 La position d’un élément se trouvant à l’indice k vaudra :


POSITION de TAB(k) = k – Borne Inférieure + 1

A 2. Opérations

Les opérations possibles sur la structure des tableaux sont :


Accès séquentiel,
Insertion,
Suppression,
Tri,
Recherche,
Fusion.
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 17

Accès séquentiel

Lorsque l’on doit appliquer un traitement à chaque élément ou


à une grande partie d’éléments du tableau, il est mieux et naturel de
parcourir séquentiellement ce tableau en commençant par l’indice le plus
petit ou le plus grand.
La complexité d’une telle opération est θ(n) si la taille du tableau
est n.

Exemple : Soit le tableau Elie(4) suivant

On demande d’ajouter 2 à chaque élément de ce tableau.

Deux morceaux d’algorithmes possibles seraient :

La complexité serait de l’ordre θ(n) pour un tableau de taille n, Elie(1 : n)

Insertion d’éléments

L’insertion d’un élément autre que le dernier nécessite le


déplacement de la moitié des éléments du tableau, en moyenne vers la fin
de ce tableau. Il est impossible d’éviter ce déplacement, et cela augmente
à coup sûr la complexité de cette opération.

BELIER FOUINE CIVETTE


On demande d’insérer ‘‘TANTALE’’ à la position A(2)

BELIER TANTALE FOUINE CIVETTE

N.B : L’insertion du dernier élément est toujours permise.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 18

Suppression d’éléments

La suppression d’un élément autre que le dernier nécessite le


déplacement de chaque élément qui suit d’une position vers le début du
tableau de manière à ce que le tableau ne soit pas désarticulé cela risque
d’augmenter la complexité de l’opération.

BLANC ROUGE VERT BLEU

On demande de supprimer ‘‘ROUGE’’ de ce tableau

BLANC VERT BLEU

Pour le déplacement, il faut que :


A(3) occupe la place A(2)
A(4) occupe la place A(3)
Pour éviter ce déplacement, il suffit de marquer par une mention
spéciale l’élément supprimé tout en le laissant en place.

N.B : En principe, on ne peut supprimer que le dernier élément d’un tableau.

Tri d’éléments

L’opération de tri consiste à ordonner les données contenues


dans une structure selon une séquence déterminée.
Exemple : Trier ces boîtes selon l’ordre croissant et décroissant.

L’ordre strictement croissant si l’élément qui vient est strictement supérieur et


non égal ou inférieur.
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 19

Ce tableau est en ordre décroissant mais pas


en ordre strictement décroissant parce que
l’élément A(3) est égal à l’élément A(4). Il faut
que l’élément d’avant soit inférieur et non
inférieur ou égal.

Ce tableau est en ordre décroissant et aussi en


ordre strictement décroissant

Ce tableau est trié en ordre croissant et


décroissant.

Généralement, le tableau est une structure efficace pour


l’opération de tri et il existe des très nombreux algorithmes de tri utilisant le
tableau comme structure de base.
Nous illustrons cette opération pour le tri appelé « TRI BULLE ». Ce
tri opère de la manière suivante :
Soit un tableau T(1 : n) qui a n éléments en ordre croissant.

La 1ère étape compare T(1) et T(2), puis


T(2) et T(3), puis
T(3) et T(4), puis
T(4) et T(5)
T(n-2) et T(n-1), puis
Enfin T(n-1) et T(n).

Cette 1ére étape place correctement T(n). Elle nécessité (n-1) comparaisons.

La 2ère étape compare T(1) et T(2), puis


T(2) et T(3), puis
T(3) et T(4), puis
T(4) et T(5)

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 20

Enfin T(n-2) et T(n-1).


Cette 2ème étape place correctement T(n-1). Elle nécessite (n-2)
comparaisons.

La 3ère étape compare T(1) et T(2), puis


T(2) et T(3), puis
T(3) et T(4), puis
T(4) et T(5)
Enfin T(n-3) et T(n-2).
Cette 3ème étape place correctement T(n-2). Elle nécessite (n-3)
comparaisons.
Ainsi de suite jusqu’à la dernière étape qui va comparer T(1) et
T(2). Cette dernière étape place correctement T(2) et elle a nécessité une
seule comparaison.
Calculons la complexité de l’algorithme de tri bulle
Le nombre total des comparaisons égal :
(n-1) + (n-2) + (n-3) + …..+ 2 + 1 = (((n-1)+1)/2)*(n-1))
= n(n-1)/2
= (n2-n)/2

En mettant n2 en évidence, on obtient : = n2(1-1/n)/2


La complexité de cet algorithme est de l’ordre de θ(n2) C
L’algorithme du tri bulle est :

Celle-ci est une structure de deux instructions.

Recherche
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 21

Lorsque l’on doit chercher un donnée précise X dans un tableau


non trié, la seule possibilité est la recherche séquentielle.
Dans cette recherche l’algorithme doit parcourir tous les
éléments du tableau se trouvant devant pour trouver X.
Si X ne se trouve pas dans le tableau, l’algorithme aura nécessité
(n + 1) comparaisons pour un tableau de taille n.
Si X se trouve dans le tableau on peut s’appuyer sur la notion
probabiliste pour déterminer la complexité de cette opération : Si pk est la
probabilité que X soit dans l’élément T(k). Si q est la probabilité que X ne soit
pas dans le tableau T(1 : n), si l’algorithme utilise m comparaisons lorsque X se
trouve dans l’élément T(n),
Alors le nombre moyen des comparaisons est :

= 1p1 + 2p2 + 3p3 + …+ mpm +…. +npn + (n + 1)q


=1. (1/n) + 2. (1/n) + 3. (1/n) +…+ m. (1/n) +…+n. (1/n) + (n+1). q
= (1+2+3+…+m+…+n). (1/n) + (n+1).q
= (n. (n + 1)/2). (1/n) + (n + 1). q

Lorsque la donnée est là ou si elle n’est pas là, la complexité doit


valoir θ(n).
Lorsque l’on doit chercher une donnée précise x dans un
tableau trie, la recherche séquentielle est toujours possible mais il existe dans
ce cas une recherche plus performante et plus efficace appelée la
recherche binaire.
Dans cette recherche à chaque étape l’algorithme réduit de
moitié la partie du tableau restant à explorer.
Soit le tableau a(1 : n) trié, soit x la donnée à chercher dans ce
tableau, un énoncé formel de l’algorithme de recherche binaire est :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 22

La recherche binaire et de la complexité de θ(log2n).

10 14 19 20 21 30 40 56 77 79 81 99
1 2 3 4 5 6 7 8 9 10 11 12

Fusion

Cette opération est triviale elle doit allouer un nouveau tableau


dont la taille peut absorber tous les éléments des tableaux à fusionner.

TAB1: A B C D TAB2: E F G H I J TAB3: A B C D E F G H I J


1 2 3 4 1 2 3 4 5 6 1 2 3 4 5 6 7 8 9 10

A.3 Tableau multidimensionnel

Un tableau multidimensionnel est un tableau TAB(a : b, c :d,


e :f,……) dans lequel chaque élément est repéré par plusieurs indices. La cas
spécifique d’un tableau a (1 : m, 1 : n) à deux dimensions fournit une structure
formée de m lignes et de n colonnes généralement appelé matrice de taille
m x n.
Logiquement on peut représenter un tel tableau, par exemple
de taille 5 x 9 comme suit :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 23

A (3 , 4) est l’élément situé au croisement de la 3ème ligne et de la


4ème ligne de cette structure.
Physiquement ce sont les lignes ou les colonnes de la matrice qui
sont logés dans les blocs des mémoires successifs. On aura donc (m x n)
position de mémoire successives.
Pour le stockage des colonnes (exemple d’un tableau A (1 :5,
1 :9))

Exemple a :

1 5 9 2 6 10 3 7 11 4 8 12
A(1,1) A(2,1) A(3,1) A(1,2) A(2,2) A(3,2) A(1,3) A(2,3) A(3,3) A(1,4) A(2,4) A(3,4)

Pour le stockage des lignes (exemple d’un tableau A(1 :5, 1 :9))

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 24

Si w est le nombre de bytes (octets) consommés par un élément


du tableau A (1 : m, 1 : n), si Base(A) est l’adresse du début de ce tableau
alors l’adresse de l’élément A (j, k) en mémoire est :
Base (A) + w [m (k-1) + (j-1)] en cas de stockage des colonnes,

Base (A) + w [n (j-1) + (k-1)] en cas de stockage des lignes.

Exemple : A (1:2, 1:4)


1 2 3 4
1 A B C D
2 E F G H

Supposons que chaque élément du tableau consomme 7 bytes.


Calculer l’adresse de l’élément A (2,3) en cas du stockage en
colonne si la base (A) = 0

= Base (A) + 7 [2 (3-1) + (2-1))


= 0+7 (4+1)= 35

Représentation de ces colonnes en mémoire

D’une manière générale si a est un tableau a(d1 :f1,d2 :f2,d3 :f3,…,


dn, fn) ayant n dimensions et de taille m1*m2*m3*….*mn, alors l’adresse de
l’élément a(k1, k2, k3,….kn) en mémoire est :

Pour le stockage des colonnes :


ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 25

Base(A)+[w(((…EnLn-1+En-1)Ln-2+Ln-2)+…+E3)L2+ E2)L1+E1]
Pour le stockage des lignes :
Base(A)+[w (((…E1L2+ E2)L3 + E3)L4+…+ En-1) Ln+ En)]

Avec :
Li = borne supérieure – borne inférieure +1
Ei = ki – borne inférieure
w = nombre de bytes nécessaires pour stocker un élément du tableau a.
Ei représente en fait l’indice effectif qui exprime le déplacement de ki par
rapport à l’indice inférieur et relativement dans l’intervalle (di : fi).

Exemple : Soit un tableau A (2 :8, -4 :1, 6 :10) à trois dimensions rangées par
lignes en mémoire et dont l’adresse de début est 38.

Si chaque élément consomme 2 bytes, trouvez l’adresse de


l’élément A (5 ;-1, 8)

Ecrire les longueurs de chaque indice (3 indices)

L1 = 8 – 2 = 7
L2 = 1 + 4 + 1 = 6
L3 = 10 – 6 + 1 = 5

Calcul des indices effectifs de l’élément A (5, -1, 8)


E1 = 5 – 2 = 3
E2 = -1 + 4 = 3
E3 = 8 – 6 = 2

L’adresse est : Base (A) + w [(E1. L2 + E2) L3 + E3]


= 38 + 2 [(3. 6 + 3) 5 + 2]
= 38 + 214
= 252

b. A (3, -5, 6) impossible parce que -5 n’appartient pas au tableau.

A.4 Traits principaux des tableaux et conclusion

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 26

Les éléments d’un tableau sont reliés par leurs relations physiques
en mémoire et non par une autre quelconque information,
Le tableau est une structure statique. Une fois alloué sa taille ne
peut plus être modifiée,
Il y est généralement malaisé de procéder aux opérations
d’insertion de suppression d’un élément autre que le dernier.

EXERCICES

1. Soit le tableau G(-5 : 9). Il est demandé :


De le représenter
De calculer sa taille

2. Soit le tableau D(-5 :59) dont la taille de chaque élément est de 7 octets. Calculer
l’adresse de l’élément dont l’indice est :
a) i avec i qui respecte la condition (-5 ≤ i ≤ 59)
b) 53
c) 85

3. Soient les données suivantes du tableau TAB(15 : 107) :


Base(TAB)= 91
W= 4
a) Donnez l’adresse de l’élément se trouvant à la position 57
b) Donner l’adresse de l’élément se trouvant à l’indice 57
4. On donne le tableau INFO(4 :23, -7 :12, 4 :10). Si le premier élément de ce tableau
occupe l’adresse 304 dans la mémoire, et si chaque élément occupe 4 bytes,
déterminez :
a) La taille de se tableau si il est disposé par colonne
b) La taille de se tableau si il est disposé par ligne
c) L’espace total occupé par ce tableau en mémoire
d) L’adresse de l’élément INFO(8, 10, 0) si le stockage se fait par ligne
e) L’adresse de l’élément INFO(8, 10, 0) si le stockage se fait par colonne
f) La position de l’élément INFO(11, 9, -1) si le stockage se fait par colonne
g) La position de l’élément INFO(11, 9, -1) si le stockage se fait par ligne

5. Ecrire un algorithme qui divise par 4 tous les éléments contenus dans le tableau
EL(1 :15) de réels.

6. Construire un algorithme qui donne la sommation de toutes les valeurs contenues


dans le tableau SOM(-1 :5, 1 :13).

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 27

7. Soit le tableau S(1 :n) dont les éléments sont des réels. Il vous est demandé :
a) D’écrire un algorithme qui initialise à 0 tous les éléments d’indice PAIR, et à
3 tous les éléments d’indice IMPAIR.
b) D’écrire un algorithme qui divise par 3 tous les multiples de 6 et de 4
contenus dans ce tableau.
c) De calculer la complexité de chacun de ces deux algorithmes

8. On désire suivre l’évolution du nombre d’étudiants à l’Institut Supérieur de


Statistique, en utilisant le modèle tableau. On dispose de deux tableaux de
même taille soit 20. Le premier tableau contient les promotions, le second les
effectifs. La promotion se trouvant à la position k dans le premier tableau a son
effectif se trouvant à la même position dans le second tableau. On vous
demande de :
a) Représenter cette structure.
b) Proposer un algorithme qui remplace le nombre d’étudiants de G2 INFO,
par une valeur qui sera lue.
c) Supprimer la promotion de G3 DEMO.
d) Ajouter une nouvelle promotion de L3 INFO en considérant que les
dernières cases de chaque tableau sont vides.

9. On demande de construire un algorithme qui fusionne deux tableaux des entiers,


et trie le tableau trouvé en ordre croissant. Sachant que le premier tableau a une
taille de 37, et le second de 21.

10. Soit un modèle qui utilise 4 tableaux comme structure. Dans le premier tableau
nommé ETUDIANT on y stocke les noms de tous les étudiants de G2 INFO/ISS/SHD.
Le second tableau nommé ADRESSE on y stocke les communes de résidence de
chaque étudiant, le troisième tableau nommé ACTIVITE on y stocke l’activité
principale de chaque étudiant, et le dernier tableau nommé ETAT on y
enregistre l’état civil de chaque étudiant.
Il est à signaler que les 4 tableaux ont une même taille qui est de 110, et
toutes les informations à une adresse i quelconque dans tous les tableaux font
références à une même personne.
Ecrire un algorithme complet avec nom et entête qui donne :
a. La liste de tous les étudiants célibataires qui habitent la commune
LUBUMBASHI. (nom, activité, commune.

11. On se décide de gérer les différentes informations concernant les vaccinations

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 28

des enfants dans un service de pédiatrie. Pour y parvenir, le responsable vous


demande de concevoir une structure de données à l’aide des modèles
TABLEAU.
- le premier tableau est à une dimension et contient les noms et les post
noms des enfants
- le deuxième tableau est à deux dimensions (Quatre colonnes)
La première colonne contient les dates de naissance, la deuxième les dates
de l’administration du vaccin BCG, la troisième colonne les dates de
l’administration du vaccin ANTI TETANIC, la dernière les dates de
l’administration de vaccin ROUGEOLE.

Ces deux tableaux ont 143600 lignes.


Ecrire un algorithme qui :
a) affiche la liste de tous les enfants qui ont reçu les trois vaccins
b) affiche la liste des enfants qui sont nés avant le 02/01/2007, et qui ont
reçu au moins deux vaccins
c) affiche la liste du premier enfant trouvé dans les tableaux, qui a été
vacciné de la rougeole à une date qui sera lue

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 29

B. ENREGISTREMENT

Les ensembles d’information sont souvent organisés en une


hiérarchie de champs, d’enregistrements et de fichiers.
Par définition, un enregistrement est un ensemble d’éléments de
données reliés, chacun d’eux étant appelé champ ou attribut.
Un fichier est un ensemble d’enregistrements analogiques.
Chaque élément d’information peut être un item composé de
sous-items, et peut être décomposé en items élémentaires (appelés atomes
ou scalaires). Les noms donnés aux différents éléments d’information sont
appelés identificateurs.
Un enregistrement doit avoir :
 Un ensemble de données hétérogènes, c’est-à-dire qu’il peut
réunir des données de types différents.
 Les éléments de données dans un enregistrement sont indexés par
noms d’attributs, aussi il peut ne pas exister de classement de ces
éléments dans un ordre naturel.
Exemple :
On présente les informations suivantes utilisées dans une école
maternelle concernant un enfant.

La structure de l’enregistrement ci haut peut être décrite comme


suit :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 30

Le numéro à gauche de
chaque indicateur est appelé numéro de
niveau.

Chaque item composé est


suivi des items élémentaires qui le
constituent, et dont le niveau est d’une
unité inférieure à celui de l’item composé.

Un item est dit composé si et


seulement si il est immédiatement suivi par un item dont le numéro de niveau
lui est supérieur.
Dans une structure d’enregistrement ; certains identificateurs
peuvent désigner des tableaux d’éléments.

Exemple
En remplaçant la première ligne de la structure par : 1 Enfant (134)
Ceci indique un fichier de 134 enregistrements.

Dans cette structure, tous les éléments se trouvant dans une


colonne doivent être nécessairement de même type.

B.1 Représentation en mémoire


Lorsque les données composant les enregistrements sont
homogènes, elles seront rangées dans un tableau, dans le cas ou elles sont
hétérogènes, elles seront représentées par des tableaux parallèles.

Exemple
Soit la liste suivante reprenant les adhérents d’une association, et
comportant le nom, l’âge, le sexe, et le numéro de téléphone de chaque
membre. Nous aurons 4 tableaux parallèles : NOM, AGE, SEXE, PHONE. Par
conséquent pour un indice donné k, les éléments NOM(k), AGE(k), SEXE(k),
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 31

PHONE(k) appartiennent au même enregistrement


.

B.2 Opérations
Les différentes opérations possibles dans la structure
enregistrement sont :
Parcours séquentiel
Recherche d’un item
Ajout d’un item
Suppression d’un item

Parcours séquentiel
Cette opération permet d’accéder à tous les items de la
structure. Elle permet de parcourir séquentiellement tous les items.

Recherche d’un item


Cette opération permet de rechercher un item de la structure.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 32

Ajout d’un item


Cette structure permet d’ajouter un nouvel élément à la fin. La
structure prévoit toujours un emplacement BLANK permettant de recevoir un
nouvel item.
Un morceau d’algorithme possible pour effectuer cette
opération serait :

TantQue (Nom_Fichier Not EOF) Faire


Nom_Fichier.suivant
FinTantQue
Nom_Fichier . Nouveau
Colonne1 Valeur1
Colonne2 Valeur2
… …
ColonneN ValeurN

Suppression d’un item


Cette opération permet de supprimer un item de la structure. Il
est commode de supprimer le dernier item.
Pour supprimer un item qui n’est pas le dernier dans un fichier, il
faut d’abord rechercher l’élément à supprimer (La position de l’élément à
supprimer, puis parcourir séquentiellement les autres éléments restant du
fichier.
La suppression dans un fichier est une opération composée.

B.3 Enregistrements de longueur variable


Lorsque certains éléments d’informations d’un enregistrement
peuvent contenir zéro ou plusieurs informations on parle d’un enregistrement
de longueur variable.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 33

Exemple :
Un parent est identifié au niveau de l’école de ses enfants
par les informations suivantes : son nom, sa profession, son lieu de
service.
Ces informations peuvent être représentées de la manière
suivante :

S’il faut lier chaque parent à son enfant, ceci devient


difficile parce qu’un parent peut avoir plusieurs enfants.

En supposant que KASONGO MWAMBA puisse avoir 2


enfants, ILUNGA SAMBA puisse avoir 3 enfants, TAMBWE
MUTOMBO puisse avoir 1 enfant et TSHIKA KONGOLO puisse avoir
2 enfants, on peut se proposer de représenter ces informations
de la manière suivante :

Nous remarquons que les trois dernières colonnes possèdent les


informations de même nature, par conséquent une solution serait de pouvoir
former un autre modèle qui prendrait la structure de l’enfant. Et nous aurons :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 34

Ainsi, pour trouver les enfants d’un parent il faut parcourir tous les
enregistrements se trouvant dans l’enregistrement ENFANT ayant le nom du
parent dans la première colonne.

EXERCICES

1) Soit la liste d’entrées suivante correspondant aux enregistrements


d’un fichier d’étudiants :
1 Etudiant, 2 Numéro, 2 Nom, 3 Nom de famille, 3 Prénom,
2 Sexe, 2 Date de naissance, 3 Jour, 3 Mois, 3 Année,
2 Cours, 3 Théorique, 3 Pratique
a) Tracer la structure hiérarchique correspondante
b) Quels sont les items élémentaires ?

2) Trois avocats, PIERRE, CLARISSE et BOB, partagent les mêmes


bureaux. Chacun d’eux possède sa propre clientèle, et les
différentes informations sont enregistrées dans un modèle
enregistrement se nommant CLIENT_AVOCAT, possédant deux
colonnes ; l’une se nommant CLIENT, et l’autre AVOCAT
a) Ecrire un algorithme qui affiche tous les clients de l’avocat se
nommant CLARISSE.
b) Ecrire un algorithme qui nous donne les positions occupées
par les clients de l’avocat PIERRE.
c) Ecrire un algorithme qui nous donne le nombre de tous les
clients de l’avocat BOB.
d) Ecrire un algorithme qui insert le client HUGUES de l’avocat
PIERRE dans cette structure.
e) Ecrire un algorithme qui supprime le client CLASS de l’avocat
BOB.
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 35

3) Une institution d’enseignement supérieur utilise la structure suivante


d’enregistrement de l’information relative à chaque étudiant.

1) Combien ce fichier contient-il d’items élémentaires ?


2) Ecrire un algorithme qui lit l’IDENTITE d’un étudiant, trouve et
imprime sa position, et sa promotion.
3) Ecrire un algorithme qui recherche et affiche le parcours d’un
étudiant qui sera lu.

4) Une institution d’enseignement universitaire se décide de gérer


les différentes informations à l’aide de 3 fichiers. Le premier se
nomme ETUDIANT et comprend les informations suivantes :
NUMMAT, NOMETU, DATENAIS, ADRESSEET, le deuxième fichier se
nomme ACADEMIQUE comprend les informations suivantes :
ANNEEACAD, PROMOTION, SESSION, POURCENTAGE, DECISION.
Ecrire un algorithme qui :
1) Donne le cursus académique d’un étudiant qui sera lu au
clavier (lire le matricule de l’étudiant)
2) Donne la liste des étudiants ayant fait au moins deux fois une
même promotion
1) Le garage Elouisk se décide de gérer les entretiens de différents
véhicules des abonnés par une structure enregistrement. Elle dispose
trois fichiers différents dans lesquels il stocke ses informations.
Le premier nommée ABONNE contient les informations suivantes sur les
abonnés qui sont :
 Le code de l’abonné
 Le nom de l’abonné
 L’adresse physique de l’abonné
 La profession de l’abonné
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 36

 Un numéro de contact

Le second nommé VEHICULE contient les informations suivantes sur les


véhicules qui sont :
 La plaque du véhicule
 Le type du véhicule (Voiture, Camion, Camionnette, Jeep,…)
 La marque du véhicule
 L’année de fabrication
 L’année de sa première mise en circulation
 Le code de l’abonné

Le dernier nommé ENTRETIEN contient les informations suivantes sur les


entretiens. Ces informations sont les suivantes :
 La date de l’entretien
 La plaque du véhicule entretenu
 L’observation de l’entretien
 La date du prochain entretien

Ecrire un algorithme qui donne :

a) La liste de tous les véhicules entretenus à une date donnée (la


date sera lue au clavier)
b) La liste de tous les véhicules par propriétaire
c) Pour un véhicule X donné, les identités de son propriétaire ainsi
que tous les entretiens réalisés sur ce véhicule (Observation)
d) La liste de tous les véhicules qui seront entretenus prochainement
à la date du 15 Mai 2009

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 37

C. LISTE
Une liste est une collection linéaire d’éléments d’informations
dont chacun spécifie une information spéciale qui permet de relier ces
éléments entre- eux.

Dans ces conditions, les éléments successifs de la liste n’ont plus


besoin d’occuper des positions adjacentes (contiguës) en mémoire.

Si cette information qui permet de relier les éléments d’une liste


entre – eux est un lien ou pointeur, on parle alors d’une LISTE CHAINE (ou
LISTE MONODIRECTIONNELLE).

Une liste chaînée est un ensemble des nœuds dans lesquels


chaque nœud est divisé en deux parties :

 La première contient l’information dont l’élément est porteur,


 La seconde contient l’adresse du nœud suivant dans la liste.

Exemple : La structure des mots suivants en mémoire.

Début = Base (L) = 101


Permet de construire la liste chaînée suivante :

C.1 Représentation en mémoire

A moins qu’il ne soit spécifié autrement une liste sera rangée en


mémoire à l’aide de deux tableaux parallèles.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 38

Le premier qu’on appelle souvent INFO contiendra toutes les


parties « information » des nœuds de cette liste,
Le deuxième que l’on appelle souvent LINK contiendra toutes les
parties « pointeur » des nœuds de cette même liste.

Ainsi INFO(k) et LINK(k) contiennent respectivement la partie


information et la partie pointeur d’un nœud de cette liste situé à l’adresse k.

En plus deux objets seront nécessaires pour la représentation


d’une liste :
- Une variable appelée généralement START qui contient toujours la
position du premier élément de la liste,
- Une valeur généralement appelée NIL qui indique la fin de la liste.

Exemple : Une maison de vente dans laquelle chacun des commis ne


s’occupe que de ses propres clients peut se représenter comme
suit :

Les clients du commis JESUS sont : Luther, Colomban, Irénée, Paul, Wesley,
Martin, Elie.
Les clients du commis ARCHANGE sont : Chérubin, Séraphin, Michael, Gabriel.
Les clients du commis PAPE sont :
PAPE n’a pas de client son pointeur = NIL.
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 39

Les clients du commis MOISE sont : Josué, Aaron, Caleb.

Matthieu et Marc sont des clients sans commis, ils sont inaccessibles.

N.B. : Les éléments de la liste ne sont pas contigus.

C.2 Opérations

Accès séquentiel : accès aux éléments successifs d’une liste,


Recherche : accès à la position d’un élément de la liste contenant une
donnée déterminée,
Attribution : c’est le fait d’accorder un élément de la liste à une nouvelle
donnée,
Allocation : opération par laquelle le système d’exploitation alloue un nouvel
élément pour la liste,
Insertion : c’est l’ajout d’un élément dans la liste, opération qui allonge
dynamiquement la taille de la liste.
Suppression : destruction d’un élément de la liste, opération qui raccourci
dynamiquement la taille de la liste,
Ramassage des ordures (GARBAGE COLLECTOR) : opération servant à
construire une liste particulière composée des nœuds libres ou
utilise.

Accès séquentiel

Lorsque l’on doit appliquer un traitement donné à chaque nœud


ou à une grande partie des nœuds d’une liste, la seule possibilité est le
parcours séquentiel de tous les nœuds concernés.
Soit une liste :

Le parcours séquentiel est :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 40

La complexité est θ(n) si il y a n nœuds dans la liste.

Recherche
Lorsque l’on doit chercher une donnée précise X dans une liste
des données non triées, la seule possibilité est la recherche séquentielle

L’algorithme est :

Ramassage des ordures

Il peut s’avérer intéressant, après une longue série de suppression


et d’insertion dans la liste pour des raisons de gestion d’espace de former
une liste particulière de case mémoire non utilisée.
Le début de cette liste particulière sera généralement conservé
dans la variable appelé AVAIL. Dès qu’un nœud devient inutile ou
inaccessible, l’algorithme de ramassage des ordures devra l’insérer dans la
liste issue de AVAIL.

Insérer les nœuds inutiles ou inaccessibles aussitôt qu’il le devient,


risque de consommer trop de temps d’exécution. Pratiquement cette
insertion se fait périodiquement et globalement pour tous les espaces inutiles.
En marquant dans un premier temps les espaces encore utiles de

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 41

toutes les listes,


Dans un second temps en collectant tous les espaces non
marqués pour les insérer dans la liste des cases disponibles.

Attribution et insertion

Lorsqu’une nouvelle donnée arrive l’opération attribution peut


être appliquée pour lui trouver un élément dans la liste des cases disponibles.

Algorithmiquement le cœur de cette opération d’attribution est :

Allocation et insertion

Lorsqu’une nouvelle donnée arrive, cette opération (allocation)


sert à demander un nouvel élément au système d’exploitation.
Schématiquement :

P
P est un nœud situé quelque part en mémoire

Si la donnée X qui réclame cet élément doit être insérée en


début de la liste des éléments valides, un algorithme possible est :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 42

Suppression et insertion

Cette opération sert à :


- Enlever un nœud B devenu inutile de la liste des éléments utiles, et
- Insérer ce nœud dans la liste des éléments disponibles.

Si on doit insérer le nœud B en début de la liste des cases libres,


un algorithme possible serait :

C.3 Liste chaînée circulaire à en tête

Une liste chaînée circulaire à en-tête est une liste chaînée qui
contient toujours un nœud spécial (le nœud d’en-tête) situé en tête de la
liste et qui est pointé par le dernier nœud.

START

Le nœud A est le nœud d’en-tête.


Un liste chaînée circulaire à en-tête est vide si Link(START) = START

START

Donc la position du 1er nœud d’une liste chaîne circulaire à en-


ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 43

tête est : Link(START) et non START.


Une liste chaînée circulaire à en-tête a surtout l’avantage de rendre
des nombreuses opérations plus faciles à formuler et à implémenter car :
- Le pointeur « Nil » n’est plus utilisé,
- Chaque nœud ordinaire possède un précédent et un suivant, et le
premier nœud ne constitue plus obligatoirement un cas particulier.

C.4 Liste bidirectionnelle

Une liste bidirectionnelle est une liste qui peut être parcourue de
la tête vers la queue et de la queue vers la tête, c’est-à-dire étant donnée la
position n d’un nœud, nous avons immédiatement accès au nœud qui le suit
et à ce lui qui le précède.

Un nœud dans une liste bidirectionnelle est alors divisé en trois


parties :
- Un champ d’information, appelons le toujours « INFO» qui contient les
données de ce nœud,
- Un champ de pointeur, appelons le « FORW» qui contient la position du
nœud suivant,
- Un champ de pointeur, appelons le « BACK» qui contient la position du
nœud précédant.

En plus, une liste « bidirectionnelle » est dotée de deux autres


pointeurs :
« FIRST» qui pointe sur le 1er nœud de la liste, et
« LAST» qui pointe sur le dernier nœud de la liste.
Une liste bidirectionnelle est rangée en mémoire à l’aide de trois tableaux
parallèles :
Un tableau pour « info»
Un tableau pour « back»
Un tableau pour « forw»

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 44

Exemple : On désire parcourir les noms de cinq livres de Moïse tantôt dans
leurs ordres alphabétiques, tantôt dans leurs ordres d’apparition
dans la bible. Cette liste pourra se représenter de la manière
suivante :

« FIRST» et « Forw» concerne l’ordre d’apparition de ces livres dans la bible,


« LAST» et « Back» concerne l’ordre alphabétique.

Soit le nœud X de position P dans une liste bidirectionnelle, on


sait alors que Back(P) est la position du nœud qui précède X, Forw(P) est la
position du nœud qui suit X, c’est-à-dire schématiquement nous avons :

Lorsque l’on souhaite supprimer le nœud x de pointeur p il suffit


de modifier ses voisins de gauche et de droite de la manière suivante :

FORW (Back(p)) FORW(p)


Back(FORW(p)) Back(p)

C.5 Liste inversée

La notion des listes inversées permet de généraliser l’utilisation de


la liste chaînée et de lever certaines restrictions imposées sur les informations
des nœuds d’une liste simple.

Dans l’exemple (commis clients) il serait malsain (malaisé) de


représenter le cas d’un client qui serait géré par plusieurs commis.
Dans une liste inversée, les nœuds sont dépouillés de leurs
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 45

pointeurs et ces pointeurs sont rangés dans une séquence voulue


(généralement sous forme de tableau) à la suite d’un argument donné.

Sous forme d’une liste inversée, les clients de l’exemple cité ci


haut perdraient leurs parties Link est la représentation deviendrait :

Exercices
2) Une entreprise industrielle qui achète les produits de transformation
désire ranger les différentes informations concernant les produits et les
fournisseurs de ces produits dans une liste mono directionnelle.
Les informations concernant les produits sont :
 Code du produit
 Nom du produit
 Unité de consommation du produit
 Prix unitaire du produit
Les informations concernant les fournisseurs sont :
 Code du fournisseur
 Nom du fournisseur
 Adresse du fournisseur
Pour chaque nœud qui concerne le produit, on y ajoute un code
spécial P et pour chaque nœud qui concerne le fournisseur, le code
spécial est F
Sachant que l’adresse du fournisseur donne le nom du pays
Ecrire un algorithme qui :

a) Donne les produits qui ont un prix unitaire inférieur à 2000 £


b) Donne le fournisseur le moins cher pour un produit X lu
c) Donne la liste de tous les fournisseurs qui livrent au moins 3 produits
d) Donne la liste de tous les produits qui sont livrés par au moins 3
fournisseurs
e) Donne la liste de tous les fournisseurs qui livrent le produit nommé
’’COKE’’
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 46

f) Modifie de 3% le prix unitaire de tous les produits fournis par le


fournisseur de code FIH-31

3) Le garage Elouisk se décide de gérer les entretiens de différents


véhicules des abonnés par une structure liste. Elle dispose trois listes
différentes dans lesquelles elle stocke ces informations.
La première nommée ABONNE contient les informations suivantes sur
les abonnés qui sont :
 Le code de l’abonné
 Le nom de l’abonné
 L’adresse physique de l’abonné
 La profession de l’abonné
 Un numéro de contact

La seconde nommée VEHICULE contient les informations suivantes sur


les véhicules qui sont :
 La plaque du véhicule
 Le type du véhicule (Voiture, Camion, Camionnette, Jeep,…)
 La marque du véhicule
 L’année de fabrication
 L’année de sa première mise en circulation
 Le code de l’abonné

La dernière nommée ENTRETIEN contient les informations suivantes sur


les entretiens. Ces informations sont les suivantes :
 La date de l’entretien
 La plaque du véhicule entretenu
 L’observation de l’entretien
 La date du prochain entretien

Ecrire un algorithme qui donne :


a) La liste de tous les véhicules entretenus à une date donnée (la
date sera lue au clavier)
b) La liste de tous les véhicules par propriétaire
c) Pour un véhicule X donné, les identités de son propriétaire ainsi
que tous les entretiens réalisés sur ce véhicule (Observation)
d) La liste de tous les véhicules qui seront entretenus prochainement
à la date du 15 Mai 2009

3). Une entreprise industrielle qui achète les produits de transformation


désire ranger les différentes informations concernant les produits et les
fournisseurs de ces produits dans une liste chaînée mono directionnelle
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 47

composée de deux sortes de nœuds.

Les informations concernant Les informations concernant les


les produits sont : fournisseurs sont :
 Code du produit  Code du fournisseur
 Nom du produit  Nom du fournisseur
 Unité de consommation  Adresse du fournisseur
 Prix unitaire du produit fourni

Pour chaque nœud qui concerne le PRODUIT, on y ajoute un code spécial


P et pour chaque nœud qui concerne le FOURNISSEUR, le code spécial
est F.

L’adresse du fournisseur donne le nom du pays, et un nœud du produit est


suivi par tous les nœuds des fournisseurs qui livrent ce produit.

P CodeProduit NomProduit UniteCons Link

Nœud PRODUIT

F CodeFour NomFour Adresse PrixUnit Link

Nœud FOURNISSEUR
Ecrire un algorithme qui donne :
1) Le(s) produit(s) qui ont un prix unitaire inférieur à 2000$ (le nom du
produit, le prix de l’unité de consommation, le nom du fournisseur)

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 48

D. PILE

Une pile est une structure linéaire en laquelle il n’est possible


d’ajouter ou de retirer les éléments qui a une seule extrémité appelé sommet.
Donc le dernier élément ajouté à une telle structure sera le 1er à
en être retiré.

Les éléments sont ainsi retirés de la pile dans l’ordre inverse dans
lequel ils y ont été ajoutés.

La pile est qualifiée de « Liste LIFO » = Last In First Out.

Il existe des situations fréquentes en informatique dans lesquelles


il est souhaitable de restreindre les insertions et les suppressions d’informations
à un seul bout de la structure, pas à l’intérieur.

D.1 Représentation en mémoire

Le plus souvent une pile est représentée au moyen d’une liste


monodirectionnelle ou d’un tableau linéaire. Dans le deuxième cas :

Le tableau sera appelé « STACK », par exemple « Top » sera la


variable qui contiendra l’adresse de l’élément au sommet de la pile,
« MAXSTK » donnera le nombre maximum d’éléments qui
peuvent être accommodés par la pile.

Exemple :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 49

D.2 Opérations

Les deux opérations fondamentales sont :

PUSH : Opération d’adjonction (d’ajout) d’un élément au sommet de la pile,


Pop : Opération de suppression de l’élément se trouvant au sommet de la
pile.

1. Push

Un algorithme possible pour le push de la donnée x est :

Pour réduire la fréquence de dépassement de capacité, on


peut procéder à une réservation initiale d’un espace de mémoire assez
grand pour chaque pile, mais cette façon de procéder peut se révéler
coûteuse si cet espace n’est pas souvent utilisé.

Lorsque cet espace est insuffisant, la fréquence de dépassement


de capacité augmente et le temps consacré au traitement de ce
dépassement de capacité peut de révéler encore plus coûteux.

Diverses techniques ont été développées dans le seul but de


mieux utiliser l’espace réservé dans une pile ou de diminuer la fréquence de
dépassement de capacité.
Une de ces techniques est « l’allocation commune » qui procède
à une allocation d’une seule structure de taille n pour deux piles A et B, dans
laquelle la pile A croit dans un sens et la pile B croit dans l’autre sens de la
manière suivante :

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 50

Evolution de la pile A Evolution de la pile B


(de gauche vers la droite) (de droite vers la gauche)

Ainsi un dépassement de capacité ne peut arriver que si la taille


de la pile A et celle de la pile B dépasse n.

2. Pop

Un algorithme possible pour désempiler l’élément du sommet :

D.3 Exemples

L’exemple le plus souvent donné pour monter l’utilité d’une pile


est le cas de la notion polonaise.

La notion polonaise préfixe désigne une notion d’expression


arithmétique dans laquelle l’opérateur est placé devant ses opérandes.

Exemple : l’expression arithmétique a + b = (notation infixée)


En notation polonaise préfixée les expressions suivantes
seront :
a + b = + ab
(a + b)* c = *+abc
a + (b * c) = a + [b * c] = +a*bc
(a + b) / (c – d) = [+ab] / [-cd] =/+ab – cd

N.B. : Dans cette notation, on n’a pas besoin des parenthèses.

La notation polonaise suffixée (inversée) désigne une notation

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 51

d’expression arithmétique dans laquelle l’opérateur est placé derrière ses


opérandes.
a+b = ab+
(a + b) * c = ab+c*
a + (b * c) = abc*+
(a + b) / (c – d) = (ab+)/(cd)- = ab+cd-/

On voit que les différentes expressions obtenues en notation


polonaise préfixées ou suffixées n’ont mutuellement besoin des parenthèses
car l’ordre dans lequel les opérations doivent être effectuées est
essentiellement déterminé par l’emplacement des opérateurs et des
opérandes dans l’expression.

La notation polonaise préfixée ou suffixée est une notation plus


commode à manipuler, pour un automate, que la notion infixée des
expressions.

Ainsi par exemple l’expression infixée suivante : 3^4-5*2^3–30/6


ou l’on tient compte des niveaux d’évaluation suivant :
Exponentiation, multiplication et division, addition et soustraction.
Nécessite 3 parcours :
Evaluation des exponentiation 81-5*8–30/6,
Evaluation de multiplication et division 81- 40- 5
Evaluation d’addition et de soustraction 36.

La même expression en notation polonaise suffixée s’écrit comme suite :


3 4^5 2 3^*- 30 6 /- ,
et ne nécessite qu’un seul parcours (au lieu de 3).

Un algorithme possible pour évaluer une expression P en notation


polonaise préfixée est :
Soit Q une expression en notation infixée à transformer en un
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 52

expression P en notation polonaise suffixée. Si on utilise un pile pour ranger


temporairement les opérateurs et les parenthèses de gauche de l’expression
Q.
Si l’expression en notation suffixée (P) est construite en allant de
la gauche vers la droite, en utilisant les opérandes de l’expression infixée (Q)
et les opérations désempilées de la pile.

Si avant toute chose, on empile d’abord une opération


parenthèse ouvrante dans la pile et une parenthèse fermante à la fin de
l’expression Q, alors un algorithme possible est le suivant :

Exemple Q = (a - b) / (c + d * f)
= ab – cdf * + - / (notation suffixée)

1. Tri rapide (quicksort)

Le quicksort est un tri basé sur le principe « diviser pour régner »


par la réduction de la taille de l’ensemble de n éléments à trier en deux
ensembles plus petits sur base d’un élément appelé élément pivot.

Soit A, la liste des nombres à trier suivante :


44, 33, 11, 55, 77, 90, 40, 60, 99, 22, 88, 66

Considérons le 1er élément, 44 comme élément pivot, il faut alors :


Parcourir la liste A par la droite en comparant 44 avec chacun des
éléments et permuter 44 avec le 1er qui lui est inférieur, ce qui donne :

22, 33, 11, 55, 77, 90, 40, 59, 44, 88, 66

Parcourir la liste A par la gauche en comparant 44 avec le 1er qui lui


est supérieur, qui donne :

22, 33, 11, 44, 77, 90, 40, 60, 99, 55, 88, 66

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 53

Parcourir la liste A, par la droite en commençant par 55 et en


comparant 44 avec chacun des éléments et permuter 44 avec le 1er qui lui
est inférieur ce qui donne :

22, 33, 11, 40, 77, 90, 44, 60, 90, 55, 88, 66

Parcourir la liste A par la gauche en commençant par 40 et en


comparant 44 avec chacun des éléments et permuter 44 avec le 1er qui lui
est supérieur ce qui donne :

22, 33, 11, 40, 44, 90, 77, 60, 99, 55, 88, 66

La première phase de diviser pour régner se termine : tous les


chiffres à gauche de 44 lui sont inférieurs et tous les nombres à droite se 44 lui
sont supérieurs, donc cette première phase à placer correctement l’élément
pivot c’est-à-dire 44 dans la liste triée : la tâche de triage de la liste A a été
réduite au tri de deux listes plus petites A1 et A2.

La phase de diviser pour régner devra alors être appliquée sur les
listes A1 et A2. Une seule partie de la liste A sera traitée à la fois. Il faut donc
garder la trace de toutes les autres parties en vue de traitement ultérieur.

Cela est accompli en utilisant deux piles, appelons les « BAS » et


« HAUT » pour ranger temporairement et respectivement la borne inférieure et
la borne supérieure de la partie de la liste A que l’on traite.
Cet algorithme se conçoit mieux en deux procédures :

1. PlacePivot (A, N, Bi, Bs, P) : procédure qui trouve la place pour l’élément pivot.
A : liste à trier,
N : taille de la liste A,
Bi : borne inférieure de la partie de « A » à trier,
Bs : borne supérieure de la partie de « A » à trier,
P : adresse de l’élément pivot (par exemple : l’adresse de A(Bi)).

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 54

2. TRI : procédure qui étend le principe de place pivot sur toute la liste
(QUICKSORT).

Dans le cas défavorable (quand la liste A à trier est déjà triée


cette algorithme a une complexité de l’ordre de numéro (n2)
Le 1er élément, pour qu’il soit placé nécessite n comparaisons (la
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 55

1ère sous liste comporte alors un seul élément, la 2ème sous liste comporte alors
(n – 1) éléments).

Le 2ème élément, pour qu’il soit placé nécessite (n–1)


comparaison (la 1ère sous liste comporte alors un seul élément, la 2ème sous
liste comporte alors (n – 2) éléments), etc.

Au total cet algorithme aura dans ce cas consommé :


n + (n – 1) + (n – 2) + …+ 2 + 1 = θ (n2)
Dans le cas favorable (quand la liste A à trier est vraiment
désordonnée), cet algorithme a une complexité de θ (n log n) :

La réduction de la liste initiale place un élément et produit deux


listes partielles.
La réduction de ces deux listes partielles place deux éléments et
produit quatre listes partielles.
La réduction de ces quatre listes partielles place quatre éléments
et produit huit listes partielles.
La réduction de ces huit listes partielles place huit éléments et
produit seize listes partielles.

Le niveau K permet de placer donc 2K – 1 éléments ;


Il y aura donc environs (log n) niveaux. Comme chaque niveau
utilise au plus n comparaisons, la complexité dans ce cas est de l’ordre de
θ(nlog n)

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 56

E. FILE D’ATTENTE

Une file d’attente est une structure linéaire à laquelle des


éléments ne peuvent être ajoutés qu’à une extrémité (la queue) et être retiré
qu’à l’autre (la tête). Le 1er élément ajouté à une telle structure sera le 1er à
en être retiré. La file d’attente est appelée aussi liste à FIFO.

E.1 Représentation en mémoire

Le plus souvent une file d’attente est représentée au moyen


d’une liste mono directionnelle ou d’un tableau linéaire.

Dans le deuxième cas : Le tableau de taille n sera appelé QUEUE,

« FRONT » sera la variable qui contiendra l’adresse de son premier


élément,
« REAR » sera la variable qui contiendra l’adresse de son dernier
élément.

Chaque fois qu’un élément est supprimé, FRONT s’incrémente de


1, et chaque fois qu’un élément est ajouté REAR s’incrémente de 1.

Après n insertions le dernier élément occupera la case mémoire


QUEUE (n) même si toutes les cases se trouvant devant ce dernier élément
sont VIDES.

Si donc l’on désire insérer un élément dans une file d’attente


pour laquelle REAR = N, il suffit alors de déplacer toute la file d’attente vers le
début de tableau en modifiant de façon correcte le continu de FRONT et de
REAR et d’insérer ce nouvel élément. Cette façon de faire coûte trop chère,
ce pour cela en pratique on considère que le tableau QUEUE est CIRCULAIRE.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 57

E.2 Opérations

Les deux opérations fondamentales sur la file d’attente sont :


Insertion : Ajout d’un élément dans la file d’attente
Retrait : Suppression d’un élément se trouvant dans la file d’attente.

Un algorithme possible pour l’insertion d’un élément X dans une


file d’attente est :

Si ((Rear = n) et (Front = 1)) ou (Rear = Front – 1)


Alors ECRIRE ‘’ File pleine impossible d’insérer’’
Sinon Si (Rear < > n) Alors Rear Rear + 1
Sinon Rear 1
Finsi
Queue(Rear) X
Finsi

Un algorithme possible de retrait d’un élément X dans une file


d’attente est :

Si ((Rear = null) et (Front = null))


Alors ECRIRE ‘’ File vide impossible de retirer’’
Sinon X Queue(Front)
Si (Front = Rear) Alors Rear null
Front null
Sinon Si (Front = n) Alors Front 1
Sinon Front Front + 1
Finsi
Finsi
Finsi

E.3 File d’attente à niveau de priorité

Une file d’attente à niveau de priorité est un ensemble


d’éléments tel qu’un niveau de priorité a été affecté chacun d’entre eux est
dont l’ordre dans lequel ils sont traits et traités obéit aux règles suivant :

Un élément de priorité supérieure est traité avant élément de


ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 58

priorité inférieure.

Deux éléments de même priorité sont traités selon l’un dans


lequel ils sont la insérés dans la file.

E.4 Deque

Une deque est une liste linéaire où les éléments peuvent être
ajoutés ou supprimés à l’un ou l’autre extrémité mais pas au milieu, c’est
donc une file d’attente à deux queues.

Une deque est généralement représentée en mémoire à l’aide


d’un tableau circulaire appelons le deque, muni des pointeurs « LEFT » et
« RIGHT » et « RIGHT » pointant sur Bs deux extrémités.

Il existe deux variantes des deques :

Deque à entrée restreinte : Qui n’accepte les entrées qu’à une seule de ses
extrémités (et les sorties) mais permet des
suppressions à ses deux extrémités.
Deque à sortie restreinte : Qui n’accepte des suppressions qu’a une seule des
ses extrémités mais permet des entrées à ses deux
extrémités.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 59

F. ARBRE

Un arbre est une structure de données non linéaire qui est surtout
appliquée à des informations dont les éléments sont liés par des relations
hiérarchiques : ensemble des valeurs des champs relatives à une entité
donnée, table des matrices, index, etc.

F.1 Arbre binaire


Un arbre binaire T est un ensemble d’éléments appelés nœuds
tels que :
 T est vide, (dans ce cas il est appelé arbre nul ou arbre vide) ou
 T comporte un nœud particulier R appelé racine de T, et les autres
nœuds de T forment une paire ordonnée T1 et T2 d’arbres binaires
disjoints.

Dans le deuxième cas, T1 est appelé sous-arbre de gauche de R


et T2 est appelé sous-arbre de droite de R.

La racine de T1, si elle existe est appelée successeur gauche de


R, la racine de T2, si elle existe est appelée successeur droit de R.

Tout nœud d’un arbre binaire T possède deux successeurs au


maximum Tout nœud sans successeur est appelé nœud terminal ou feuille.

Soit X, un nœud, soient S1 et S2, successeurs de X, alors X est


appelé « parent » de S1 et S2,

 S1 est appelé «enfant gauche» de X,


 S2 est appelé «enfant droit» de X,
 S1 et S2 sont «des frères».
 Le segment de droite qui relie deux nœuds est appelé « arête ».
 Une séquence d’arêtes consécutives constitue un chemin.
 Un chemin qui se termine par une feuille (nœud terminal) est une
branche.

La profondeur (hauteur) d’un arbre T est le nombre maximum des


ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 60

nœuds dans une branche de T.


Deux arbres binaires T est V sont dits « similaires» s’ils ont la même
structure (la même forme).
Exemple l’Arbre START et l’Arbre START1

Deux arbres binaires T et V sont dits « copiés l’un de l’autre », s’ils


présentent le même contenu aux nœuds correspondants. C'est-à-dire s’ils
sont similaires et si les différents nœuds possèdent les mêmes valeurs.

F.2 Arbre binaire complet

Un arbre binaire est complet :


ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 61

 Si tous les niveaux, sauf éventuellement le dernier comportent le


nombre maximum des nœuds,
 Si tous les nœuds terminaux qui apparaissent au dernier niveau et qui
sont seuls sont à gauche.

START n’est pas un arbre binaire complet parce que le nœud se


trouvant à l’adresse 15 (P) a un seul enfant à droite au lieu qu’il soit à
gauche.

START1 n’est pas un arbre binaire complet parce que le nœud se


trouvant à l’adresse 9 (M) a un seul enfant à gauche alors que son frère se
trouvant à l’adresse 32 n’a pas encore d’enfant.

START2 est un arbre binaire complet.

F.3 Arbre binaire étendu (arbre pair)

Un arbre binaire est dit étendu ou pair si chaque nœud possède


ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 62

0 ou deux enfants, les nœuds dotés de deux enfants sont des nœuds internes
et ceux qui n’en possèdent pas sont des nœuds externes.

START2 n’est pas un arbre binaire complet parce que le nœud F


possède un seul enfant qui est N.

START est pas un arbre binaire complet parce que les nœuds A,
B, P et K possèdent deux enfants, tandis que les nœuds F, M, N, H, Q ne
possèdent aucun enfant.

Tout arbre binaire peut être transformé en arbre binaire étendu :


 En remplaçant chaque sous arbre vide par un nœud nouveau,
 En ajoutant deux nœuds externes aux nœuds terminaux.

Exemple : soit l’arbre binaire suivant

On demande de le rendre binaire étendu.


Les nœuds A et B possèdent chacun deux enfants. Le nœud P
possède une seul enfant à droite, il faut lui donne un deuxième enfant à
gauche. Les nœuds F, M, et H ne possèdent aucun enfant, par conséquent il

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 63

faut leurs donner chacun deux enfants l’un à gauche et l’autre à droite.

REMARQUE : Le nombre des nœuds nouveaux à ajouter correspond au


nombre des nœuds de l’arbre binaire plus un nœud.

F.4 Arbre binaire de recherche

Un arbre binaire est dit « arbre de recherche binaire » si chaque


nœud X est tel que :
1. La valeur du nœud X est supérieure à toute valeur
contenue dans le sous-arbre gauche de X,
2. La valeur du nœud X est inférieure à toute valeur contenue
dans le sous-arbre droit de X.
Exemple

F.5 Représentation en mémoire

1. Représentation chaînée d’un arbre binaire A. B

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 64

Cette représentation utilise trois tableaux parallèles appelons – les


« infos », « left », et « right » et un pointeur appelons – le « root ».

Ainsi chaque nœud n de l’arbre binaire T correspondra à une


adresse k telle que :
Info (k) contient l’information du nœud n,
Left (k) contient l’adresse de l’enfant gauche de n,
Right (k) contient l’adresse de l’enfant droit de n,
Root contient toujours l’adresse de la racine de T.

2. Représentation séquentielle d’un arbre binaire

Cette représentation utilise un tableau linéaire unique appelons


le « tree » dans lequel :
La racine R de l’arbre est rangée en tree (1),
Si un nœud occupe la place tree (k), alors son enfant gauche
est rangé en tree (2k) et son enfant droit est rangé en tree (2k + 1).

La profondeur d’un arbre binaire range de cette façon est :


(log2 n) + 1 (Avec n qui équivaut au nombre de nœuds)
La représentation séquentielle d’un arbre binaire de profondeur
d nécessite un tableau unique dont la taille 2d-1.

F.6 Opération

Parcours séquentiel
Recherche dans un arbre binaire
Recherche et insertion dans un arbre binaire
Suppression dans arbre binaire

Parcours séquentiel

Il existe trois parcours standardisés pour accéder


séquentiellement à un arbre binaire T de racine R.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 65

PRE – ORDRE : Parcours où l’on exécute successivement les


opérations suivantes :
Traiter la racine R
Parcourir le sous- arbre gauche de R
Parcourir le sous– arbre droit de R

IN – ORDRE : Parcours où l’on exécute successivement les


opérations suivantes :
Parcourir le sous- arbre gauche de R
Traiter la racine R
Parcourir le sous- arbre droit de R

POST – ORDRE : Parcours où l’on exécute successivement les


opérations suivantes :
Parcourir le sous- arbre gauche de R
Parcourir le sous- arbre droit de R
Traiter la racine R

Les trois parcours sont essentiellement récursifs : Il faut donc


mettre en œuvre des piles pour leurs implémentations en mémoire.

Quel que soit le parcours, il est important de remarquer les


nœuds terminaux (feuilles) défilent dans le même ordre.

Algorithme de parcours « pré- ordre »

L’arbre est rangé en mémoire et une pile (STACK) est utilisée pour
stocker temporairement les adresses des nœuds.
PREORD (Info, Left, Right, Root)
Pile STACK(1 : n)
Top 1
STACK(Top) ASSISTANTNil ALI KOJ NGALANDO
P CONCEPTEUR DES SYSTEMES D’INFORMATION
Root
Tantque (P < > Nil) Faire
Traiter Info(P)
Si (Right(P) < > Nil) Alors Top Top + 1
Cours d’Algorithmique II
G2 Informatique de Gestion 66

Algorithme de parcours “in- ordre”

L’arbre est rangé en mémoire et une pile (STACK) est utilisée pour
stocker temporairement les adresses des nœuds.

INORD (Info, Left, Right, Root)


Pile STACK(1 : n)
Top 1
STACK(Top) Nil
P Root
Tantque (P < > Nil) Faire
Top Top + 1
STACK(Top) P
P Left(P)
Fintantque
** P STACK(Top)
Top Top – 1
Tantque (P < > Nil) Faire
Traiter Info(P)
Si (Right(P) < > Nil) Alors P Right(P)
Aller à **
Finsi
P STACK(Top)
Top Top – 1
Fintantque
Algorithme de
Exitparcours post- ordre
L’arbre est rangé en mémoire et une pile (STACK) est utilisée pour
stocker temporairement les adresses des nœuds.

POSTORD (Info, Left, Right, Root)


Pile STACK(1 : n)
Top 1
STACK(Top) Nil
P Root ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
**Tantque (P < > Nil) Faire
Top Top + 1
STACK(Top) P
Si (Right(P) < > Nil) Alors Top Top + 1
Cours d’Algorithmique II
G2 Informatique de Gestion 67

Exemple
Un arbre binaire T comporte neuf nœuds. Les parcours in- ordre et pré- ordre
sont :
In- ordre E A C K F H D B G
Pré- ordre F A E K C D H G B

Résolution

L’arbre T sera tracé de la manière suivante :


La racine de T est le premier nœud du parcours pré- ordonné, F.
Le parcours on- ordonné de T, fournit les nœuds du sous- arbre
gauche de F, c’est-à-dire EACK l’enfant gauche de F est alors déterminé en
choisissant le 1er nœud (parmi EACK) qui apparaît dans le parcours pré-
ordonné, c’est-à-dire A.
Le parcours in- ordonné de T, fournit les nœuds du sous- arbre
droit de F, c’est-à-dire HDBG l’enfant droit de F est alors déterminé en
choisissant le 1er nœud (parmi HDBG) qui apparaît dans le parcours pré-
ordonné, c’est-à-dire D.

Recherche dans un arbre de recherche binaire


ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 68

Soit x, une information.

Il s’agit de déterminer l’adresse loc. de x et l’adresse par du


parent de x.

FIND(Info,Left,
FIND(Info, Left,Right,
Right,Root,
Root,X,X,Loc,
Loc,Par)
Par)
Si(Root=Nil) Alors Loc Nil
Par Nil
Exit
Finsi
Si(X=Info(Root)) Alors Loc Nil
Par Nil
Exit
Finsi
Si(X<Info(Root)) Alors P Left(Root)
Left(Root)
Save Root
Root
Exit
Sinon P Right(Root)
Right(Root)
Save Root
Root
Finsi
Tantque(P< >Nil) Faire
Si(X=Info(P)) Alors Loc P
Par Save
Exit
Finsi
Si(X < Info(P)) Alors Save PP
P Left(P)
Left(P)
Sinon Save PP
P Right(P)
Right(P)
Finsi
Fintantque
Loc Nil Nil
Par SaveSave
Exit
Exit

Recherche et insertion dans un arbre binaire de recherche


Soit x, une information.
Il s’agit de trouver l’adresse de x ou de l’insérer en tant que
nœud nouveau dans cet arbre

INSBST(Info, Left, Right, Root, Avail, X, Loc)


FIND(Info, Left, Right, Root, X, Loc, Par)
Si(Loc < >ASSISTANT
Nil) Alors Exit
ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Finsi
Si(Avail = Nil) Alors Ecrire ‘’Overflow’’
Exit
Finsi
Cours d’Algorithmique II
G2 Informatique de Gestion 69

Suppression dans un arbre de recherche binaire


Soit x, une information.
La manière dont le nœud x est supprimé dépend du nombre
d’enfant de ce nœud x.

Trois cas possibles :

Cas 1 X n’a pas d’enfants


X est supprimé de l’arbre binaire T et l’adresse de X est remplacée par Nil
(dans le nœud parent de ce x).

Cas 2 X a un seul enfant


X est supprimé de l’arbre binaire T et l’adresse de X est remplacée par celle
de son enfant unique (dans le nœud de ce x).
Cas 3 X a deux enfants
Soit S(x) le successeur in- ordonné de X (ce qui signifie que S(x) n’a pas
d’enfant gauche), il faut alors :
Ecarter temporairement S(X)
Remplacer le nœud x par S(x)

Exemple :
In- ordonné 15 25 33 44 50 60 66 75

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 70

Pour supprimer 25, il faut supprimer temporairement 33 ; 44


devient le fils droit de S
Remplacer ensuite 25 par 33

Algorithme de suppression d’un nœud X à l’adresse Loc. Lorsque


X n’a pas deux enfants.
Par donne l’adresse du parent de X, si Par vaut Nil donc X est la racine

Child donne l’adresse de l’enfant unique de X, Child vaut Nil donc N n’a
pas d’enfant

CASE1(Info, Left, Right, Root, Loc, Par)


Si((Left(Loc) ==Nil)
Si(((Left(Loc) Nil)et
et(Right(Loc)
(Right(Loc)=Nil))
=Nil)))Alors
AlorsChild
Child NilNil
Sinon
Sinon
Si(Left(Loc)
Si(Left(Loc)
< ><Nil)
> Nil)
Alors
Alors
Child
Child Left(Loc)
Left(Loc)
Sinon Child Right(Loc)
FinsiFinsi
Finsi
Si(Par < > Nil) Alors
Si(Loc = Left(Par)) Alors Left(Par) ChildChild
Sinon Right(Par) Child
Finsi
Sinon
SinonRoot
Root Child
Child
Finsi
Return

Algorithme de suppression d’un nœud X à l’adresse loc. Lorsque


X possède deux enfants
Par donne l’adresse du parent de X
Suc donne l’adresse du successeur « in- ordonné » de X
Parsuc donne l’adresse du parent de ce successeur.

Algorithme formel de suppression de X :

CASE2(Info, Left, Right, Root, X, Loc, Par)


P Right(Loc)
Save Loc
Tantque(Left(P) < > Nil) Faire
Save PP
Left(P)
P Left(P)
Fintantque
CASE1(Info, Left, Right, Root, Suc, Parsuc)
Si(Par < >Nil) Alors
ASSISTANT
Si(Loc ALI KOJ
= Left(Par)) NGALANDO
Alors Left(Par) Suc
Suc
CONCEPTEUR DES SYSTEMES D’INFORMATION
Sinon Right(Par) Suc
Suc
Finsi
SinonRoot
Root SucSuc
Finsi
Cours d’Algorithmique II
G2 Informatique de Gestion 71

Formellement l’algorithme de suppression de l’élément X en


intégrant les deux procédures CASE1 et CASE2 est le suivant :

DEL(Info, Left, Right, Root, Avail, X)


FIND(Info, Left, Right, Root, X, Loc, Par)
Si(Loc = Nil) Alors Ecrire X,‘’n’est pas sur l’arbre’’
Exit
Finsi
Si((Right(Loc) < > Nil) et (Left(Loc) < > Nil)) Alors CASE2(Info, Left, Right, Root, Loc, Par)
Sinon CASE2(Info, Left, Right, Root, Loc, Par)
Finsi
Left(Loc) Avail
Avail Loc
Exit

F.7 Arbre binaire ordonné

Soit H, un arbre complet à n éléments est dit arbre binaire


ordonné si tout nœud X de H possède une des propriétés suivantes :

La valeur de X est supérieur ou égale à celle de chacun de ses


enfants et par conséquent à celle de tous ses descendants (cas où l’arbre
binaire ordonné est appelé maxipile).

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 72

La valeur de X est inférieure ou égale à celle de chacun de ses


enfants et par conséquent à celle de tous ses descendants (cas où l’arbre
binaire est appelé minipile)

L’élément le plus grand d’une maxipile se trouve à la racine


Opération d’insertion dans une maxipile

Algorithme d’insertion
Soit X à insérer dans l’arbre ordonné T de n éléments rangé dans un tableau
TREE. P donne l’adresse Loc de X à mesure qu’il migre dans l’arbre et par
indique l’adresse du parent de X. nous aurons l’algorithme sera :

INSHEAP(TREE, n, X)
n n+1
P n
Tantque(P < 1) Faire
Par P\2
Si(X < =TREE(Par)) Alors TREE(Par) X
Return
ASSISTANT
Finsi ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
TREE(P) TREE(Par)
P Par
Fintantque
TREE(1) X
Cours d’Algorithmique II
G2 Informatique de Gestion 73

Opération de suppression dans une maxipile


Algorithme de suppression. Soit X à supprimer dans l’arbre ordonné T de n
éléments rangé dans un tableau TREE. La
variable LAST sauvegarde la valeur du nœud L
originellement dernier nœud de T.
P donne l’adresse de LAST, Left l’adresse de son enfant gauche et Right celui
de son enfant droit.
Il faut : Affecter la racine X à Y
Remplacer X par le dernier nœud L de T
Réordonner T
DELHEAP(TREE, n, X)
X TREE(1)
LAST TREE(n)
n n–1
P 1
Left 2
Right 3
Tantque(Right < = n) Faire
Si(LAST > = TREE(Left)) et (LAST > = TREE(Right)) Alors TREE(P) LAST
Return
Finsi
Si(TREE(Right) < = TREE(Left)) Alors TREE(P) TREE(Left)
P Left
Sinon TREE(P) TREE(Right)
P Right
Finsi
Left 2*P
Right Left + 1
Fintantque
Si(Left=n) et (LAST < TREE(Left)) Alors P Left
Finsi
TREE(P) LAST
Return

Tri vertical (HEAPSORT) HEAP = TAS


Soit un tableau A à n éléments. Pour procéder au tri, il faut :
Bâtir un arbre ordonné avec les éléments de A, et
Supprimer la racine de A de manière répétitive

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 74

HEAPSORT(A, n)
J 1
Tantque( J< = n-1) Faire
INSHEAP(A, J, A(J+1))
J J+1
Fintantque
Tantque(n > 1) Faire
DELHEAP(A, n, X)
A(n+1) X
Fintantque
Exit

Pour la construction de l’arbre ordonné remarquons que le


nombre des comparaisons nécessaire pour déterminer une place appropriée
pour un élément nouveau ne peut excéder la profondeur de l’arbre qui est
de (log n).
Le temps pour insérer n éléments est donc de l’ordre de θ (n log n).

Pour la suppression répétitive de la racine, remarquons que c’est


l’opération de réarrangement de l’arbre qui est essentielle : cette opération
fait appelle à quatre comparaisons pour déplacer le nœud qui a remplacé
la racine le long de l’arbre.

Pour déplacer les n éléments le temps maximal est proportionnel


à θ 4nlog n.
La complexité du tri vertical (HEAPSORT) est donc de l’ordre de θ
(n log n).

F.8 Arbre généralisé

Un arbre généralisé (ou arbre tout court) est un ensemble non


vide des nœuds ayant :
 un nœud particulier appelé racine et
 des sous arbres disjoints T1, T2, … Tn
ASSISTANT ALI KOJ NGALANDO
CONCEPTEUR DES SYSTEMES D’INFORMATION
Cours d’Algorithmique II
G2 Informatique de Gestion 75

Dans un arbre généralisé il n’y a ni enfant gauche ni enfant droit.


Ainsi les arbres T1 et T2 :

T1 T2
A A

B B

C D C D

Considérés comme des arbres binaires ces deux arbres sont


différents mais considérés comme des arbres généralisés les deux arbres sont
identiques.
Généralement un arbre généralisé T sera représenté en mémoire
sous forme d’une représentation chaînée à trois tableaux parallèles « Info »,
« Child », et « Sibl ».

Chaque nœud X de T correspond à une adresse k telle que :


Info (k) contient l’information du nœud X,
Child (k) contient la position du 1er enfant de X et
Sibl (k) contient l’adresse du prochain frère de X.

ASSISTANT ALI KOJ NGALANDO


CONCEPTEUR DES SYSTEMES D’INFORMATION

Vous aimerez peut-être aussi