Vous êtes sur la page 1sur 61

Chapitre 1

Introduction

Le but de ce chapitre est de mettre en place les notions fondamentales sur les graphes afin de partir sur des bases saines.

1.1 Définitions fondamentales

Il existe plusieurs manières de caractériser un graphe, nous allons en parcourir quelques unes. Notons immédiatement qu’il existe deux grands types de graphes : les graphes orientés et les graphes non orientés. Nous allons commencer notre étude par les graphes orientés puis nous traiterons des différences avec le cas non orienté dans une section spécifique.

1.1 Définition (Graphe) Un graphe est caractérisé par 2 ensembles nommés et et respectivement nommés Sommets et Arcs, avec :

les sommets seront numérotés de à

les arcs seront numérotés de à

Par définition, est composé de couples .

On appelle respectivement et l’ origine et la destination de l’arc .

Si la notation ensembliste des graphes est la seule qui soit rigoureuse, ces der- niers valent surtout par leur représentation graphique. En effet, soit le graphe

2

Ce même graphe peut être associé aux deux représentations suivantes et même d’autres. Du coup, n’oubliez jamais la règle suivante :

Ne vous fiez pas à l’aspect visuel de deux graphes pour les comparer. Seule la comparaison des ensembles de sommets et d’arcs est fiable !

a 1 2 c b g d e f 4 3
a
1
2
c
b
g
d
e
f
4
3
1 3 b g d e a 4 2 c f
1
3
b
g
d
e
a
4
2
c
f

FIG. 1.1: Deux représentations « graphiques » du même graphe

A cela, nous allons ajouter quelques définitions supplémentaires :

1.2 Définition (Boucle) On appelle boucle un arc

Par exemple, dans le graphe de la figure (1.1), l’arc est une boucle.

1.3 Définition (Sommets adjacents) Les sommets et du graphe sont dits adjacents si et seulement si, l’arc ou l’arc appartiennent à .

Par exemple, dans le graphe de la figure (1.1), les sommets et sont adjacents (grâce à l’arc ), alors que les sommets et ne le sont pas.

1.4 Définition (Graphe simple) Un graphe est dit simple si et seulement si :

1. Pour tout couple

, il existe au plus un arc

2.

l’arc n’existe pas

3

De manière plus littéraire : un graphe simple est un graphe sans boucle ni arcs mul- tiples entre les même sommets.

Par exemple, le graphe de la figure (1.1) n’est pas un graphe simple car il contient à la fois la boucle et 2 arcs .

Remarque : Il existe une bijection entre l’ensemble des graphes simples et l’en- sembles des relations binaires sur , les propriétés sur les relations s’étendant donc aux graphes.

1.5 Définition (Graphe planaire) On qualifie de planaire tout graphe pouvant être dessiné sans que ses arcs ne se croisent.

Une fois de plus, il convient de ne pas oublier qu’il ne faut jamais se fier à la repré- sentation visuelle d’un graphe. Par exemple, le graphe de la figure suivante n’apparaît pas planaire sur sa représentation de gauche. Toutefois, si vous modifiez sa représen- tation graphique comme montré à droite il est évident qu’il est bel et bien planaire.

à droite il est évident qu’il est bel et bien planaire. F IG . 1.2: Exemple
à droite il est évident qu’il est bel et bien planaire. F IG . 1.2: Exemple

FIG. 1.2: Exemple de graphe planaire

1.2 Les graphes non orientés

1.6 Définition (Graphe non orienté) On appelle graphe non orienté tout graphe où les arcs et sont indiscer- nables.

4

Le vocabulaire change un peu : on appelle habituellement arête un arc dans le cas non orienté.

1.3 Cocycles, degrés

Soit un graphe orienté. On appelle cocycle d’un sommet l’ensemble des sommets qui lui sont adjacents ou l’ensemble des arcs qui lui sont incidents. On note :

Les cocycles sont des cocycles de sommets, alors que les cocycles sont des co- cycles d’arcs. Les deuxièmes se révèlent beaucoup plus utiles dans le cas général.

Si nous reprenons le graphe de la figure (1.1), nous avons, par exemple :

Dans le cas non orienté, l’on a et, réciproquement,

.

Notons qu’il existe un autre système de notation :

Les degrés sont des quantités attachées au sommet et qui expriment la cardinalité des cocycles. On notera :

demi degré extérieur/suprérieur de dans

demi degré intérieur/inférieur de dans

En gros, le demi degré extérieur compte le nombre d’arcs qui sortent d’un sommet alors que le demi degré intérieur compte le nombre d’arcs qui entrent en un sommet.

On appelle degré du sommet et l’on note

.

Dans le cas non orienté, l’on a :

Si l’on revient au cas orienté, on a un résultat intéressant. Soit , on a :

5

car chaque arc possède exactement une extrémitié initiale et une extrémité finale.

D’où :

avec nombre d’arcs du graphe.

Finalement :

1.4 Matrices associées aux graphes

Il y a deux matrices typiquement associées aux graphes : la matrice d’incidence arc-sommet et la matrice d’adjacence sommet-sommet.

1.4.1 Matrice d’incidence arc-sommet

La matrice d’incidence est de taille , les sommets sont associés aux lignes, les arcs aux colonnes. Notons la matrice d’incidence associée au graphe . Pour pouvoir l’écrire, nous devons numéroter les arcs du graphe. On obtient alors :

si le sommet est le sommet initial de l’arc si le sommet est le sommet terminal de l’arc partout ailleurs

Cette notation est très lourde car la matrice est très creuse. En effet sur une même colonne seuls deux éléments ne sont pas nuls : ceux qui correspondent au sommet ini- tial (1) et au sommet terminal (-1) de l’arc. Sur une même ligne, le nombre d’éléments égal à 1 nous donne le demi degré supérieur alors que le nombre d’éléments égal à -1 nous indique le demi degré inférieur du sommet.

Dans le cas non orienté, on ne place que des 1 et la somme d’une ligne indique le degré du sommet.

Cette matrice est inexpoitable du point de vue algorithmique mais elle est extrè- mement importante du point de vue théorique car elle permet de faire le lien, par exemple, entre la théorie des flots et la programmation linéaire.

6

1.4.2

Matrice d’adjacence sommet-sommet

C’est une matrice telle que pour tout arc appartenant au graphe, tous les autres éléments étant nuls. Lorsqu’un graphe est dense, c’est à dire lorsque est proche de , cette matrice constitue un moyen de stockage efficace au point de vue place mémoire mais elle s’avère délicate à utiliser algorithmiquement.

