Vous êtes sur la page 1sur 24

R´epublique Alg´erienne D´emocratique et Populaire

Minist`ere de l’Enseignement Sup´erieur et de la Recherche Scientifique

Universit´e M’hamed BOUGARA


Facult´e des Sciences

MEMOIRE´

Pr´esent´e Pour L’Obtention Du Diplˆome De Licence

En : Math´ematiques appliqu´ees

Sp´ecialit´e : Math´ematiques appliqu´ees

Par : BOUYAHIAOUI Fella


ACHERAIOU Hanane
ARIHIR Chourouk

Sujet :

Les algorithmes de l’optimisation dans les r´eseaux de


distribution

Pr´esent´e devant le jury compos´e de :

M.CHEURFA Fatah Directeur de m´emoire


M.Taharbouchet Examinateur

Ann´ee universitaire : 2023/2024


Table des mati`eres

Table des mati`eres 1

1 Notions de base sur la th´eorie des graphes 2


1.1 D´efinitions de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Type de graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Cheminements et connexit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Graphes eul´eriens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Graphes hamiltoniens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Notions pr´eliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
1.7 Conclusion ........................................ 9

2 Les algorithmes de l’optimisation dans les r´eseaux de distribution 10


2.1 Les algorithmes de graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.1 Algorithmes de Parcours de Graphes . . . . . . . . . . . . . . . . . . . . . . 10
2.1.2 Algorithme de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Algorithmes de Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.1 Probl`eme du Voyageur de Commerce (TSP) . . . . . . . . . . . . . . . . . . 16
2.2.2 Cycle Eulerien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.3 Probl`eme du Postier Chinois (CPP) . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Bibliographie 21

1
Introduction g´en´erale

Dans cette section d’introduction, nous aborderons les aspects essentiels des deux chapitres `a
venir. Le premier chapitre porte sur la th´eorie des graphes, un domaine fondamental dans l’´etude
des structures interconnect´ees. Nous explorerons les concepts cl´es, les d´efinitions et les types de
graphes, en nous concentrant sur leur pertinence dans les r´eseaux de distribution.
Le deuxi`eme chapitre est consacr´e aux algorithmes d’optimisation dans les r´eseaux de
distribution. Nous nous int´eresserons `a diverses techniques et approches pour r´esoudre des
probl`emes complexes dans ces r´eseaux. L’objectif principal de ce chapitre est d’explorer les
solutions algorithmiques efficaces.
Les algorithmes d’optimisation sont des outils puissants pour r´esoudre des probl`emes
complexes dans les r´eseaux de distribution. Ils permettent de trouver les solutions optimales ou
quasioptimales.
Ce projet vise `a combiner les connaissances th´eoriques de la th´eorie des graphes avec les
techniques pratiques de l’optimisation pour am´eliorer les performances et l’efficacit´e des r´eseaux
de distribution. En comprenant les fondements th´eoriques des graphes et en appliquant des
algorithmes d’optimisation.
En combinant les connaissances acquises dans ces deux chapitres, nous serons en mesure de
proposer des solutions efficaces et innovantes pour r´esoudre les d´efis complexes rencontr´es dans
les r´eseaux de distribution. Nous esp´erons que ce travail contribuera `a l’am´elioration des
performances, de l’efficacit´e et de la fiabilit´e de ces r´eseaux essentiels dans notre soci´et´e
moderne.

Chapitre 1

Notions de base sur la th´eorie des


graphes

La th´eorie des graphes est une branche des math´ematiques qui ´etudie les structures appel´ees
graphes, qui sont compos´ees de sommets reli´es par des arˆetes. Son histoire remonte au XVIIIe
si`ecle lorsque Leonhard Euler a r´esolu le probl`eme des ponts de K¨onigsberg en utilisant des repr
´esentations abstraites appel´ees graphes.
Au fil des ann´ees, de nombreux math´ematiciens ont contribu´e `a la th´eorie des graphes en
introduisant de nouveaux concepts et en d´eveloppant des th´eories. Gustav Kirchhoff a introduit la
th´eorie des arbres, Arthur Cayley a ´etudi´e les permutations dans les graphes, et D´enes K˝onig a
travaill´e sur les graphes bipartis et les probl`emes d’appariement, pour n’en nommer que
quelquesuns.
La th´eorie des graphes s’est d´evelopp´ee au XXe si`ecle avec l’introduction de concepts tels que
les graphes planaires et les graphes topologiques. Elle a connu une expansion consid´erable et est d

1
´esormais utilis´ee dans de nombreux domaines tels que l’informatique, les r´eseaux sociaux, la
biologie, la chimie et l’optimisation.
Aujourd’hui, la th´eorie des graphes joue un rˆole essentiel dans la mod´elisation, l’analyse et la r
´esolution de probl`emes r´eels. Elle fournit des outils et des algorithmes pour ´etudier les propri´et
´es et les relations entre les entit´es dans diverses situations. Son influence s’´etend `a de nombreux
domaines de la recherche et de l’application pratique.
En somme, la th´eorie des graphes est une discipline math´ematique fondamentale qui permet
de repr´esenter et d’analyser les relations entre les objets. Son histoire riche et son application dans
de nombreux domaines en font un sujet d’´etude important et pertinent.

1.1 D´efinitions de base

Qu’est-ce qu’un graphe?

≪Des points et des traits ou des fl`eches ≫


