Académique Documents
Professionnel Documents
Culture Documents
Donnons-nous un tableau de nombres. Le problème est de trier ces nombres dans l’ordre
croissant. En d’autres termes, nous devons modifier le tableau pour qu’il contienne les mêmes
nombres qu’auparavant, mais cette fois les nombres sont rangés dans l’ordre croissant, du
plus petit au plus grand.
Exemple
Le résultat du tri du tableau : 6 3 7 2 3 5
Est le suivant : 2 3 3 5 6 7
Dans le tri par bulle, on échange deux éléments successifs T[i-1] et T[i] s’ils ne sont pas dans
l’ordre. Évidemment, il faut faire cela un grand nombre de fois pour obtenir un tableau trié.
Plus précisément, on fait remonter le maximum à sa place définitive par échanges successifs
avec ses voisins.
3.1.Algorithme de tri par bulles
L’algorithme de tri par bulles (par exemple sur des nombres entiers) est le suivant :
Page 2 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
T[j+1] =T[j];
j--;
}
T[j+1] = val;
}
}
Ce qui est un polynôme du second degré en le nombre n d’éléments. L’algorithme est donc
quadratique .
Page 3 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
5. Trie rapide:
On choisit aléatoirement un indice dans la table à trier, le pivot. Puis on partage les éléments
de la table en ceux qui sont plus petits, qu’on place avant, et ceux qui sont plus grands, qu'on
place après. On recommence récursivement sur les deux sous listes de chaque côté du pivot.
Page 4 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
1.1.
La complexité des algorithmes est une évaluation du coût d’exécution d’un algorithme en
termes de temps (complexité temporelle) ou d’espace mémoire (complexité spatiale). Le cout
d’exécution dépend de:
1.2.
Programme A Programme B
int main() int main()
{ {
int A = 10,B = 15, Temp; int A = 10,B = 1;
Temp = A; A = B - A;
A = B; B = B - A
B=Temp ; A = A + B;
} }
1.3.
Algorithme factoriel
Var fact, i, n : entier Test à chaque itération :1
Début
Lire (n) …………………………………………… Introduire une valeur :1
i 2 …………………………………………… Initialisation :1
fact 1 …………………………………………… Initialisation :1
Tant que i ≤ n faire ……………………… Itérations :n-1
fact fact* i ……………………………Multiplication + Affectation :2
i i+1 ………………………………………… Addition + Affectation :2
Fin tant que
Écrire (fact)……………………………………… renvoi d’un résultat :1
Fin
1.4.
Exemples
1. Calcul de factorielle
Le paramètre de complexité est la valeur de n
2. Multiplier tous les éléments d'un tableau d'entiers par un entier donné
Le paramètre de complexité est la longueur de Tableau
Page 6 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
3. Faire la somme des premiers éléments de chaque ligne d'un tableau à deux
dimensions
Le seul paramètre de complexité est la longueur de tab[0].
1.5.
Lorsque, pour une valeur donnée du paramètre de complexité, le temps d'exécution varie
selon les données d'entrée, on peut distinguer :
Exemple
Si x est dans la première case du tableau : 1 tour de boucle avec la condition tab[i]=x
vraie
Si x est dans la deuxième case du tableau : 1 tour de boucle avec la condition tab[i]=x
fausse et 1 tour de boucle avec la condition tab[i]=x vraie
Si x est dans dernière case du tableau : n-1 tours de boucle avec la condition tab[i]=x
fausse et 1 tour de boucle avec la condition tab[i]=x vraie
Si x n'est pas dans le tableau : n tours de boucle avec la condition tab[i]=x fausse
Page 7 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
1.6.
Un algorithme peut être divisé en plusieurs séquences. Chacune des séquences représentant
une suite d’instructions reflète une étape de l’algorithme. Dans un algorithme on distingue
plusieurs types d’instructions:
Instructions élémentaires,
Structures conditionnelles
Structures itératives
Soient :
: le temps théorique de l’exécution d’un algorithme A.
: le temps théorique de l’exécution de iième séquence de l’algorithme A.
Le temps d’exécution d’une séquence composée d’une suite d’instructions élémentaires égale
à la somme des coûts
Page 8 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
L’instruction « selon » permet d'exécuter l'une des séquences selon le cas su Expression.
Condition : est une expression booléenne (condition élémentaire ou composée) dite aussi
condition de continuité.
( )
Où n est la taille des données sur lesquelles sera exécutée la boucle. Le temps T(n) est au
moins égale à T (condition) car la condition est au moins évaluée une fois.
b) La boucle « pour »
Elle permet de répéter l'exécution d'une action de la boucle dont le nombre de répétition est
connu à priori.
( )
Cpt est le compteur de boucle, de Binf et Bsup sont les bornes inferieures et supérieures (l’ordre
des valeurs peut être croissant ou décroissant).
1. Binf et Bsup sont d'abord évaluées,
2. Cpt prend la valeur Binf.
3. Si alors l’action est exécutée, puis Cpt est incrémenté de 1, et on
recommence depuis (3).
La boucle « tant que », qui permet de choisir dynamiquement si l’on continue à répéter le
corps de la boucle ou si l’on s’arrête est un outil plus puissant que la boucle « pour ». En fait,
la boucle « pour » est un cas particulier de la boucle « tant que ».
Page 9 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
( ) ( )
Les calculs à effectuer pour évaluer le temps d'exécution d'un algorithme peuvent parfois être
longs ; On aura donc recours à une approximation de ce temps de calcul, représentée par la
notation O(.) ;
Exemple
Soit un algorithme effectuant opérations ;
1. On remplace les constantes multiplicatives par 1 :
2. On annule les constantes additives :
3. On garde le terme de plus haut degré :
4. et on a donc .
1.8.
Page 10 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
1.9.
On note
Ou n0 est un seuil et C permet d’ignorer le comportement des fonctions pour les données de
petites tailles. La constante C, appelée facteur, permet de faire abstraction de vitesse de la
machine utilisée.
Page 11 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Exemple
Montrez que
On à :
Donc
On note
Exemple
Montez que
Posons , alors
Remarque
( )
Exemple
Montrez que
Il suffit de montrer que
pour tout
Page 12 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
3. Borne asymptotique
Définition
On note : .
Exemple
Montrez que
Page 13 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
b) Cpt=1;
a) pour i = 5 à n-5 faire
tq (n>2)
pour j = i-5 à i+5 faire
n=n div 2;
3 x += 3
Cpt=Cpt+ 1;
fin tq
c) i = 1;
Tq (i<=n) d) Pour (j=1 à n) faire
Pour (j=1 à i) faire i = 1;
Ecrire (Salut); Tq (i<=j)
Fin pour Ecrire(‘Salut’)
i = 2*i; i = 2*i;
Fin Tq Fin Tq
Fin pour
2. Montrez que:
a)
b)
c) ( – )
d)
a- Elaborer un algorithme récursif permettant de vérifier qu’un tableau X est trié ou non
b- Estimer sa complexité.
Page 14 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
5.1.
Un arbre est une structure composée de nœuds et de feuilles (nœuds terminaux) reliés par des
branches. On le représente généralement en mettant la racine en haut et les feuilles en bas.
5.2.
5.3.
La racine de l'arbre est l'unique nœud qui n'a pas de père. Dans l’exemple, la racine de
l’arbre c’est A
Un nœud interne possède au moins un fils. Dans l’exemple, les nœuds internes sont : B,
C, D et G
Une feuille de l'arbre est un nœud qui n'a pas de fils. Dans l’exemple, les feuilles sont :
E, I, K et H
Un sous-arbre d'un nœud A est un arbre dont la racine est un fils de A.
La Branche est un chemin qui relie une feuille à la racine. Dans l’exemple, les branches
sont : ABE, ABF ACGI ACGK et ADH
La profondeur d’un nœud est son nombre d’ancêtres. Dans l’exemple, le nœud G est de
profondeur 2.
Le niveau situe les nœuds de même profondeur. On dit que le niveau de la racine est 0,
les fils ont le niveau 1, les fils des fils ont le niveau 2….
Page 15 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
La hauteur d’un arbre est la distance entre la racine et la feuille la plus lointaine. L’arbre
de l’exemple est de hauteur 3
Degré d’un nœud est le degré d’un nœud est le nombre de fils associé à ce nœud. Dans
l’exemple le degré de G est 2.
La taille d’un arbre est le nombre total des nœuds.
Hauteur
A Racine
B C D Nœud interne
E F G H Niveau 2
Feuille (Nœudexterne)
Branche
I K
Sous arbre
5.4.
5.4.1. Arbre binaire : c’est un arbre dont chaque nœud n’accepte pas plus de deux nœuds, un
nœud fils à droite et un fils à gauche (à part les feuilles). Plusieurs variantes des arbres
binaires dont les principales :
5.4.2. Arbre n-aires : c’est un arbre dont chaque nœud peut accepter de 0 à n nœuds.
Plusieurs variantes des arbres binaires dont les principales :
B-Arbre
B-Arbre*
B-Arbre+
5.5.
Les arbres binaires sont un cas particulier d’arbres. Ce sont des arbres ou chaque nœud
possède au plus un fils gauche et au plus un fils droite. Même si un nœud possède un seul fils,
il peut être un fils gauche ou un fils droit. Il existe plusieurs variantes d’arbres binaires :
Un arbre binaire localement complet est un arbre binaire dont chaque nœud interne a deux
fils.
On appelle arbre binaire complet tout arbre qui est localement complet et dont toutes les
feuilles ont la même profondeur.
Page 17 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
C'est un arbre étiqueté dont les valeurs des nœuds appartiennent à un ensemble muni d'une
relation d'ordre total (les nombres entiers, réels etc... en sont des exemples) tel que pour un
nœud donné tous ses fils ont une valeur supérieure ou égale à celle de leur père.
Nous remarquons que la racine d'un tel arbre est toujours l'élément de l'ensemble possédant la
valeur minimum (le plus petit élément de l'ensemble), car la valeur de ce nœud par
construction est inférieure à celle de ses fils et par transitivité de la relation d'ordre à celles de
ses descendants c'est le minimum.
D) Le Tas
5.5.1.
Parcourir un arbre signifie visiter dans un certain ordre tous ses nœuds. Nous distinguerons
deux types de parcours : le parcours en profondeur et le parcours en largeur. Le parcours en
profondeur permet d'explorer l'arbre en explorant jusqu'au bout une branche pour passer à la
suivante. Le parcours en largeur permet d'explorer l'arbre niveau par niveau. C'est à dire que
l'on va parcourir tous les nœuds du niveau 1 puis ceux du niveau deux et ainsi de suite jusqu'à
l'exploration de tous les nœuds.
A) Parcours en profondeur
Les parcours en profondeur les plus classiques sont les parcours Infixé, préfixé et postfixé.
1. Le parcours préfixe (Préordre) visite dans l’ordre la Racine, le sous arbre Gauche et le
sous arbre Droite (RGD).
2. Le parcours infixe (inordre) visite dans l’ordre le sous arbre Gauche, la Racine et le
sous arbre Droit (GRD).
Page 18 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
3. Le parcours postfixe (postorder) visite dans l’ordre le sous arbre Gauche, le sous arbre
droit et la racine (GDR).
Exemple
A
B F
C E G H
I J
Nous allons aborder un type de parcours un peu plus compliqué, c'est le parcours en largeur. Il
s'agit d'un parcours dans lequel, on traite les nœuds un par un sur un même niveau. On passe
ensuite sur le niveau suivant, et ainsi de suite.
Le parcours en largeur de l'arbre suivant est : A.B.F.C.E.G.H.I.J
B F
C H
E G
I J
2.6.2.
Un nœud est une structure (ou un enregistrement) qui contient au minimum trois champs: un
champ contenant les données du nœud. Cette information peut être un entier, une chaîne de
caractère ou tout autre chose que l'on désire stocker. Les deux autres champs sont le fils
gauche et le fils droit du nœud.
Page 19 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
A)
En C/C++
B)
parcours Postfixé
void Préfixé (Arbre *A)
{
if (A !=NULL)
{
Postfixé (A->FG) ;
Postfixé (A->FD) ;
Cout<< A->val;
}
}
C)
Page 20 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
2. Nombre de feuilles
Le calcul du nombre de feuille repose sur la définition récursive :
Page 21 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Pour calculer la hauteur d'un arbre, nous allons nous baser sur la définition récursive :
un arbre vide est de hauteur 0
un arbre non vide a pour hauteur 1 + la hauteur maximale entre ses fils.
Page 22 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
5.6.
Les arbres binaires de recherche sont utilisés pour accélérer les opérations de recherche,
insertion et suppression de valeurs.
Un arbre binaire de racine R est dit de recherche si seulement si :
Toutes les valeurs du sous-arbre gauche de R sont inférieures à val (R)
Toutes les valeurs du sous-arbre droit de R sont supérieures à val (R)
Le sous-arbre gauche de R doit être un arbre de recherche binaire
Le sous-arbre droit de R doit être un arbre de recherche binaire
Page 23 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Exemple
5.6.1.
Commencer à la racine
Si la valeur de ce nœud est l’élément recherché, stop
Si la valeur du nœud courant est plus grande que la valeur recherchée, alors
continué la recherche dans la partie gauche de l’arbre.
Si la valeur du nœud courant est plus petite que la valeur recherchée, alors
continué la recherche dans la partie droite de l’arbre.
On poursuit ainsi la recherche jusqu'à trouver la valeur de l’élément ou arriver à
une feuille de l’arbre. Si on tombe sur une feuille et que l’élément n'est pas trouvé,
la valeur fausse est retournée.
Page 24 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Principe : le principe d’ajout d’un élément dans un ABR est comme suit :
Page 25 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Principe : la suppression est un peu plus compliquée. On procède de la façon suivante : une
fois l’élément à supprimer est localisé, on se trouve dans une des situations suivantes :
Exemple : suppression des nombres 13 (cas 1), le nombre 16 (cas 2) et de nombre 15 (cas 3)
Cas 1
Cas 2
Cas3
Page 26 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
5.7.
A) Définition
Les arbres AVL ont été introduits par les finlandais Adelson-Velskii-Landis dans les années
60.En plus d’être un arbre de recherche, pour chaque nœud d’un arbre AVL, la différence des
hauteurs entre le sous-arbre droit et le sous arbre gauche est 0, -1 ou 1.
Exemple:
C) Rotations
Une rotation droite autour du sommet q d'un arbre binaire de recherche consiste à faire
descendre le sommet q et à faire remonter son fils gauche p sans invalider l'ordre des
éléments. L'opération inverse s'appelle rotation gauche autour du sommet p.
Page 27 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Remarques
Pour rééquilibrer un arbre AVL après une insertion, une seule rotation ou double
rotation suffit.
Pour rééquilibrer un arbre AVL après une suppression, il faut jusqu’au h rotations ou
double rotations (h est la hauteur de l'arbre)
+1 0
A A
Ag Ad Ag Ad
h-1
h
Page 28 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
La hauteur du sous-arbre gauche était égale à la hauteur du sous-arbre droit, l'arbre reste
équilibré.
0 -1
A A
Ag Ad Ag Ad
h-1
h
La hauteur du sous-arbre gauche était égale à la hauteur du sous arbre droit plus 1; après
l'insertion, l'arbre devient déséquilibré.
Etudions les différentes possibilités qui se présentent lorsque l'arbre est déséquilibré.
Supposons qu'avant l'insertion la hauteur du sous-arbre droit soit h -1, la hauteur du sous-
arbre gauche avant l'insertion était égale à h, elle a augmenté lors de l'insertion, et est donc
maintenant de h +1. Soit B le sous-arbre gauche de A. Deux possibilités se présentent :
B penche gauche
Bg
Après insertion
Devient après rééquilibrage:
Page 29 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
B penche droite
Un au moins des deux arbres Cg ou Cd a une hauteur h +1, l'autre pouvant avoir une hauteur
h, et c'est celui sur lequel se produit le déséquilibre.
Opération de Suppression
En C/C++
Page 30 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
3. Ecrire une fonction C++ qui donne le père d’un nœud donné.
4. Ecrivez un algorithme qui renvoie le deuxième plus petit élément contenu dans un arbre
binaire d’entiers.
5. Spécifier et implanter les méthodes nécessaires pour vérifier qu'un arbre binaire vérifie
effectivement la propriété qui en fait un arbre de recherche.
15 30
6 19 28 32
d) Ecrire la fonction qui calcule le nombre de fils gauche d’un arbre. (le nombre de fils
gauche dans cet arbre est 3)
8. Ecrire un algorithme permettant de tester si un ABR est ordonné. Un ABR est ordonné si
l’ensemble des fils de chaque nœud est totalement ordonné.
1
Exemple :
2 3
4 5
6 7
8 9
10
0
Page 31 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Introduction
De manière générale, un graphe permet de représenter les connexions d’un ensemble en
exprimant les relations entre ses éléments : réseau de communication, réseau routier,
circuit électronique,…, mais aussi relations sociales ou interactions entre espèces
animales. Le vocabulaire de la théorie des graphes est utilisé dans de nombreux domaines
: chimie, biologie, sciences sociales, etc., mais c’est avant tout une branche à part entière
et déjà ancienne des mathématiques. Néanmoins, l’importance accrue que revêt l’aspect
algorithmique dans ses applications pratiques en fait aussi un domaine incontournable de
l’informatique. Pour schématiser, les mathématiciens s’intéressent avant tout aux
propriétés globales des graphes (graphes Eulériens, graphes Hamiltoniens, arbres,
coloration, dénombrement, . . .) là où les informaticiens vont plutôt chercher à concevoir
des algorithmes efficaces pour résoudre un problème faisant intervenir un graphe
(recherche du plus court chemin, problème du voyageur de commerce, recherche d’un
arbre couvrant, . . .). Tout ceci forme un ensemble très vaste, dont nous n’aborderons que
quelques aspects, essentiellement de nature algorithmique
4.1. Graphes non orientés
Un graphe non orienté G, est la donnée d’un couple (V(G), E(G)) où V(G) est un ensemble
(fini) de sommets et E(G) un ensemble (fini) d’arêtes, chaque arête ayant deux sommets pour
extrémités. Une arête est une boucle si elle relie un sommet à lui-même. On parle de
multigraphe lorsque plusieurs arêtes relient les mêmes paires de sommets. Dans le cas
contraire, on dit que le graphe est simple.
Graphe simple sans boucles Graphe simple ayant deux boucles Multigraphe
Page 32 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Un graphe simple correspond ainsi au graphe d’une relation symétrique entre des
objets, représentés par les sommets.
Deux sommets reliés par une arête sont dits adjacents (on dit également qu’ils sont
voisins).
Une arête reliant deux sommets est dite incidente à ces deux sommets.
Le degré d’un sommet est le nombre d’arêtes incidentes à ce sommet, les boucles
comptant pour deux.
degré de A : 4
degré de B : 2
degré de C : 3
degré de D : 3
La somme des degrés des sommets d’un graphe vaut deux fois le nombre de ses arêtes.
Page 33 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
ainsi pour diamètre 2 (qui correspond aux distances entre les sommets D et A, ou D et
B).
Un graphe g = (V', E') est un sous-graphe d'un graphe G si tous les sommets et toutes
les arêtes de g sont aussi des sommets et des arêtes de G :
Un sous-graphe de G qui contient tous les sommets de G est dit un graphe partiel de
G.
Un sous graphe induit d’un graphe G est un graphe G’ tel qu’il existe un sous-
ensemble X de V(G) vérifiant G’ = G[X].
Page 34 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Un graphe orienté correspond ainsi au graphe d’une relation non nécessairement symétrique
entre des objets, représentés par les sommets. Deux sommets reliés par un arc sont dits
adjacents (on dit également qu’ils sont voisins). Si deux sommets u et v sont reliés par un arc
(u, v), v est un successeur de u et u est un prédécesseur de v.
Graphe orienté
sans boucles
Le degré sortant d’un sommet est le nombre de successeurs de ce sommet. Le degré entrant
d’un sommet est le nombre de prédécesseurs de ce sommet. Dans l’exemple précédent, le
sommet C a pour degré entrant 1 et pour degré sortant 2.
Tout graphe orienté vérifie la propriété élémentaire suivante:
La somme des degrés sortants des sommets d’un graphe est égale à la somme des degrés
entrants de ces sommets et au nombre d’arcs du graphe.
À tout graphe G, orienté ou non, on peut associer sa matrice d’adjacence M = M(G). Cette
matrice est une matrice carrée dont les éléments, indicés par V(G) × V(G), sont définis par M
[i,j] = 1 s’il existe un arc (ou une arête) allant de i vers j et M [i,j] = 0 sinon. Si le graphe G est
non orienté, la matrice M(G) est symétrique.
Page 35 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Graphe orienté
Une telle matrice se représente aisément au niveau algorithmique par un tableau à deux
dimensions.
Dans le cas d’un graphe non orienté, la matrice étant symétrique, il est plus efficace (en terme
d’espace occupé) de représenter la matrice par un tableau à une seule dimension, en ne
stockant que la partie inférieure de la matrice, ligne par ligne. Pour la matrice M(G) ci-dessus,
on obtiendrait la liste suivante:
Page 36 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
Propriété
Soit G un graphe, orienté ou non, et M sa matrice d’adjacence. La puissance kième
Mk de la matrice M est telle que l’élément Mk [i,j] correspond au nombre de chemins de
longueur k allant de i vers j.
L’exemple suivant permet de constater cette propriété :
Regardons par exemple les chemins de longueur 2 issus du sommet 2 (3ème ligne de la matrice
M2) :
1 chemin de 2 vers 0 : 210
1 chemin de 2 vers 1 : 201
3 chemins de 2 vers 2 : 202, 212 et 232
aucun chemin de 2 vers 3
1 chemin de 2 vers 4 : 234
0 → 1, 2
1 → 0, 1, 2
2 → 0, 1, 3
3→ 2
0→1
1→2
2 → 0, 3
3→
Page 37 sur 38
Structures de données avancées Université Larbi Tébessi L. Laimeche
De nombreux problèmes peuvent être modélisés à l’aide de la théorie des graphes. Le principe
général est le suivant :
On modélise le « support » du problème à l’aide d’un graphe (il faut alors choisir les
objets que représentent les sommets et les relations que représentent les arcs ou les
arêtes),
On reformule le problème en termes de graphes,
On tente de résoudre le problème en question : on retombe parfois sur un problème
bien connu en théorie des graphes, pour lequel on dispose d’algorithmes de résolution,
et parfois sur un nouveau problème, source possible de nouvelles recherches en
théorie des graphes…
Des domaines d’application courants sont par exemple :
La théorie des jeux : les sommets représentent les positions de jeux, les arcs les «
coups » faisant passer d’une position à une autre ; le problème consiste généralement à
trouver un (plus court) chemin menant de la position initiale à une position gagnante.
Les problèmes de réseau routier : le graphe (orienté) modélise le réseau et on cherche
généralement des chemins optimaux selon des critères de coût spécifiques, distance,
temps,(exemple classique : le GPS).
Les problèmes de réseaux (informatique, électrique, …) : diffusion ou collecte
d’information, résistance aux pannes, optimisation de débit, … etc.
Page 38 sur 38