Dans le cas non orienté, la matrice d’adjacence est symétrique. En effet, pour la construire on considère chaque arête du graphe comme 2 arcs opposés, lesquels ser- vent de base à la construction de la matrice.

1.4.3 Expression des matrices

Nous allons expliciter les deux matrices sur le graphe suivant. Afin d’éviter toute ambiguité entre les sommets et les arcs ces derniers ont été «numérotés» par des lettres.

2 d a 1 c 4 b e 3
2
d
a
1
c
4
b
e
3

FIG. 1.3: Graphe d’exemple pour l’expression des matrices d’incidence et d’adjacence

e 3 F IG . 1.3: Graphe d’exemple pour l’expression des matrices d’incidence et d’adjacence Incidence

Incidence

7

e 3 F IG . 1.3: Graphe d’exemple pour l’expression des matrices d’incidence et d’adjacence Incidence

Adjacence

1.5

Chemins, Chaînes, Circuits, Cycles

Les notions de chemin et de circuit dans les graphes orientés ainsi que leurs homo- logues dans les graphes non orientés, respectivement chaîne et cycle, sont absolument fondamentales.

Après les définitions générales de ces notions, nous examinerons 2 cas particuliers des plus intéressants.

1.5.1 Définitions générales

1.7 Définition (Chemin) On appelle chemin depuis un sommet vers un sommet une suite d’arcs :

2 d a 1 c 4 b e 3
2
d
a
1
c
4
b
e
3

FIG. 1.4: Exemple de chemin (en trait gras) du sommet 1 au sommet 4

De manière plus littéraire, un chemin est une succession d’arcs qui permet de relier un sommet à un sommet en empruntant chaque arc dans le bon sens, c’est à dire de son origine vers sa destination.

La figure (1.4) illuste la notion de chemin depuis le sommmet 1 vers le sommet 4. Les arcs utilisés sont dessinés en gras. L’on voit immédiatement qu’ils sont toujours parcourus depuis leur origine vers leur destination. Ainsi la destination d’un arc est l’origine de son successeur dans le chemin.

8

1.8

Si l’on relache cette dernière contrainte, c’est à dire que l’on s’autorise à emprunter un arc à l’endroit ou à l’envers, on parle alors de chaîne.

Définition (Chaîne)

Une chaîne est un chemin sur lequel on a relaché la contrainte d’orientation.

La notion de chaîne est la seule à avoir une signification dans le cas des graphes non orientés.

La figure (1.5) illustre la notion de chaîne. Dans ce cas, on voit clairement que l’arc est parcouru à contre-courant.

2 d a 1 c 4 b e 3
2
d
a
1
c
4
b
e
3

FIG. 1.5: Exemple de chaine (en trait gras) du sommet 1 au sommet 4

1.9

1.10

1.11

Définition (Circuit, Cycle) Un circuit est un chemin dont l’origine et la destination sont confondues.

Dans le cas non orienté, on parle de cycle.

La figure suivante illustre ces deux notions. Notez l’inversion du sens de l’arc entre les deux dessins.

Définition (Chemin simple)

Un chemin qui ne passe qu’une seule fois par chacun des arcs qu’il emprunte est dit

simple

Définition (Chemin élémentaire)

Un chemin qui ne passe qu’une seule fois par chacun des sommets qu’il traverse est dit élémentaire

9

2 d a 1 c 4 b e 3 Cycle
2
d
a
1
c
4
b
e
3
Cycle
2 d a 1 c 4 b e 3 Circuit
2
d
a
1
c
4
b
e
3
Circuit

FIG. 1.6: Exemple de chemin (en trait gras) du sommet 1 au sommet 4

Corollaire immédiat : Un chemin élémentaire est nécessairement simple.

1.1 Théorème Tout chemin de vers contient un chemin élémentaire de vers .

La démonstration de cette propriété est laissée en exercice.

Dans la suite de ce cours, on ne s’intéressera désormais plus qu’aux chemins élé- mentaires. Aussi, à partir de maintenant, la notion de chemin devra être comprise comme chemin élémentaire.

1.5.2 Chemin Eulérien, chemin Hamiltonien

Ces deux types particuliers de chemin et de cycle, que l’on retrouve dans les cas orientés ou non orientés sont particulièrement intéressants car on les retrouve dans de nombreux problèmes appliqués.

1.12 Définition (Chemin Eulérien)

On qualifie d’Eulérien un chemin qui passe une et une seule fois par chaque arc du graphe qui lui sert de support.

En outre, si l’on impose que l’origine et la destination du chemin soit confondues, on parle de circuit Eulérien.

10

L’application industrielle la plus spectaculaire est connue sous le nom de problème du postier chinois et consiste à chercher le circuit Eulérien de longueur minimale sur un graphe aux arcs valués.

1.13 Définition (Chemin Hamiltonien)

On qualifie d’Hamiltonien un chemin qui passe une et une seule fois par chaque som- met du graphe qui lui sert de support.

En outre, si l’on impose que l’origine et la destination du chemin soit confondues, on parle de circuit Hamiltonien.

A présent, valuons chaque arc du graphe et recherchons le circuit Hamiltonien de longueur minimale sur le graphe. On obtient le problème ultra classique du Voyageur de Commerce.

1.6 Sous graphes, graphes partiels

1.6.1 Définitions générales

Soit un graphe. On va désormais définir les notions importantes de sous graphe et de graphe partiel. Afin d’illustrer notre propos, nous nous servirons du graphe suivant comme base :

4 d i h 1 a 2 c b e 5 6 f 3 g
4
d
i
h
1
a 2
c
b
e
5
6
f 3
g

FIG. 1.7: Graphe de base pour l’illustration des graphes partiels et sous graphes

1.14 Définition (Graphe partiel) Soit un sous ensemble des arcs de , est un graphe partiel de .

11

4 d i h 1 a 2 c b e 5 6 f 3 g
4
d
i
h
1
a 2
c
b
e
5
6
f 3
g

Sélection d’arcs (en gras)

4 d h 1 a 2 5 6 f 3 g
4
d
h
1
a 2
5
6
f 3
g

Graphe partiel obtenu

FIG. 1.8: Exemple d’extraction d’un graphe partiel

En résumé, on obtient un graphe partiel de en supprimant certains arcs. Par exemple, dans la figure (1.8), et à partir du graphe de la figure (1.7), si l’on ne retient que les arcs marqués en gras sur la partie de gauche, l’on obtient le graphe partiel de la partie de droite.