• Point de vue math´ematique : une relation binaire
• Point de vue pratique : repr´esentation abstraite d’un r´eseau (de t´el´ecommunication par
exemple) Les graphes, un outil magique, pour visualiser des ´echanges, pour la mod´elisation des
syst`emes r´eels
Les graphes sont utilis´es dans des domaines tr`es vari´es : ´economie, informatique, industrie, chimie.

Un graphe : Un graph est d´efini G = (V,E)


V : l’ensemble de sommet E
: l’ensemble fini d’arˆete.
Exmple : V = (V1,V2,V3) et E = (e1,e2,e3)

e1
V1 V2

e2
e3
V3

Figure 1.1 – Exemple d’un graphe de 3 sommets

L’ensemble des successeurs d’un sommet v ∈ V est not´e γ(v)


L’application γ qui, `a tout ´el´ement de V, fait correspondre une partie de V (un El´ement´ de P(V)) est
appel´ee une application multivoque.
L’ensemble des pr´ed´ecesseurs d’un sommet v ∈ V peut alors ˆetre not´e γ+(v) ou γ−(v) est l‘application
(multivoque) r´eciproque de γ

Degr´e d‘un sommet : On appelle degr´e du sommet v, et on note d(v), le nombre d’arˆetes incidentes `a
ce sommet (Une boucle sur un sommet compte double)
Danc d(V1) = 1 et d(V2) = 2

2
e1
V1 V2

e2

V3

Figure 1.2 – Exemple d’un graphe de 3 sommets

Degr´e de graphe : Le degr´e d’un graphe est le degr´e maximum de tous ses sommets
Un graphe dont tous les sommets ont le mˆeme degr´e est dit r´egulier.

1.2 Type de graphe