Les raisons de travailler sur des graphes partiels sont légion. Par exemple, l’on pourrait vouloir se limiter aux arcs présentant certaines caractéristiques importantes. Considérons un problème de recherche d’itinéraires où chaque axe routier est repré- senté par un arc. Si l’on ne désire emprunter que des autoroutes, on peut extraire le graphe partiel associé aux autoroutes.

1.15 Définition (Sous graphe) Soit un sous ensemble des sommets de . On appelle sous graphe de

tout graphe

.

De manière plus littéraire, on obtient un sous graphe en extrayant un sous en- semble des sommets de et en ne retenant que les arcs qui relient ces sommets, tel qu’illustré sur la figure (1.8).

12

4 d i h 1 a 2 c b e 5 6 f 3 g
4
d
i
h
1
a 2
c
b
e
5
6
f 3
g

Sélection de sommets (en gras)

1 a 2 b e 3 Sous graphe obtenu
1
a 2
b
e
3
Sous graphe obtenu

FIG. 1.9: Exemple d’extraction d’un sous graphe

1.6.2 Cliques, Stables, Coloration

Deux sous graphes particuliers ont une importance toute particulière dans le monde de la théorie des graphes : les cliques et les stables. Comme nous allons le voir immé- diatement, ces deux notions sont totalement opposées.

1.16 Définition (Clique) On appelle clique sur un graphe tout sous graphe complet.

1.17 Définition (Stable) Un stable sur un graphe est un sous graphe sans arc.

Remarque : Un sommet isolé est à la fois une clique et un stable.

1.18 Définition (Coloration) On appelle Coloration une partition en stables d’un graphe.

Ce dernier vocabulaire est lié au problème classique de coloration d’une carte. Soit une carte géographique représentant plusieurs pays. On souhaite colorier chaque pays de manière à ce qu’il n’ait pas la même couleur que chacun de ses voisins.

Ce problème peut être résolu en cherchant une partition en stables du graphe obtenu en associant chaque pays à un sommet et chaque arc à une frontière commune entre 2 pays. Il suffit alors d’associer une couleur à chaque stable obtenu.

Remarque : on essaye le plus souvent de déterminer le nombre minimal de cou- leurs nécessaires. Il a été démontré que l’on peut toujours colorier un graphe planaire avec, au plus, 3 couleurs.

13

Chapitre 2

Arbres et parcours

2.1 Notion d’arbre

2.1.1 Définitions fondamentales

La notion d’arbre est fondamentale en recherche opérationnelle. Après avoir donné une première définition, nous énumèrerons plusieurs propriétés équivalentes à cette définition. Notons immédiatement que la notion d’arbre est non orientée : elle s’ap- plique aussi bien au cas qu’au cas non orienté.

2.1 Définition

Un arbre est un graphe connexe et sans cycle (propriété 0).

Les propriétés suivantes (qui s’appliquent à un graphe comptant sommets) sont équivalentes à la définition précédente :

1. Un arbre est un graphe connexe qui compte exactement arcs

2. Un arbre est un graphe sans cycle qui compte exactement arcs. On parle de graphe acyclique minimal

3. Un arbre est un graphe sans cycle tel que si l’on rajoute un arc quelconque, on crée un cycle

4. Un arbre est un graphe connexe tel que la suppression d’un arc quelconque en- gendre la séparation en 2 composantes connexes. On parle de graphe connexe maximal

5. Dans un arbre, tout couple de sommets est relié par une et une seule chaîne.

14

2.1.2

Démonstration de l’équivalence des définitions sur les arbres

La démonstration de l’équivalence de ces propositions nécessite un théorème in- termédiaire.

2.1 Théorème Soit un graphe quelconque, alors :

– Si est sans cycle, alors

– Si est connexe, alors

La démonstration de ce théorème se fait de manière constructive.

En effet, considérons un graphe , dont l’on retire tous les arcs. On ajoute alors les arcs 1 par 1.

A un instant donné, la situation peut être telle que représentée par la figure (2.1).

peut être telle que représentée par la figure (2.1). F IG . 2.1: Construction d’un arbre

FIG. 2.1: Construction d’un arbre : situation de base

Lorsque l’on rajoute un arc, 2 cas peuvent se présenter :

1. L’arc réunit 2 sommets de la même composante connexe (2.2.a).

– Le nombre de composantes connexes du graphe ne change pas

– On crée un cycle dans la composante connexe

2. L’arc réunit 2 sommets appartenant à des composantes connexes différentes (2.2.b).

– Le nombre de composantes connexes diminue de 1

– On ne rajoute pas de cycle dans le graphe

15

(a) (b) F IG . 2.2: Construction d’un arbre : opérations élémentaires Appliquons ce principe

(a)

(a) (b) F IG . 2.2: Construction d’un arbre : opérations élémentaires Appliquons ce principe de

(b)

FIG. 2.2: Construction d’un arbre : opérations élémentaires

Appliquons ce principe de construction à la démonstration du théorème précé- dent.

Si l’on désire que le graphe soit sans cycle, il nous faut procéder par la deuxième méthode d’ajout d’arc. Initialement, comme il n’y a pas d’arcs, il y a compo- santes connexes. A chaque ajout d’arc, le nombre de composantes connexes di- minue de 1 unité. Après avoir ajouté arcs par cette méthode, il ne reste qu’une seule composante connexe, le graphe est donc connexe. Si maintenant, l’on construit un graphe par l’un ou l’autre principe de construction, il faut ajou- ter au moins (n-1) arcs avant d’obtenir une seule composante et donc un graphe connexe. D’où la seconde partie du théorème. En vertu du premier principe de construction, tout ajout d’arc rajoutera un cycle, ce qui démontre la première partie du théorème.

16

Une fois le théorème démontré, les implications suivantes sont évidentes :

Pour démontrer l’équivalence des propriétés sur les arbres, nous allons créer la boucle d’implications suivante (les implications non encore démontrées sont en gras) :

Démonstration

Supposons que soit un arbre non connexe. Il possède donc au moins 2 compo- sants connexes. En appliquant la règle de construction numéro 2, il est possible d’ajouter un arc sans créer de cycle, ce qui entraîne une contradiction.

Moralité : un arbre est un graphe connexe et sans cycle qui possède exactement arcs.

Démonstration

Supposons qu’il existe deux chaînes distinctes permettant de joindre un couple de sommets . Alors, il existe au moins un arc appartenant à la pre- mière chaîne mais pas à la seconde. Supprimons cet arc, il existe encore une chaîne permettant de joindre à . Le graphe est toujours connexe après sup- pression d’un arc ce qui contredit la proposition .