Un graphe simple : Un graphe est simple si au plus une arˆete relie deux sommets et s’il n’y a pas
de boucle sur un sommet (une arˆete qui relie un sommet `a lui-mˆeme).

Un graphe complet : Un graphe complet est un graphe dans lequel chaque paire de sommets
distincts est reli´ee par une arˆete. Autrement dit, il n’y a pas de sommets isol´es et chaque paire de
sommets est adjacente.

V1 V2

V3 V4

Figure 1.3 – Exemple d’un graphe complet


Sous graphe : Un sous-graphe d’un graphe donn´e est obtenu en enlevant certains sommets, et toutes les
arˆetes incidentes `a ces sommets

Donc on dit que le graphe G‘ = (V ‘,E‘) est un sous-graphe du graphe G = (V,E) si


1. V ‘ ⊆ V
2. E‘ ⊆ E
3. E‘= (x,y) ∈ E , x ∈ V ‘ et y ∈ V ‘

V1 V2

V3 V1 V2

Figure 1.4 – Exemple d’un graphe et de son sous-graphe

3
Un graphe partiel : Un graphe partiel est un graphe obtenu `a partir d’un graphe original en supprimant
certains sommets et/ou certaines arˆetes.
soit G = (V,E) un graphe avec un ensemble de sommets V et un ensemble d’arˆetes E. Un graphe
partiel G′ = (V ′,E′) est obtenu en choisissant un sous-ensemble V ′ ⊆ V de sommets de G et un sous-
ensemble E′ ⊆ E d’arˆetes de G. Cela signifie que G′ contient uniquement les sommets et les arˆetes s
´electionn´es `a partir de G.

A B A B

C D D

Figure 1.5 – Exemple d’un graphe et de son graphe partiel

Un graphe non orient´e : Un graphe non orient´e est une structure math´ematique compos´ee de
sommets reli´es entre eux par des arˆetes non directionnelles. Les arˆetes ne poss`edent pas de
notion de flux ou de direction sp´ecifique, ce qui signifie que la relation entre les sommets est sym
´etrique .

A B

Figure 1.6 – Exemple d’un graphe non orient´e

un graphe orient´e : Un graphe orient´e est une structure math´ematique compos´ee de sommets
reli´es entre eux par des arcs unidirectionnels. Chaque arc indique une relation asym´etrique entre
les sommets, repr´esentant un flux ou une direction sp´ecifique .

A B

Figure 1.7 – Exemple d’un graphe orient´e

Un multigraphe : Un multigraphe est une g´en´eralisation d’un graphe dans lequel plusieurs
arˆetes peuvent relier le mˆeme couple de sommets. Les arˆetes d’un multigraphe peuvent
´egalement avoir des poids ou des ´etiquettes distinctes.

3
1
V1 V2
2

4
Figure 1.8 – Exemple d’un multigraphe

Un graphe biparti : si ses sommets peuvent ˆetre divis´es en deux ensembles U et V , de sorte que toutes
les arˆetes du graphe relient un sommet dans U(U1,U2,U3) `a un sommet dans V (V1,V2,V3)

V1 U1

V2 U2

V3 U3

Figure 1.9 – Exemple d’un graphe biparti

Un graphe connexe : Un graphe connexe est un graphe dans lequel il existe un chemin entre
chaque paire de sommets. Cela signifie que tous les sommets du graphe sont reli´es les uns aux
autres d’une mani`ere ou d’une autre .

A B C

D E

Figure 1.10 – Exemple d’un graphe connexe

Un graphe pond´er´e : Un graphe pond´er´e est un graphe dans lequel chaque arˆete est associ´ee `a
une valeur num´erique appel´ee poids. Le poids peut repr´esenter une distance, un couˆt, une capacit´e,
etc.
2
A B

3 1
4

C D
5

Figure 1.11 – Exemple d’un graphe pond´er´e

1.3 Cheminements et connexit´e

Chaine : suite d’arrˆet telle que tout arrˆet a une extr´emit´e commune avec l’arrˆet pr´ec´edent ( sauf

5
´eventuellement le premier) et l’autre avec l‘arrˆet suivant (sauf ´eventuellement le dernier)
La longueur de la chaˆıne est ´egale au nombre d’arˆetes qui la composent
(V1,V2,V3) Longueur=2

e1
V1 V2

e2

V3

Figure 1.12 – Exemple d’une chaˆıne dans un graphe

Si aucun des sommets composant la s´equence n’apparaˆıt plus d’une fois, la chaˆıne est dite chaˆıne
´el´ementaire
Si aucune des arˆetes composant la s´equence n’apparaˆıt plus d’une fois, la chaˆıne est dite chaˆıne
simple.

Chemin : suite d’arcs telle que l’extr´emit´e terminale d’un arc co¨ıncide avec l’extr´emit´e
initiale de l’arc suivant
Si aucun des sommets composant la s´equence n’apparaˆıt plus d’une fois, le chemin est dit chemin ´el
´ementaire
Si aucune des arˆetes composant la s´equence n’apparaˆıt plus d’une fois, le chemin est dit chemin
simple.

e6
V4 V3

e2
e5
e7 e4
e1 e3
V1 V2 V5

{e3,e4,e6,e7,e2} Chemin simple mais n’est pas ´el´ementaire

Cycle : Une chaˆıne dont les deux sommets extr´emit´es sont identiques est un cycle (Ne passe pas deux
fois la mˆeme sommet) Sommet de d´epart = sommet d’arriver .
Circuit : Un circuit dans un graphe non orient´e est un chemin ferm´e qui parcourt au moins trois
sommets distincts et ou` chaque arˆete est utilis´ee exactement une fois, `a l’exception de l’arˆete
finale qui relie le dernier sommet au premier sommet du circuit.

Composantes connexes : Un graphe non connexe peut ˆetre divis´e en plusieurs composantes
connexes. Une composante connexe est un sous-ensemble de sommets qui sont connect´es entre
eux mais qui ne sont pas connect´es aux sommets en dehors de la composante. Chaque sommet du
graphe appartient `a une unique composante connexe.

Arbre de recouvrement connexe : Un arbre de recouvrement connexe est un sous-graphe d’un


graphe connexe qui est lui-mˆeme un arbre et qui contient tous les sommets du graphe d’origine.
Cela signifie que l’arbre de recouvrement connexe relie tous les sommets du graphe et ne contient
pas de cycles.

6
Une forˆet : Une forˆet est un ensemble de graphes non orient´es disjoints, ou` chaque composante de
la forˆet est un arbre. En d’autres termes, une forˆet est la r´eunion de plusieurs arbres.

Un arbre : Un arbre est un graphe non orient´e connexe sans aucun circuit. Autrement dit, un arbre
est un graphe dans lequel il existe exactement un chemin unique entre chaque paire de sommets, et
il n’y a pas de boucles.

1.4 Graphes eul´eriens

Cycle eul´erien d’un graphe G : est un cycle passant une et une seule fois par chacune des arˆetes de G
(Un graphe est dit eul´erien s’il poss`ede un cycle eul´erien).

Chaˆıne eul´erienne d’un graphe G : une chaˆıne passant une et une seule fois par chacune des arˆetes de
G. (Un graphe ne poss´edant que des chaˆınes eul´eriennes est semi-eul´erien)
Graphe est eul´erien (ou semi-eul´erien) s’il est possible de dessiner le graphe sans lever le crayon et
sans passer deux fois sur la mˆeme arˆete.

V4 V3

e1 e2
e5
e4

V1 V2
e3

Cycle eul´erien (e1,e2,e3)


Chemin eul´erien (e2,e4) Donc G
est un graphe eul´erien.

1.5 Graphes hamiltoniens

Cycle hamiltonien d’un graphe G : un cycle passant une et une seule fois par chacun des sommets de G
(Un graphe est dit hamiltonien s’il poss`ede un cycle hamiltonien).
Chaˆıne hamiltonienne d’un graphe G : une chaˆıne passant une et une seule fois par chacun des
sommets de G. (Un graphe ne poss´edant que des chaˆınes hamiltoniennes est semi-hamiltonien).
Quelques propri´et´es :
– un graphe poss´edant un sommet de degr´e 1 ne peut pas ˆetre hamiltonien
– si un sommet dans un graphe est de degr´e 2, alors les deux arˆetes incidentes `a ce sommet doivent
faire partie du cycle hamiltonien
– les graphes complets Kn sont hamiltoniens
G = (V1,V2,V3,V4),(e1,e2,e3,e4,e5)

7
V4 V3
e4
e2
e5
e3
e1
V1 V2

e1,e5,e4,e2 Alors G est hamiltonien.

1.6 Notions pr´eliminaires

File : Une file est une structure de donn´ees lin´eaire ou` l’insertion des ´el´ements se fait `a une extr
´emit´e (appel´ee ”arri`ere”) et la suppression des ´el´ements se fait `a l’autre extr´emit´e ( appel´ee
”avant”). Le principe de fonctionnement est celui du ”premier entr´e, premier sorti” (FIFO). Les op
´erations de base sur une file sont l’enfilement (ajout d’un ´el´ement `a l’arri`ere) et le d´efilement
(suppression d’un ´el´ement `a l’avant).