Démonstration

Supposons qu’il existe un cycle, alors, il est possible d’obtenir 2 chaînes reliant chaque sommet du cycle à un autre.

En outre, l’existence d’une chaîne permettant de relier chaque couple du graphe est la définition même de la propriété de connexité.

17

Ainsi se termine la démonstration d’équivalence des propriétés d’un arbre !

2.1 Corollaire

Ajouter un arc à un arbre créée un et un seul cycle

2.2 Corollaire

Tout graphe connexe contient un graphe partiel qui est un arbre.

Ce second corollaire est évident à démontrer par construction. Supprimons toutes les arêtes du graphe avant de les réintroduire sans créer de cycle : nous venons bien de créer un graphe partiel qui est un arbre !

2.1.3 Démonstrations complémentaires

2.2 Définition (Racine) Soit un graphe orienté . Le sommet est dit racine de si et seulement si, il existe un chemin de vers .

2.3 Définition (Arborescence) Un arbre orienté admettant une racine est une arborescence

C’est un abus de langage commun que d’appeler arbre une arborescence. La figure suivante illuste 2 arbres, l’un est une arborescence, l’autre non.

illuste 2 arbres, l’un est une arborescence, l’autre non. Arborescence Arbre F IG . 2.3: Arborescence

Arborescence

illuste 2 arbres, l’un est une arborescence, l’autre non. Arborescence Arbre F IG . 2.3: Arborescence

Arbre

FIG. 2.3: Arborescence ou pas?

18

Chapitre 3

Plus courts chemins

3.1

Notations

Ce chapitre suppose que l’on travaille sur un graphe orienté , avec et . Chaque arc est muni d’un coût .

Dans la suite on notera sommet (la destination).

un chemin depuis un sommet (la source) vers un

3.1 Définition (Longueur d’un chemin) On appelle longueur d’un chemin et on note la quantité

(3.1)

Un chemin d’un sommet vers lui même sera toujours de longueur nulle.

3.2 Définition (Plus court chemin) Un plus court chemin de vers est un chemin de vers dont la longueur est mini-

male parmi tous les chemins de vers . Dans la suite on notera

un tel chemin.

3.3 Définition (Fonction de marquage, potentiel) On appelle fonction de marquage ou potentiel une application de dans .

En clair, cela revient à valuer, ou porter une valeur, sur chacun des sommets du graphe.

3.4 Définition (Plus courtes distances) On appelle plus courte distance de à et l’on note la fonction de marquage égale à la longueur du plus court chemin de vers . Par abus de notation, et une fois la source fixée, on écrira pour .

19

3.1

Remarque (Représentation d’un chemin)

Il existe deux grandes manières de représenter un chemin. La première consiste à donner la suite des arcs qui le composent. Ainsi, un chemin peut s’écrire :

Plus simplement, et comme nous ne travaillons que sur des graphes simples, on peut noter un chemin par la succession des sommets rencontrés. Ainsi, le chemin précédent peut désormais s’écrire :

3.1 Théorème (Condition d’optimalité des distances) Soit la plus courte distance depuis la source vers un sommet quelconque du graphe. Alors :

En effet supposons qu’il existe deux sommets et tels que . Ceci implique notament que l’arc n’est pas utilisé dans le chemin associé à . Soit le plus court chemin vers . Par définition sa longueur est . Si on lui ajoute l’arc , on obtient un chemin de longueur . D’où la contradiction car est sensée être la plus courte distance pour aller en .

3.2 Le problème

Rechercher un plus court chemin de vers revient à rechercher un chemin de vers de longueur minimale s’il existe. Les conditions d’existence sont les suivantes :

1. Il existe au moins un chemin de vers

2. Aucun chemin de vers ne contient de circuit absorbant i.e. de circuit de lon- gueur négative.

En effet, si un tel circuit existait, l’on pourrait le parcourir indéfiniment pour abaisser la longueur du chemin.

Dans la suite de cet exposé nous supposons :

1. Il existe un chemin depuis un sommet vers tous les autres sommets du graphe.

2. Il n’existe pas de circuit absorbant dans le graphe.

20

3.1

Propriété (Propriété de sous optimalité)

Soit

un plus court chemin de vers . Alors,

, le sous chemin est un plus court chemin de vers

.

En effet, soit un plus court chemin de vers passant par le sommet . Appelons le sous chemin de à et le sous chemin de à . On a . Supposons que ne soit pas optimal. Alors il existe un chemin entre et tel que . Dans ce cas est un chemin de vers de longueur inférieure à celle de ce qui contredit l’hypothèse.

P1 s k P3 t P2 FIG. 3.1: Démonstration de la propriété de sous optimalité
P1
s
k
P3
t
P2
FIG. 3.1: Démonstration de la propriété de sous optimalité

Soit un plus court chemin de la source vers un sommet quelconque .

– Par définition de la plus courte distance (3.4), .

– Par application de la propriété précédente,

mets , où

est la restruction de entre et .

pour chacun des som-

Conséquence : Pour chaque arc , on a .

La réciproque de cette propriété fondamentale fait l’objet du théorème suivant :

3.2 Théorème Soit un chemin

tel que pour chaque arc

Alors est un plus court chemin de vers .

l’on ait

.

Dans cette démonstration, on utilise la notation . On part de , plus courte distance de à que l’on décompose de manière à faire apparaître le coût des arcs composant et le tour est joué.

 

.

.

.

.

21

avec (hypothèse 2).

Or, par hypothèse, pour tout arc , ou, pour ce qui nous concerne ici : Ce qui nous donne :

La plus courte distance au sommet étant égale à la longueur du chemin , celui-ci est un plus court chemin de vers .

3.2

Propriété Soit , où est l’ensemble des arcs tels que . Alors, contient une arborescence enracinée en .

Démonstration : Pour chaque sommet , il existe un plus court chemin de à dans . Réciproquement, il suffit de construire une arborescence dans pour obtenir un plus court chemin depuis vers tout autre sommet à l’aide d’un algorithme de parcours.

3.3

Les algorithmes de plus court chemin

Selon les caractéristiques du graphe que l’on étudie, il existe 3 grandes familles de recherche de plus courts chemins depuis un sommet vers tous les autres sommets du graphe.

3.3.1

Graphe acyclique

3.2

Remarque (Précision importante concernant le vocabulaire) Dans le cas des graphes non orientés, le terme acyclique décrit un graphe sans cycle, alors que si l’on traite des graphes orientés, on appelle acyclique tout graphe sans circuit.

Lorsqu’un graphe ne comporte pas de circuit, les arcs traduisent une relation d’ordre partiel sur le graphe. Ce qui veut dire que l’on peut numéroter les sommets de de telle manière que . Une telle numérotation s’appelle un tri topologique sur . Le calcul d’un tri topologique (ou ordre topologique) sur un réseau se fait par un algorithme de complexité maximale en .

Dès lors qu’il existe un circuit sur le graphe, il devient impossible de créer un tel ordre car tout sommet membre d’un circuit est l’un de ses propres prédécesseurs.

22

L’algorithme suivant permet de déterminer un ordre topologique sur un graphe.

Algorithme de tri topologique Liste suivant Tant Que (Liste ) Retirer un sommet de la
Algorithme de tri topologique
Liste
suivant
Tant Que (Liste )
Retirer un sommet de la liste
suivant suivant
ordre suivant
Si ( )
Alors
Liste Liste
Fin Si
Fin
Fin Tant Que
Si (suivant ) Alors
Le réseau contient au moins un circuit
Sinon
Le tableau ordre indique l’ordre topologique
Fin Si

Le principe de cet algorithme est simple et repose sur l’élimination progressive des arcs sortant de chaque sommet. Nous utilions les variables indiquant à chaque instant, combien d’arcs non encore biffés du réseau entrent dans le sommet . Initiale- ment, , et la liste contient l’ensemble des sommets qui n’ont pas de prédécesseurs et qui sont donc directement numérotables. A chaque fois que l’on examine un sommet, on coupe les arcs qui en sortent et on place dans la liste les som- mets qui n’ont plus d’arc entrant. Ainsi, on est sûr d’examiner tous les prédécesseurs d’un sommet avant de le numéroter.

Une fois cet ordre topologique connu, le calcul des plus courts chemins est très simple. En effet, supposons que l’on cherche à calculer et que l’on connaisse les plus courtes distances pour tous les sommets de rang topologique inférieur à celui de .

De par la définition de l’ordre topologique, tous les arcs arrivant en proviennent de sommets de rang inférieur, c’est-à-dire de sommets pour lesquels on connaît déjà les plus courtes distances (de par l’hypothèse). Alors, pour connaître (et, par la

23

même occasion, un plus court chemin joignant à ), il suffit de considérer :

pred

est le sommet prédécesseur de de distance minimale par rapport à .

On obtient alors l’algorithme suivant initialisé en , seul sommet sans prédéces- seur par définition.

Algorithme de Bellmann Renuméroter les sommets dans l’ordre topologique Pour variant de 1 à
Algorithme de Bellmann
Renuméroter les sommets dans l’ordre topologique
Pour variant de 1 à
pred
Fin Pour

3.3.2 Arcs à coûts positifs, algorithme de Dijkstra

Lorsque le réseau contient des circuits, il n’est plus possible d’utiliser l’algorithme précédent qui s’appuie sur un tri topologique. Toutefois, il est toujours possible de tirer profit de la non négativité des coûts sur les arcs.

Pour ce faire on partitionne l’ensemble des sommets en deux ensembles et . Les sommets de sont dits fixés et ceux de temporaires. On utilise une fonction de marquage que nous appellerons distance et qui à la fin de l’algorithme sera égale à la distance minimale depuis vers chaque sommet.

A chaque étape, la définition de est la suivante :

est la longueur d’un plus court chemin de vers dont tous les sommets intermédiaires sont dans . Initialement, et ,

.

L’algorithme repose sur le postulat suivant :

Les distances aux sommets fixés (c’est-à-dire les sommets de ) sont mi- nimales.

24

A chaque itération, le sommet temporaire de plus petite distance est transféré directement dans et l’on met à jour les distances de tous ses successeurs.

La complexité temporelle de l’algorithme de Dijkstra sous cette forme simple est . En effet, à chaque étape, on transfère un nœud de vers , ce qui nous fait itérations. A l’intérieur de chaque itération, on recherche le sommet de qui possède la plus petite distance temporaire, opération en dans le pire des cas. Toutefois, des structures de données performantes (telles que les Tas de Fibonnacci) permettent de rabaisser significativement cette complexité ( ).

Algorithme de Dijkstra (forme simple) pred Tant que ( ) Si ( ) Alors
Algorithme de Dijkstra (forme simple)
pred
Tant que (
)
Si
(
)
Alors
pred
Fin Si
Fin
Fin Tant que

Démonstration de l’algorithme :

Elle se fait par récurrence sur la taille de .

3.3.3 Le cas général, algorithme de Ford

Dans le cas général, la seule solution consiste à regarder itérativement les arcs en modifiant les distances jusqu’à ce que la condition du théorème (3.1) soit vérifiée pour chacun d’entre eux.

25

L’algorithme général de Ford (dit Label-correcting) est le suivant :

Algorithme de Ford (forme simple)

Tant que

avec

pred Fin tant que

Cet algorithme est très intéressant car il converge quelle que soit la méthode de sélection de l’arc violant les conditions d’optimalité. Notons que cet algorithme permet de détecter la présence d’un circuit négatif lorsqu’une distance devient inférieure à

avec

.

La preuve de cet algorithme est immédiate. En effet, à l’issue de l’algorithme, il suffit de remonter la chaîne des prédécesseurs stockée dans le tableau pred pour obtenir des chemins de vers tous les autres sommets du graphe uniquement consti- tués d’arcs vérifiant la condition (3.1). Le théorème (3.2) nous garantissant que de tels chemins sont bien des plus courts chemins de vers les autres sommets.

Sous cette forme directe, l’algorithme de Ford est informatiquement inexploitable. C’est pourquoi l’on a recours à l’algorithme modifié qui repose sur l’utilisation d’une liste de sommets. Cette dernière contient les sommets dont les distances ont été mo- difiées et qui sont donc susceptibles de créer des arcs violant la condition (3.1).

Algorithme de Ford modifié

LISTE Tant que LISTE Retirer un sommet de la liste

Si

(

)

Alors

 
 

pred

Si

LISTE LISTE Fin si

LISTE

Fin si Fin Fin tant que

26

La même remarque s’impose : la convergence est assurée quelle que soit la poli- tique de gestion de la liste. Les performances de cet algorithme sont très intéressantes dans deux cas particuliers :

Gestion File : C’est la forme la plus répandue car elle permet, moyennant des as- tuces algorithmiques non négligeables que nous ne détaillerons pas ici, de dé- tecter les circuits de coût négatif. Les sommets sont retirés dans l’ordre où ils sont introduits dans la liste. En pratique, on insère les sommets en fin de liste pour les retirer en tête de liste. Sa complexité est .