Pile : Une pile est une structure de donn´ees lin´eaire ou` l’insertion et la suppression des ´el
´ements se font `a une extr´emit´e appel´ee ”sommet”. Le principe de fonctionnement est celui du
”dernier entr´e, premier sorti” (LIFO). Les op´erations de base sur une pile sont l’empilement (ajout
d’un ´el´ement au sommet) et le d´epilement (suppression de l’´el´ement du sommet).

Clique : Dans un graphe non orient´e, une clique est un sous-ensemble de sommets tels que chaque
paire de sommets dans ce sous-ensemble est reli´ee par une arˆete. En d’autres termes, une clique
est un groupe de sommets qui sont tous mutuellement connect´es. Une clique maximale est une
clique qui ne peut pas ˆetre ´etendue en ajoutant un autre sommet du graphe tout en pr´eservant la
propri´et´e de cliquage.

Couplage : Dans un graphe non orient´e, un couplage est un sous-ensemble d’arˆetes tel que chaque
sommet du graphe est incident `a au plus une arˆete du couplage. Un couplage maximal est un
couplage qui ne peut pas ˆetre ´etendu en ajoutant une autre arˆete du graphe tout en pr´eservant la
propri´et´e de couplage. Un couplage parfait est un couplage qui couvre tous les sommets du
graphe.

Coloration de graphe : La coloration de graphe consiste `a attribuer des couleurs aux sommets
d’un graphe de mani`ere `a ´eviter les sommets adjacents de mˆeme couleur, avec pour objectif de
minimiser le nombre de couleurs utilis´ees.

Complexit´e des algorithmes : La complexit´e d’un algorithme est une mesure de la quantit´e de
ressources (temps d’ex´ecution, espace m´emoire) qu’il requiert en fonction de la taille de l’entr´ee.
Elle indique la limite sup´erieure de la croissance de ces ressources lorsque la taille de l’entr´ee augmente.
La notation O(grandeO) est utilis´ee pour exprimer cette complexit´e.
Formellement, si un algorithme a une complexit´e de O(g(n)), cela signifie que pour une taille
d’entr´ee n suffisamment grande, le temps d’ex´ecution ou l’espace requis par l’algorithme est born
´e par une fonction g(n), jusqu’`a une constante multiplicative pr`es.

8
R´eseau de distribution : Un r´eseau de distribution est un graphe repr´esentant les connexions et
les interactions entre les diff´erents points ou nœuds d’un syst`eme de distribution. Les nœuds,
´egalement appel´es sommets, repr´esentent des emplacements cl´es tels que les centres de
distribution, les points de vente, les entrepˆots, les fournisseurs ou les installations de production.
Les arˆetes du graphe symbolisent les chemins ou les connexions entre ces sommets. L’objectif est
de faciliter le mouvement efficace des produits ou des services `a travers le r´eseau, en optimisant
les distances, les couˆts de transport et les flux d’approvisionnement pour r´epondre aux besoins
des clients.

1.7 Conclusion

Ce chapitre a ´etabli les fondements de la th´eorie des graphes en introduisant les concepts
fondamentaux et les d´efinitions cl´es. Nous avons explor´e les diff´erents types de graphes et les
notions essentielles qui nous serviront tout au long de ce projet. En acqu´erant une compr´ehension
solide des concepts de base de la th´eorie des graphes, nous sommes d´esormais prˆets `a
approfondir notre ´etude des algorithmes d’optimisation dans les r´eseaux de distribution.

9
Chapitre 2

Les algorithmes de l’optimisation dans


les r´eseaux de distribution

Dans ce projet, nous abordons le domaine fascinant de l’optimisation dans les r´eseaux de
distribution. Les r´eseaux de distribution, qu’il s’agisse de r´eseaux´electriques, de r´eseaux de t´el
´ecommunications ou d’autres syst`emes de distribution, jouent un rˆole essentiel dans notre soci´et´e
moderne. Ils permettent de transporter et de distribuer des ressources vitales telles que l’´electricit´e, les
donn´ees et les biens. Cependant, l’efficacit´e et la fiabilit´e de ces r´eseaux sont souvent mises `a
l’´epreuve en raison de contraintes et de d´efis complexes.
Le chapitre pr´ec´edent a pos´e les bases de la th´eorie des graphes, qui constitue un outil
essentiel pour mod´eliser et r´esoudre des probl`emes dans les r´eseaux de distribution. Nous avons
explor´e les concepts de base. Ces fondements nous permettent maintenant d’approfondir notre
compr´ehension et de nous aventurer dans le domaine des algorithmes d’optimisation dans les r
´eseaux de distribution.
Dans ce chapitre, nous allons nous concentrer sp´ecifiquement sur les algorithmes
d’optimisation dans les r´eseaux de distribution. Nous examinerons diff´erentes approches et
techniques utilis´ees pour r´esoudre des probl`emes d’optimisation complexes. L’objectif de ce
chapitre est de pr´esenter les principaux algorithmes d’optimisation utilis´es dans les r´eseaux de
distribution, en mettant l’accent sur leur application pratique et leur efficacit´e.
En combinant les connaissances acquises dans le chapitre pr´ec´edent sur la th´eorie des
graphes avec les concepts d’optimisation pr´esent´es dans ce chapitre, nous serons mieux pr´epar
´es `a r´esoudre les probl`emes complexes rencontr´es dans les r´eseaux de distribution. Ces
algorithmes d’optimisation joueront un rˆole crucial pour am´eliorer l’efficacit´e et la fiabilit´e des r
´eseaux de distribution et pour r´epondre aux besoins croissants de la soci´et´e.

2.1 Les algorithmes de graphe

2.1.1 Algorithmes de Parcours de Graphes


L’algorithme de parcours en profondeur (Depth-First Search) et l’algorithme de parcours en
largeur (Breadth-First Search) . Ces deux algorithmes sont utilis´es pour explorer les graphes de
mani`ere syst´ematique, en visitant tous les sommets accessibles depuis un sommet donn´e. Ils sont
fondamentaux dans la compr´ehension de la structure et de la connectivit´e des graphes, et ils
servent de base `a de nombreux autres algorithmes dans les r´eseaux de distribution.
Parcours en Largeur (BFS) :

L’algorithme de parcours en largeur explore les sommets d’un graphe en commen¸cant par un
sommet donn´e, puis en explorant tous ses voisins avant de passer aux voisins de ses voisins.Cet
algorithme utilise une file d’attente pour stocker les sommets `a visiter. Il commence en ins´erant le