Gestion Dequeue : C’est l’algorithme (en pratique !) le plus performant pour ré- soudre les problèmes de plus court chemin dans le cas général. Si l’on retire toujours les sommets en tête de liste, ils sont insérés en fin de liste lors de leur première insertion et en tête de liste s’ils doivent être examinés une nouvelle fois.

Il existe une autre variante qui utilise deux listes couplées l’une à l’autre. Très performantes, ces deux implémentations peuvent néammoins avoir un compor- tement non polynômial sur des réseaux pathologiques.

27

Chapitre 4

Le problème de l’ordonnancement

4.1 Introduction

Soit un projet complexe composé d’un ensemble de tâches que l’on souhaite fixer dans le temps de manière à ce que le projet se termine au plus vite.

4.2 Le problème

On suppose le projet composé de tâches numérotées de à chacune dotée d’une durée supposée connue (la terminologie Anglo-Saxonne est processing time, laquelle est souvent notée ).

Le problème de l’ordonnancement consiste à affecter à chaque tâche une date de début . On suppose que le projet commence à .

Divers types de contraintes peuvent se greffer sur le noyau dur du problème :

Les contraintes temporelles

portent sur les dates de début et de fin des tâches

Les contraintes d’allocation de ressources

spécifient qu’une ressource critique

(e.g., la grue dans un chantier de BTP) ne peut être utilisée par plus d’un certain

nombre de tâches à la fois

L’objectif est de minimiser la durée totale du projet (makespan en Anglais), c’est-à- dire, calculer la date de fin au plus tôt du projet.

4.1 Définition (Date de fin au plus tôt) On appelle date de fin au plus tôt et l’on note la durée minimale d’exécution du projet permettant de respecter les contraintes.

28

4.2.1

Les contraintes temporelles (ou contraintes de potentiel)

Elles sont essentiellement de 3 types :

1. La tâche ne peut commencer avant la date dite date de disponibilité :

2. La tâche ne peut terminer après la date

dite date d’échéance :

3. Contraintes de précédence, la tâche ne peut commencer avant la fin de la tâche :

On peut généraliser ces dernières contraintes à une contrainte plus générale de potentiel entre les tâches et en introduisant la quantité et telle que :

Notons que les notations et termes Anglais sont les suivants :

release time deadline

4.2.2 Les contraintes cumulatives

Elles permettent de traiter certaines contraintes d’allocation de ressources. Soit une ressource dont la quantité totale disponible pour le projet à l’instant est

.

On note

la quantité de nécessaire à l’accomplissement de la tâche à

l’instant sachant que la .

La contrainte cumulative relative à la ressource et à l’instant s’écrit :

Ce genre de contraintes est pénible à traiter car il nécessite de connaître la date

de début de chacune des tâches

ce qui est le but final du problème.

constants au cours du temps ne simplifie pas énormément le pro-

blème car il est toujours nécessaire de connaître les dates de départ pour traiter la contrainte.

Choisir et

29

4.2.3

Contraintes disjonctives

Ces contraintes permettent de spécifier que 2 tâches ne peuvent pas avoir lieu en même temps (par exemple, les entrepreneurs qui en sont chargés ne s’entendent pas).

La première méthode pour modéliser cette contrainte consiste à utiliser un ou logique sur les deux contraintes de potentiel suivantes :

Aussi élégante soit elle, cette méthode n’est guère recevable car elle entraîne des difficultés algorithmiques non négligeables. En particulier, le nombre de cas à traiter séparément explose lorsque l’on augment le nombre de disjonctions.

L’autre méthode consiste à introduire une contrainte d’allocation de ressource entre ces deux tâches.

De toute manière, le traitement de ces contraintes est malaisé dans le cas général.

Dans la suite de cet exposé, nous ne considérerons que des contraintes de potentiel simples.

4.3 Un exemple simple : le chantier

Soit un chantier constitué des tâches suivantes :

Description Durée 1 Terrassement 10 jours 2 Installation de la grue 2 jours 3 Coulage
Description
Durée
1 Terrassement
10 jours
2 Installation de la grue
2 jours
3 Coulage des Fondations
5 jours
4 Branchement électrique
3 jours
5 Gros œuvre de maçonnerie
6 jours

Les contraintes de précédence sont les suivantes :

– 1, 2, et 4 précèdent 3

– 2 précède 5

4.2 Définition (Date au plus tôt) On appelle Date au plus tôt et on note la date minimum à laquelle on peut démarrer la tâche . Il est clair que et que .

On pose .

30

4.3

Définition (Date au plus tard) On appelle Date au plus tard et on note la date maximale à laquelle on peut dé- marrer la tâche sans retarder l’exécution du projet ou violer une contrainte. Il est clair que avec .

4.4 Définition (Marge) La marge d’une tâche (notée ) est la différence entre les dates au plus tard et au plus tôt, soit :

4.5 Définition (Ordonnancement au plus tôt (tard)) On appelle Ordonnancement au plus tôt (tard) l’ordonnancement du projet correspon- dant aux dates au plus tôt (tard).

4.4 Représentation du problème d’ordonnancement

Il existe trois grands modèles pour représenter les ordonnancements.

4.4.1 Diagramme de Gantt

C’est le modèle le plus ancien où l’on représente une tâche par un rectangle dont la longueur représente la durée. L’axe horizontal représente le temps. Ce graphe n’est d’aucune utilité pour optimiser le projet car il ne permet pas de faire apparaître les contraintes. En revanche, il est intéressant pour suivre le projet une fois l’optimi- sation réalisée. Il est à noter que, bien que ce diagramme soit en 2 dimensions, la dimension verticale ne sert qu’à séparer les tâches car elle n’est associée à aucune grandeur du problème.

4.4.2 Le modèle PERT (Program Evaluation and Review Tech- nique)

C’est un graphe où les tâches et les contraintes de précédence sont représentées par des arcs. Les sommets correspondent à des instants privilégiés du déroulement du processus : les dates de début et de fin de chaque tâche.

Les arcs représentant les tâches ont pour coût alors que les arcs de précédence ont un coût nul. On rajoute deux sommets fictifs représentant respectivement les dates de début et de fin du projet.

31

F IG . 4.1: Diagramme de Gantt associé au problème du chantier Le «réseau» PERT

FIG. 4.1: Diagramme de Gantt associé au problème du chantier