10
sommet de d´epart dans la file d’attente, puis it`ere tant que la file d’attente n’est pas vide. A`
chaque it´eration, il retire le sommet en tˆete de la file d’attente, visite ce sommet et ajoute tous ses
voisins non visit´es `a la file d’attente.
Ce processus se poursuit jusqu’`a ce que tous les sommets accessibles `a partir du sommet de d´epart
aient ´et´e visit´es.

Algorithm 1 Parcours en largeur d’un graphe (BFS)


1: procedure BFS(G,s0)
2: Entr´ee : Un graphe G et un sommet s0 de G
3: Postcondition : Retourne une arborescence π d’un parcours en largeur de G `a partir de s0
4: D´eclaration : Une file (FIFO) f initialis´ee `a vide
5: for all sommet si de G do
6: π[si] ← null
7: Colorier si en blanc
8: end for
9: Ajouter s0 dans la file f et colorier s0 en gris
10: while la file f n’est pas vide do
11: Soit sFirstOut le sommet le plus ancien dans f
12: for all sommet si ∈succ(sFirstOut) do
13: if si est blanc then
14: Ajouter si dans la file f et colorier si en gris
15: π[si] ← sFirstOut
16: end if
17: end for
18: Enlever sFirstOut de f et colorier sFirstOut en noir
19: end while
20: Retourne π
21: end procedure

Complexit´e : O(n + p) ou` n est le nombre de sommets du graphe et p est le nombre d’arcs du
graphe. Cette complexit´e indique que le temps d’ex´ecution de l’algorithme est lin´eaire par
rapport `a la somme du nombre de sommets et du nombre d’arcs du graphe.

Exemple1 : L’algorithme BFS peut ˆetre illustr´e `a l’aide d’un exemple. Consid´erons le graphe suivant :
Nous avons un graphe non orient´e avec six sommets (A,B,C,D,E,F) et cinq arˆetes. L’objectif est
d’effectuer un parcours BFS `a partir du sommet A pour explorer les autres sommets du graphe et
atteindre le sommet F.

11
A B D F

C E

Figure 2.1 – Graphe de d´epart

Etape´ File ( FIFO )


1 A
2 Sortie de la file : A
File : B, C
3 Sortie de la file : B
File : C, D, E
4 Sortie de la file : C
File : D, E, F
5 Sortie de la file : D
File : E, F
6 Sortie de la file : E
File : F
7 Sortie de la file : F
File : ( vide )
Table 2.1 – Parcours BFS jusqu’au sommet F

Parcours en Profondeur (DFS) :

L’algorithme de parcours en profondeur explore les sommets d’un graphe de mani`ere r


´ecursive en suivant les arˆetes jusqu’`a ce qu’il atteigne un sommet sans voisins non visit´es.Cet
algorithme utilise une pile pour stocker les sommets `a visiter. Il commence en ins´erant le sommet
de d´epart dans la pile, puis it`ere tant que la pile n’est pas vide. A` chaque it´eration, il retire le
sommet en haut de la pile, visite ce sommet et ajoute tous ses voisins non visit´es `a la pile.
Ce processus se poursuit jusqu’`a ce que tous les sommets accessibles `a partir du sommet de d´epart
aient ´et´e visit´es.

12
Algorithm
2 Parcours en Profondeur ( DFS )
1: procedure DFS(G,s0)
2: Entr´ee : Un graphe G et un sommet s0 de G
3: Postcondition : Retourne une arborescence π repr´esentant un parcours en profondeur de G `a
partir de s0
4: D´eclaration : Une pile (LIFO) p initialis´ee `a vide
5: for all sommet si ∈ S do
6: π[si] ← null
7: Colorier si en blanc
8: end for
9: Empiler s0 dans p et colorier s0 en gris
10: while p n’est pas vide do
11: Soit si le dernier sommet entr´e dans p(au sommet de p)
12: if il existe un sommet sj ∈ succ(si) tel que sj est blanc then
13: Empiler sj dans p et colorier sj en gris
14: π[sj] ← si
15: else
16: D´epiler si de p et colorier si en noir
17: end if
18: end while
19: Retourne π
20: end procedure

Complexit´e : O(n + p) ou` n est le nombre de sommets du graphe et p est le nombre d’arcs du
graphe. La complexit´e de l’algorithme DFS d´epend de la taille du graphe, c’est-`a-dire du nombre de
sommets et d’arˆetes.

Exemple2 : Dans le mˆeme exemple, mais cette fois avec l’algorithme DFS, nous partirions du
sommet A et explorerions en profondeur les voisins avant de revenir en arri`ere. Cela nous
permettrait de parcourir les autres sommets du graphe, y compris le sommet F

A B D F

C E

Figure 2.2 – Graphe de d´epart

— Parcours DFS `a partir du sommet A :


Etape´ Pile ( LIFO )

13
1 A
2 Sortie de la pile : A
Pile : B
3 Sortie de la pile : B
Pile : D
4 Sortie de la pile : D
Pile : E
5 Sortie de la pile : E
Pile : C
6 Sortie de la pile : C
Pile : F
7 Sortie de la pile : F
Pile : ( vide )
Table 2.2 – Parcours DFS `a partir du sommet A

Le parcours DFS explore d’abord le sommet A, puis se d´eplace vers le sommet B,D,E,C et enfin
F.

Remarque : Dans l’exemple donn´e, si les voisins du sommet A, c’est-`a-dire B et C, sont


stock´es dans l’ordre B,C, alors le sommet B sera visit´e avant le sommet C dans le parcours
DFS.
Cependant, si les voisins du sommet A sont stock´es dans l’ordre C,B, alors le sommet C sera visit
´e avant le sommet B dans le parcours DFS.
Donc, l’ordre des voisins visit´es dans le parcours DFS d´epend de l’ordre dans lequel ils sont
stock´es ou d´ecouverts, et cela peut varier en fonction de la structure de donn´ees utilis´ee
pour le parcours.

2.1.2 Algorithme de Kruskal


L’algorithme de Kruskal est utilis´e pour calculer un arbre couvrant de poids minimum,
´egalement appel´e Minimum Spanning Tree (MST), d’un graphe pond´er´e.Au d´ebut, toutes les
arˆetes du graphe sont tri´ees par ordre croissant de poids. Ensuite, l’algorithme parcourt ces
arˆetes une par une. Pour chaque arˆete, il v´erifie si son ajout `a l’arbre couvrant cr´ee un cycle. Si ce
n’est pas le cas, l’arˆete est ajout´ee `a l’arbre couvrant. Sinon, elle est ignor´ee.
L’algorithme continue ce processus jusqu’`a ce qu’il ait parcouru toutes les arˆetes du graphe ou
que l’arbre couvrant soit complet. Lorsque l’algorithme se termine, l’arbre couvrant obtenu est de
poids minimal.
3 Calcul d’un MST par Kruskal
1: function Kruskal(g,cout)
2: Entr´ee : Un graphe g = (S,A) et une fonction cout : A →R
3: Postcondition : Retourne un ensemble d’arˆetes E ⊆ A tel que (S,E) est un MST de g
4:
5: D´eclaration : Une arborescence π
6: Un vecteur p tel que p[ri] est une borne sup´erieure de la profondeur de l’arbre de racine ri
7:
8: for chaque sommet si ∈ S do

14
Algorithm
9: π[si] ← null
10: p[si] ← 0 11:
end for
12:
13: E ←∅
14: Trier les arˆetes de A par ordre de couˆt croissant
15: for chaque arˆete {si,sj} prise par ordre de couˆt croissant et tant que |E| < |S|− 1 do 16:
ri ← racine(π,si)
17: rj ← racine(π,sj)
18: if ri ̸= rj then
19: Ajouter (si,sj) dans E
20: if p[ri] < p[rj] then
21: π[ri] ← rj
22: else if p[rj] < p[ri] then
23: π[rj] ← ri 24: else
25: π[rj] ← ri
26: p[ri] ← p[ri] + 1
27: end if
28: end if
29: end for
30:
31: Retourne E
32: end function
33:
34: function racine(π,s)
35: Entr´ee/Sortie : Une forˆet π
36: Entr´ee : Un sommet s
37: Postcondition : Retourne la racine r de l’arborescence contenant s et la met `a jour de sorte que
tous les sommets se trouvant entre s et r soient directement rattach´es sous r 38: if π[s] = null then
39: Retourne s
40: end if
41: π[s] ← racine(π,π[s])
42: Retourne π[s]
43: end function

Complexit´e : O(|A|log|A|)ou` |A| repr´esente le nombre d’arˆetes dans le graphe.


Ces utilisations illustrent comment l’algorithme de Kruskal peut ˆetre appliqu´e dans diff´erents
domaines pour r´esoudre des probl`emes d’optimisation et de conception de r´eseaux.

Exemple3 :
— L’algorithme de Kruskal peut ˆetre illustr´e `a l’aide d’un exemple concret. Consid´erons le graphe
suivant :

15
Nous avons un graphe non orient´e avec cinq nœuds (A,B,C,D,E) et six arˆetes, chacune ayant
un poids associ´e. L’objectif est de trouver un arbre couvrant de poids minimum pour ce
graphe.

Arˆete Poids
AB 5
AE 3
BC 8
CD 2
DE 1
BD 6
Table 2.3 – Liste des arˆetes tri´ees par poids

B C
8

5 6 2
A D
1
3
E

Figure 2.3 – Graphe de d´epart

B C
8