Le «réseau» PERT est très proche du diagramme de Gantt mais permet de modéli- ser les contraintes. Il a été mis au point aux Etats-Unis pour résoudre les problèmes liés à la construction de sous-marins nucléaires.

Tâche 1

Tâche 3 Début Fin Tâche 2 Tâche 5 Tâche 4 Transitions
Tâche 3
Début
Fin
Tâche 2
Tâche 5
Tâche 4
Transitions

FIG. 4.2: Réseau PERT associé au problème du chantier

4.4.3 Le modèle Potentiel-tâches

Ici les tâches sont représentées par des sommets et les arcs trahissent les contraintes de précédence. Ainsi la contrainte précède est elle symbolisée par un arc entre les sommets et et de longueur .

Le graphe Potentiel-tâches est sans doute plus lourd que le réseau PERT mais il permet de modéliser plus de contraintes et de prendre en compte des cas « tordus »

32

1 10 0 3 3 5 0 D 4 F 0 2 5 6 2
1
10
0
3 3
5
0
D
4
F
0
2
5
6
2
2
FIG. 4.3: Réseau Potentiel-Tâches associé au problème du chantier

4.5

Résolution

Que ce soit en utilisant le modèle PERT ou le modèle Potentiel-Tâches, la solution du problème d’ordonnancement est donnée par la résolution d’un problème de plus long chemin (donné par l’algorithme de Bellmann) entre le début et la fin du projet.

En effet, si l’on recherche le plus long chemin, celui-ci va utiliser le plus grand nombre de tâches possibles en suivant les arcs les plus longs.

Le graphe ne contient pas de circuit car les contraintes de précédence fournissent un ordre partiel sur les tâches. On utilisera donc une forme adaptée de l’algorithme de Bellmann pour calculer les plus longs chemins.

4.6

Définition (Chemin critique) On appelle chemin critique tout plus long chemin entre le début et la fin du projet.

4.1

Théorème (Résultats sur le graphe Potentiel-tâches)

Soit un graphe potentiel-tâches modélisant l’ordonnancement des tâches d’un projet complexe.

Soit :

a) la longueur du plus long chemin entre le début et la fin du projet.

b) la longueur du plus long chemin entre le début du projet et la tâche .

c) la longueur du plus long chemin entre la tâche et la fin du projet

Alors :

1. La durée minimale du projet est

33

2.

3.

Conséquence

Voici le modus operandi pour calculer les différentes grandeurs associées à un projet d’ordonnancement :

– On calcule et l’ordonnancement au plus tôt en résolvant un problème de plus long chemin sur le graphe potentiel-tâches à partir du sommet correspondant au début du projet.

– On calcule l’ordonnancement au plus tard en résolvant un problème de plus long chemin sur le graphe potentiel-tâches dont l’on a préalablement inversé les arcs et à partir du sommet correspondant à la fin du projet.

34

Chapitre 5

Introduction aux problèmes de flot

5.1 Notion de réseau

On appelle réseau un graphe sur lequel on va faire transiter un flot.

Soit un graphe orienté avec et . Chaque arc est doté de deux grandeurs positives ou nulles, et , respectivement dénommées capacité minimale et capacité maximale et telles que :

Chaque nœud est doté d’une contribution au flot . On appelle source tout som- met créant du flot, c’est à dire, tel que et puits tout sommet où le flot est « consommé ».

Un flot sur le réseau est un vecteur , indicé sur les arcs, tel que :

 

(5.1)

(5.2)

1. La condition (5.1) spécifie que le flot est borné inférieurement et supérieurement par les capacités des arcs.

2. L’équation (5.2), qui n’est pas sans rappeler la première loi de Kirchoff (ou loi des nœuds) en électricité, traduit la conservation du flot en chaque sommet du réseau. En effet, de façon plus littéraire, on peut la traduire par la phrase sui- vante :

La quantité de flot sortant d’un sommet moins la quantité de flot entrant dans le même sommet est égale à la contribution de ce sommet.

35

Bien entendu, pour que le problème ait une solution, la somme des contributions doit être égale à 0, soit :

Exprimé ainsi, on voit immédiatement que les problèmes de flot permettent de mo- déliser directement les problèmes réels d’écoulement d’un liquide dans un ensemble de canalisations (le flot est alors le débit de liquide dans chaque tuyau) ou de circula- tion du courant électrique dans un réseau, le flot étant ici égal à l’intensité de courant passant dans un fil.

La figure suivante illustre un réseau et un flot réalisable sur celui-ci. Les triplets figurant au dessus des arcs sont de la forme .

(0,2,1) (1,2,2) (0,2,2) (1,4,3) (2,2,2) (0,1,1) +4 -4 (2,3,2) (2,3,2) (0,4,3)
(0,2,1)
(1,2,2)
(0,2,2)
(1,4,3)
(2,2,2)
(0,1,1)
+4
-4
(2,3,2)
(2,3,2)
(0,4,3)

FIG. 5.1: Exemple de réseau portant un flot

5.2 Les simplifications du problème

Plusieurs aménagements d’un réseau de flot quelconque permettent de simplifier le traitement algorithmique du problème. Nous allons en considérer quelques unes. De plus amples informations sont disponibles dans [2], [4], [3] ou [1].

36

5.2.1

Travailler avec une seule source et un seul puits

Il est possible de ne travailler qu’avec une seule source et un seul puits. Ainsi, il est inutile de garder en mémoire la liste des contributions des sommets en dehors de celles de la source et du puits.

On crée un sommet noté et appelé super source ou tout simplement source. En- suite, pour chaque sommet tel que , on ajoute un arc de capacité maxi-

male et le tour est joué. Finalement, on pose

.

Réciproquement, on crée un sommet (le puits) et une collection d’arcs pour

chaque sommet de contribution négative et l’on pose

.

La figure suivante montre comment appliquer ce principe sur un exemple simple.

(2) (2) (2) (2) +3 -1 (1) (3) (1) (1) (2) (2) +5 -5 (2)
(2)
(2)
(2)
(2)
+3
-1
(1)
(3)
(1)
(1)
(2)
(2)
+5
-5
(2)
(2)
(2)
+2
-4
(4)
(2)
(3)
(2)
(3)

FIG. 5.2: Exemple de suppression de sources et puits multiples

5.2.2 Eliminer les arcs avec des capacités minimales non nulles

L’utilisation de capacités minimales entraîne des lourdeurs algorithmiques non négligeables. Aussi, il peut être judicieux de les éliminer avant le traitement du pro- blème. Insistons néanmoins sur le fait que le procédé que nous allons expliciter peut conduire à un graphe si grand qu’il n’en justifie plus l’intérêt. Aussi, on pourra se reporter à [1] pour les techniques permettant de traiter directement les réseaux à capacités minimales non nulles.