5 6 2
A D
1
3
E

Figure 2.4 – Arbre couvrant de poids minimum

2.2 Algorithmes de Transport

Dans cette section, nous pr´esenterons trois algorithmes importants pour les probl`emes de
transport : le Probl`eme du Voyageur de Commerce (TSP), le Cycle Eulerien et le Probl`eme du
Postier Chinois (CPP).

2.2.1 Probl`eme du Voyageur de Commerce ( TSP )


L’algorithme du Voyageur de Commerce (Traveling Salesman Problem) r´esout le probl`eme de
trouver le cycle hamiltonien de poids minimum dans un graphe complet.

16
Algorithm
4 TSP2 − approximation
Require: Le graphe G = (X,A) avec un couˆt c(xy) positif pour chaque arˆete xy
Ensure: Un cycle µ passant au moins une fois par chaque sommet avec un couˆt au plus ´egal `a deux
fois le couˆt d’un cycle optimal
1: Calculer un arbre recouvrant Tde couˆt minimum de G
2: Retourner le cycle correspondant au parcours en profondeur de T

Complexit´e :
— Calcul de l’arbre recouvrant de couˆt minimum : O(|A|log|X|) (par exemple avec l’algorithme de
Kruskal)
— Parcours en profondeur de l’arbre : O(|A|)
La complexit´e totale de l’algorithme est donc de O(|A|log|X|).

Exemple4 :
— Consid´erons un exemple de TSP avec les villes A, B, C et D, et les distances entre elles :

Villes Distances
A-B 10
A-C 60
A-D 20
B-C 25
B-D 30
C-D 35
— Le graphe suivant correspondant `a cet exemple :

A B
10

30
20 25
60

35
D C

Figure 2.5 – Graphe du TSP avec les distances entre les villes

— L’objectif est de trouver le chemin le plus court permettant au voyageur de commerce de


visiter chaque ville une fois et de revenir `a sa ville de d´epart. Dans cet exemple, le chemin
optimal estA → B → C → D → A , avec une distance totale de 90.

2.2.2 Cycle Eulerien


L’algorithme du cycle eul´erien commence par choisir un sommet de d´epart, puis it`ere `a
travers les arˆetes non visit´ees adjacentes `a ce sommet. A` chaque ´etape, le sommet actuel est

17
ajout´e au cycle eul´erien et l’arˆete correspondante est marqu´ee comme visit´ee. Le sommet
suivant est d´etermin´e en s´electionnant un sommet adjacent non visit´e, et le processus continue
jusqu’`a ce que tous les sommets aient ´et´e visit´es.
Algorithm 5 CycleEulerien
Require: G = (X,A) avec tous les sommets de degr´e pair
Ensure: Un cycle eul´erien µe de G procedure
CycleEulerien(G)
Choisir un sommet quelconque x de G
Rechercher un chemin maximal µ `a partir de x (qui ne peut pas ˆetre prolong´e sans passer
deux fois par une mˆeme arˆete) ▷ Montrer que µ est un cycle en utilisant la parit´e des degr´es
G′ ← G − aretesˆ (µ) for all composante connexe Ci de G′ telle que |C1|≥ 2 do
µi ← CycleEulerien(G′[Ci]) ▷ Remarquer que G[Ci] a uniquement des sommets de
degr´e pair
end for
Choisir un sommet xi appartenant `a µ et µi ▷ Montrer que xi existe
µe est obtenu en ”collant” µ et les cycles µi via les sommets xi ▷ Remarquer que µ et les
µi couvrent toutes les arˆetes de G
Retourne µe end
procedure

Complexit´e :
— La recherche d’un chemin maximal `a partir d’un sommet quelconque : O(|V | + |E|)
— Suppression des arˆetes du chemin µ : O(|µ|)
— Boucle sur les composantes connexes et appel r´ecursif : O(|V |/2 ∗ T)
La complexit´e globale de l’algorithme CycleEulerien est approximativement donn´ee par :

O(|V | + |E| + |µ| + |V |/2 ∗ T)

ou` |V | est le nombre de sommets, |E| est le nombre d’arˆetes, |µ| est la taille du chemin µ, et T
est la complexit´e de l’algorithme CycleEulerien.

Exemple5 : Consid´erons un graphe non orient´e avec les sommets A,B,C,D,E et F. Dans cet exemple,
Le cycle eul´erien est form´e par les arˆetes A − B − D − F − A, qui forment un chemin ferm´e qui
passe par chaque arˆete du graphe une seule fois. Ces arˆetes sont color´ees en rouge pour indiquer
le cycle eul´erien.

A B

F E

D C Cycle eul´erien (arˆetes rouges)

18
Algorithm
Figure 2.6 – Graphe avec un cycle eul´erien

2.2.3 Probl`eme du Postier Chinois ( CPP )


L’algorithme du postier chinois est utilis´e pour trouver le chemin le plus court permettant `a un
facteur de livrer le courrier `a toutes les rues d’un r´eseau routier. Il r´esout ce probl`eme en
transformant un graphe non eulerien en un graphe eulerien en ajoutant des arˆetes suppl
´ementaires. Ensuite, il effectue un parcours eulerien pour visiter chaque arˆete une seule fois.

19
Pour commencer, l’algorithme v´erifie si le graphe est d´ej`a eulerien. Si c’est le cas, il utilise le
cycle eulerien existant comme solution optimale. Sinon, il ajoute des arˆetes suppl´ementaires de
mani`ere `a minimiser la distance totale suppl´ementaire `a parcourir.
Une fois le graphe eulerien obtenu, l’algorithme effectue un parcours eulerien en suivant une
strat´egie pour ne visiter chaque arˆete qu’une seule fois. Il continue jusqu’`a ce que toutes les
arˆetes du graphe aient ´et´e couvertes. Le chemin obtenu repr´esente alors la solution optimale
pour le facteur, garantissant la livraison du courrier `a chaque rue du r´eseau avec la distance totale
minimale.
L’algorithme du postier chinois est largement utilis´e dans des domaines tels que la logistique, la
planification de tourn´ees, les r´eseaux de distribution et les probl`emes de conception de r´eseaux.
Il offre une approche efficace pour optimiser les itin´eraires de livraison, ce qui peut conduire `a des
´economies de temps, de carburant et de ressources.

Algorithm 6 PostierChinois
Require: Le graphe G = (X,A) avec un couˆt c(xy) r´eel positif associ´e `a chaque arˆete xy
Ensure: Un cycle µ passant au moins une fois par chaque arˆete du graphe tel que µ soit de couˆt
minimum
1: procedure PostierChinois(G)
2: if chaque sommet de G est de degr´e pair then
3: µ ← CycleEulerien(G) ▷ G est eulerien
4: retourner µ
5: end if
6: Impairs ←{x ∈ X |xestdedegreimpair´ }
7: G ← une clique ayant comme ensemble de sommets l’ensemble Impairs

8: for all x,y ∈ Impairs do


9: µ(x,y) est un plus court chemin de x `a y dans G
10: c′(x,y) ← longueur(µ(x,y))
11: end for
12: Calculer un couplage parfait M de G tel que M soit de couˆt minimum pour la fonction de couˆt c′

13: for all arˆete xy du couplage M do


14: Dupliquer, dans G, le chemin µ(x,y) ▷ Dupliquer chaque arˆete de µ(xy), rendant G un multi-
graphe
15: end for
16: µ ← CycleEulerien(G)
17: retourne µ
18: end procedure

Complexit´e :

20
— Si chaque sommet du graphe G est de degr´e pair, la complexit´e de l’algorithme est de O(|A|).
— Sinon, la complexit´e de l’algorithme est de O(|X|3 + |X|2 ·|A|).
Ici, |X| repr´esente le nombre de sommets du graphe et |A| repr´esente le nombre d’arˆetes du
graphe.

Exemple6 : Consid´erons un graphe non orient´e connexe qui repr´esente une ville avec les
sommets A,B,C,D,E,F et les arˆetes suivantes :

A B

E F

D C

Figure 2.7 – Graphe non orient´e connexe repr´esentant une ville

Nous souhaitons trouver un chemin qui passe par chaque arˆete une fois et qui revient au point
de d´epart, tout en minimisant le chemin total parcouru. C’est l`a que l’algorithme du Postier
Chinois entre en jeu.
Apr`es avoir appliqu´e l’algorithme du Postier Chinois, nous obtenons le chemin suivant en
colorant les arˆetes de la solution en rouge :

A B

E F

D C

Figure 2.8 – Graphe avec la solution du Probl`eme du Postier Chinois (arˆetes en rouge)

Dans le deuxi`eme graphe, nous avons appliqu´e l’algorithme du Postier Chinois pour trouver un
chemin qui passe par toutes les arˆetes une fois et qui revient au point de d´epart, tout en
minimisant le chemin total parcouru. Les arˆetes de la solution sont color´ees en rouge.

21
2.3 Conclusion

Ces probl`emes et algorithmes sont des ´el´ements cl´es de la th´eorie des graphes et ont une
large gamme d’applications pratiques. Ils permettent de r´esoudre des probl`emes de planification,
d’optimisation et de logistique dans divers domaines tels que les transports, les r´eseaux de
communication, la logistique urbaine, etc. La compr´ehension de ces concepts et la maˆıtrise de ces
algorithmes sont essentielles pour r´esoudre efficacement les probl`emes li´es aux graphes dans le
monde r´eel.

Bibliographie

[1] West, D.B. (2001). Introduction to Graph Theory (2nd ed.). Upper Saddle River, NJ : Prentice
Hall.
[2] Bondy, J. A. et Murty, U. S. R. (2008). Graph Theory (Graduate Texts in Mathematics, Vol. 244).
Springer.
[3] Chartrand, G. et Lesniak, L. (2005). Graphs & Digraphs (4th ed.). CRC Press.
[4] Diestel, R. (2012). Graph Theory (4th ed.). Springer.
[5] Solnon, C. Th´eorie des graphes et optimisation dans les graphes.
[6] Robert. (2004). Th´eorie des graphes, probl`emes, th´eor`emes, algorithmes. Vuibert.
[7] Kaufmann, M. Des points des fl`eches, la th´eorie des graphes. Dunod, Sciences-poche, ´epuis´e.
[8] Bojan Mohar, Carsten Thomassen Graphes on surfacesJohn Hopkins University Press, Baltimore,
2001.
[9] Reinhard Diestel, Graph Theory, Third Edition, Springer-Verlag 2005 [10] Alan Gibbons,
Algorithmic graphe theory, Cambridge University Press, 1985
[11] Olivier Cogis et Claudine Robert, Th´eorie des graphes, Ed. Vuibert, 2004.
.

22

Vous aimerez peut-être aussi