On peut considérer un arc de capacité inférieure comme un arc de capacité supérieure reliant un puits de contribution à une source de contribution .

37

En effet, on remplace la contrainte de passage d’un minimum de flot sur cet arc par la disparition de la même quantité de flot en entrée et sa restitution en bout d’arc.

La deuxième partie de l’opération consiste à éliminer le nouveau puits et la nou- velle source ainsi crées par l’opération précédente. Cette technique est illustrée sur la figure suivante :

(3) (2) +2 (1, 2) -2 (2) (4)
(3)
(2)
+2
(1, 2)
-2
(2)
(4)

Etape 1 :

Ajout d’une source et d’un puits

-1 (3) (2) +2 (1) -2 (2) (4) +1
-1
(3)
(2)
+2
(1)
-2
(2)
(4)
+1

Etape 2 : suppression de la source et du puits excédentaires

(1)

(3) (2) (2) (2) +3 (1) -3 (2) (4) (1)
(3)
(2)
(2)
(2)
+3
(1)
-3
(2)
(4)
(1)

FIG. 5.3: Exemple de suppression des arcs de capacité inférieure non nulle

5.2.3 Cas des capacités sur les sommets

Dans certains modèles de situations réelles, il est possible d’avoir des capacités sur les sommets. Par exemple, dans un nœud de répartition EDF, les équipements de rec- tification de la tension ne peuvent absorber plus d’une certaine quantité d’électricité. Ceci peut se modéliser par la contrainte suivante :

est la capacité maximale du sommet .

Afin de ne pas rajouter cette contrainte dans le système, on la remplace par une contrainte de capacité sur un arc en dédoublant le sommet en et et en ajoutant l’arc de capacité .

38

5.3

Quelques problèmes de flot classiques

5.3.1 Le problème de flot maximal

De tous les problèmes de flot dans les réseaux, le problème du flot maximal (ou flot max pour les intimes) est assurément le plus simple.

Il consiste à tenter de faire circuler sur le réseau la plus grande quantité de flot possible. Pour ceci, on fixe arbitrairement la contribution de la source à . Une alternative consiste à supprimer les contributions des sommets et et à rajouter un arc de capacité infinie et appelé arc de retour.

On appelle valeur du flot et l’on note habituellement la somme du flot sortant de la source (ou entrant au puits). Soit donc :

5.3.2 Le problème du flot de coût minimum

Ici, chaque arc est muni d’un coût dit coût unitaire par unité de flot et le pro- blème consiste à trouver un flot sur le réseau tel que le coût du flot :

soit minimal.

Le plus souvent, nous serons à la recherche d’un flot maximal à coût minimal. Les algorithmes les plus performants travaillent alors en deux temps. D’une part, la recherche du flot maximal permet de fixer sa valeur. Il est alors possible, soit de rechercher ex nihilo un nouveau flot de coût minimal, soit de modifier le flot obtenu précédemment afin de le rendre minimal.

Ce problème est d’une importance cruciale en recherche opérationnelle. En effet, comme nous le verrons plus tard, il sert à modéliser de nombreux cas concrets. Long- temps considéré comme un problème difficile, la démonstration de sa polynomialité par Edmonds et Karp ouvrit en son temps de nouveaux horizons en recherche opéra- tionnelle.

39

5.4

Quelques techniques utilisées sur les réseaux

5.4.1 Le graphe d’écart

Lorsque l’on travaille sur les flots, il est souvent intéressant d’utiliser un graphe spécial, dérivé du graphe initial, nommé graphe d’écart et noté .

Soit un arc de de capacités minimale et maximale respectives et et portant le flot . Il est alors possible soit :

– d’ajouter encore jusqu’à unités de flot depuis vers .

– de retirer jusqu’à unités de flot depuis vers , ce qui peut ête vu comme l’ajout d’autant d’unités de flot depuis vers .

Le graphe d’écart va donc proposer deux arcs mettant en avant ces deux possibilités :

de

capacité résiduelle

de capacité résiduelle

arc direct de arc opposé de

En outre, seuls les arcs de capacité résiduelle non nulle sont présents dans le graphe d’écart.

Notez le cas intéressant où . Nécessairement, tout flot compatible est tel que . Alors, le graphe d’écart ne contient ni l’arc , ni l’arc car ils ont tous deux une capacité résiduelle nulle.

5.4.2 La notion de coupe

On appelle coupe la partition de l’ensemble des nœuds d’un réseau en deux en- sembles notés et . Une telle coupe est notée et devient une st-coupe si et . Deux ensembles d’arcs sont à étudier en particulier :

et

et

On définit la capacité de la st-coupe , et l’on note , la quantité :

5.1 Définition (Coupe minimum) On appelle coupe minimum, la st-coupe de capacité minimale.

40

5.1 Théorème (Théorème flot-max / coupe-min)

La valeur maximale du flot pouvant circuler sur un réseau est égale à la capacité de la coupe minimum.

Cette notion sera étudiée plus en détails lors de la présentation de l’algorithme de Ford et Fulkerson pour la recherche du flot max.

5.5 Quelques exemples de problèmes modélisables par les flots

Tous les problèmes qui mettent en jeu un flux physique de matière, d’électricité ou d’information se modélisent naturellement par les flots. Toutefois, il est d’autres catégories de problèmes qui les mettent en jeu de manière moins triviale.

5.5.1 Problèmes faisant intervenir le flot maximal

Le problème des représentants

Soit une entreprise comptant employés , , , . Ceux-ci sont répartis dans corps de métiers et catégories socio-professionnelles ; un employé pouvant appartenir à plusieurs corps de métiers mais à une et une seule catégorie socio- professionnelle.

Lors des élections des représentants du personnel (modèle grand-breton), chaque corps de métier doit désigner 1 représentant pour le bureau sachant que chaque ca- tégorie socio-professionnelle ne peut avoir plus de membres siégeant.

La question que l’on va résoudre en utilisant un flot maximal est la suivante :

Existe-t-il un bureau compatible avec ces contraintes?

Pour répondre à cette (légitime) interrogation, on va utiliser le graphe suivant. On associe à chaque corps de métier un sommet et un arc de capacité maximale 1 représentant le fait que chaque corps de métier désigne 1 représentant.

A l’autre bout du graphe, chaque catégorie socio-professionnelle se voit repré- sentée par un sommet auquel on associe immédiatement l’arc