• Aucun résultat trouvé

MATHÉMATIQUES 2 Pascal Laurent

N/A
N/A
Protected

Academic year: 2021

Partager "MATHÉMATIQUES 2 Pascal Laurent"

Copied!
64
0
0

Texte intégral

(1)

MATHÉMATIQUES 2

Pascal Laurent

Théorie des graphes

Boussad Mammeri

(2)

I Théorie des graphes 4

1 Notions générales 5

1.1 Terminologie . . . 5

1.1.1 Matrice associée . . . 6

1.1.2 Graphes particuliers . . . 7

1.1.3 Graphes associés . . . 7

1.1.4 Cheminements . . . 8

1.1.5 Connexité . . . 12

1.2 Représentations . . . 13

1.2.1 Structures de données . . . 13

1.2.2 Fonctions de conversion . . . 14

1.3 Noyaux . . . 15

1.3.1 Stabilité interne . . . 15

1.3.2 Noyaux . . . 17

1.4 Arbres et arborescences . . . 19

1.4.1 Arbres . . . 19

1.4.2 Arborescences . . . 20

1.5 Graphes planaires . . . 21

2 Flots 22 2.1 Flot dans un réseau . . . 22

2.1.1 Définitions . . . 22

2.1.2 Représentations . . . 23

2.1.3 Flot maximum . . . 24

2.2 Algorithme de Ford-Fulkerson . . . 25

2.2.1 Description . . . 25

2.2.2 Exemple . . . 26

2.3 Implémentations . . . 29

2.3.1 Optimisation linéaire . . . 29

2.3.2 Un programme classique . . . 29

2.4 Aspects algébriques . . . 31

2.4.1 Flots et tensions . . . 31

2.4.2 Flots bornés . . . 32

3 Couplage 33 3.1 Affectation optimale . . . 33

3.1.1 Définitions . . . 33

3.1.2 Représentation matricielle . . . 33

(3)

3.2 Résolution par flot maximum . . . 34

3.2.1 Graphe initial des zéros . . . 34

3.2.2 Adjonction d’arcs . . . 34

3.2.3 Une chaîne améliorante est alternée . . . 35

3.3 Algorithme hongrois . . . 35

3.3.1 Description sur un exemple . . . 35

3.3.2 Version matricielle de l’algorithme hongrois . . . 37

4 Chemins extrémaux 38 4.1 Problème du plus court chemin . . . 38

4.1.1 Algorithme de Ford . . . 38

4.1.2 Ordonnancement . . . 39

4.2 Méthode matricielle . . . 41

4.2.1 Matrices et opérations symboliques . . . 41

4.2.2 Ordonnancement par la méthode matricielle . . . 42

4.2.3 Exemple de résolution matricielle . . . 43

II Exercices 44

1 Graphes 45 1.1 Représentations d’un graphe . . . 45

1.2 Cheminements dans un graphe . . . 46

1.3 Stabilité . . . 47

1.4 Graphes particuliers . . . 48

2 Flots et chemins dans un réseau 49 2.1 Flot maximum . . . 49

2.2 Ordonnancement . . . 51

2.3 Couplage . . . 52

3 Programmation linéaire 53 3.1 Engrais chimiques . . . 53

3.1.1 Méthode géométrique . . . 53

3.1.2 Méthode des tableaux . . . 54

3.1.3 Perturbation des données . . . 54

3.1.4 Autre point de vue . . . 55

3.2 Approximation du problème du profil d’une route . . . 55

4 Algorithme du simplexe 56 4.1 Exemple . . . 56

4.2 Inéquations linéaires . . . 57

4.3 Méthode du simplexe . . . 58

4.4 Dualité . . . 63

(4)

Théorie des graphes

(5)

Notions générales

Définitions d’un graphe

Un graphe est un ensemble de points (appelés sommets), muni d’une relation bi- naire dont les couples sont appelés arcs.1

Notation :G= (X, U), avec : X = ensemble des sommets U = ensemble des arcs

FIG. 1.1 – Exemple de graphe [GR1]

X= 1 2 3 4 5

U = 1 2

; 1 4

; 4 2

; 2 3

; 3 4

; 4 5

1.1 Terminologie

Notions immédiates :

– arête : arc non orienté (ou orienté dans les deux sens) ;

– sommets adjacents àx: successeursΓ(x)ou prédécesseursΓ−1(x); – sommets reliés àx: descendants ou ascendants ;

– arcs incidents àx: entrantsω(x)ou sortantsω+(x).

1On ne s’intéresse pas à la façon de placer les sommets sur un dessin.

(6)

Sommets particuliers

– racine : sommet sans prédécesseur ; – feuille : sommet sans successeur ;

– source : racine ascendant de tout sommet ; – puits : feuille descendant de tout sommet.

Graphes et multigraphes

Nous nous limiterons ici aux graphes simples : qui comportent un seul arc ou arête entre deux sommets.

Un graphe non simple est un multigraphe. Exemple : les ponts de Königsberg (Fig. 1.2).

FIG. 1.2 – Exemple de multigraphe

1.1.1 Matrice associée

La matrice associée à un graphe est définie par : Bi,j= existence de l’arc(i,j)

Cette notion d’existence peut être notée 0/1 (ou False, True) pour un graphe simple.2 Exemple (matrice du graphe de la Fig.1.1, p. 5) :

B=

0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0

1.1.1.1 Quelques propriétés

– Bkj = 0 ∀k signifie que le sommetjest une racine.

– Bik = 0 ∀k signifie que le sommetiest une feuille.

– P

kBik = Card(ω+(i)) est le demi-degré extérieur dei(nombre d’arcs partant dei).

2SiBijest d’un autre type, cela peut représenter un multigraphe ou un graphe simple valué.

(7)

– P

kBkj = Card(ω(j)) est le demi-degré intérieur dej (nombre d’arcs arrivant versj).

– Bij+Bji= 0 signifie queietjne sont pas adjacents.

Curiosité :Bii = 1signifie la présence d’une boucle (arc à origine et extrémité confondues) au sommeti. C’est une configuration que nous avons exclue.

1.1.2 Graphes particuliers

Graphe symétrique

Définition : (x, y)∈U =⇒(y, x)∈U Propriété : Best symétrique :Bij =Bji

Exemple : graphe simple non orienté.

Graphe antisymétrique

Définition : (x, y)∈U=⇒(y, x)∈/ U Propriété3: Bij+Bji≤1

Exemple : graphe orienté simple.

Graphe complet

Définition : chaque paire de sommets est reliée par un arc Propriété : Bij+Bij ≥1

Clique

Définition : une clique est un graphe symétrique complet Propriété : Bij+Bji= 2

Tournoi

Définition : un tournoi est un graphe antisymétrique complet Propriété : Bij+Bji= 1 (i6=j)

1.1.3 Graphes associés

Graphe inversé G’

Définition : on inverse le sens des arcs

Propriété : Bij =Bji (c’est ici la matrice transposée) Graphe complémentaireG

Définition : (x, y)∈U =⇒(x, y)∈/ U Propriété : Bij+Bij = 1.

Sous-graphe

Définition : on obtient un sous-graphe en supprimant des sommets (et les arcs incidents, comme origine ou comme extrémité) Propriété : la matrice associée est une sous-matrice.

3Noter queBn’est pas antisymétrique.

(8)

Graphe partiel

Définition : on obtient un graphe partiel en supprimant des arcs

Propriété : la matrice associée (de même dimension) comporte plus de zéros.

1.1.3.1 Exemple

– (X, U)= villes et routes de France, – sous-graphe des villes de Bretagne, – graphe partiel des routes nationales,

– sous-graphe partiel des routes nationales de Bretagne.

1.1.4 Cheminements

1.1.4.1 Chemins et chaînes

Chemins Un chemin est une suite d’arcs continue.4

Exemple de cheminement (passeur, loup, chèvre et chou) : Fig. 1.3, p. 8.

FIG. 1.3 – Passeur, loup, chèvre, choux

Trouver un chemin

Algo 1.1 [Trémaux] Pour trouver un chemin entre a et b : Fig. 1.4, p. 8.

FIG. 1.4 – Algorithme de Trémaux

– Depuis a, suivre un chemin (quelconque) aussi loin que possible en marquant (+) chaque arc parcouru ;

– dans une impasse, on rétrograde en marquant une seconde fois (par -) l’arc ; – si on arrive (par un arc une seule fois marqué) à un sommet déjà exploré, on rétro-

grade (donc en marquant -) ;

– soit x le sommet atteint en rétrogradant, alors : 1. ou bien il reste un arc non marqué ;

2. ou bien on repart par l’arc (marqué une fois) utilisé la première fois.

– On arrête lorsqu’on arrive en b ou bien lorsqu’il n’y a plus aucune possibilité.

4en convenant de qualifier ainsi la propriété intuitive suivante : l’extrémité de tout arc est l’origine du suivant, sauf bien entendu pour le premier et le dernier.

(9)

Cas particuliers de l’algorithme de Trémaux : – Si le graphe est planaire, prendre toujours à droite.

– Si le graphe est symétrique, tendre une ficelle entre a et b.

FIG. 1.5 – Chemins dans un graphe [GR2]

Traitement matriciel Pour le graphe de la Fig. 1.5, de matrice associée :

B=

0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0

les puissances successives deBsont :

B2=

0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

B3=

0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

B4= 0

On observe qu’un élément(i, j)6= 0indique la présence d’un chemin entreietj: – de longueur 1 dansB

– de longueur 2 dansB2 – . . .

Noter qu’on peut faire le produit matriciel ou bien en booléen (ce qui donne la présence des chemins) ou bien en décimal (on obtient alors aussi leur nombre).5 Chaînes Une chaîne est une suite d’arêtes continue.

1.1.4.2 Cheminements particuliers Déf 1.1

– Chemin élémentaire : dont les sommets sont distincts.

– Chemin simple : dont les arcs sont distincts.

Si on remplace chemin par chaîne (chemin non orienté), on obtient toutes les no- tions correspondantes pour un graphe symétrique.

5Si on le fait en booléen, il peut être utile de remarquer que + est unoret que * est unand.

(10)

Prop 1.1 Il est clair que :

élémentaire =⇒ simple Eulérien

– Chemin eulérien : chemin simple qui passe par tous les arcs.

– Chaîne eulérienne : chaîne simple qui passe par toutes les arêtes.

Ex 1.1 L’enveloppe postale (Fig. 1.6) peut être tracée sans lever la plume.

FIG. 1.6 – Chaîne eulérienne (4 2 3 1 2 5 3 4 5)

Prop 1.2 SiGpossède une chaîne eulérienne, alorsGpossède deux sommets (et deux seulement) de degré impair (l’origine et l’extrémité de la chaîne).6

Hamiltonien

– Chemin hamiltonien : chemin élémentaire qui passe par tous les sommets.

– Chaîne hamiltonienne : chaîne élémentaire qui passe par tous les sommets.

Thm 1.1 [König] Dans un graphe complet, il y a au moins un chemin hamiltonien.

1.1.4.3 Circuits

Un circuit est un chemin simple fermé.

Tester l’absence de circuits

Algo 1.2 Pour tester l’absence de circuits : – Marquer tout sommet sans successeur,

– marquer tout sommet dont tous les successeurs sont marqués.

– Si on parvient à marquer tous les sommets, le graphe est sans circuits.

Pour le graphe de la Fig. (1.5), on marque ainsi successivement : (5,3,4,2,1).

Matriciellement cela revient à observer que si on revient sur un sommet, l’une des matricesBk comporte alors un terme diagonal non nul (car un graphe ànsommets admet un chemin de plus denarcs si et seulement si il comporte un circuit).

6ce qui veut dire que la chaîne n’est pas fermée (ce n’est pas un cycle).

(11)

C’est le cas pour le graphe de la Fig. 1.1, p. 5.

Circuit hamiltonien

Ex 1.2 On peut tracer un circuit hamiltonien sur le dodécaèdre : Fig. 1.7, p. 11.

FIG. 1.7 – Circuit hamiltonien

1.1.4.4 Cycles

Un cycle est une chaîne simple fermée.

Algo 1.3 La construction d’un cycle peut se faire de la manière suivante : 1. choisirx0,

2. puis une suite d’arcs(x0, x1),(x1, x2), . . .en n’empruntant un arc incident àxi

que si :

– il y reste un nombre impair de tels arcs non encore pris ; – ou bien si tous les autres arcs sont déjà dans le cycle.

Pour rechercher un cycle eulérien vérifier si, dans la matrice associée, le nombre de 1 de toute ligne et de toute colonne est pair.

Ex 1.3 Sur le graphe des ponts de Königsberg (Fig. 1.2, p. 6) on ne peut pas faire de cycle eulérien.

En effet :

B=

0 0 1 1 0 0 1 1 1 1 0 1 1 1 1 0

(12)

1.1.5 Connexité

Déf 1.2 Soit surGla relation d’équivalence :

x≈ysixetysont reliés par une chaîne7

Les composantes connexes sont les classes d’équivalence du quotient deGpar cette relation.

Une composante connexe peut être considérée comme un problème indépendant.

Un point d’articulation est un sommet dont la suppression (avec les arcs incidents) rend le graphe non connexe.

Déf 1.3 Si on remplace chaîne par chemin dans la définition précédente, on obtient les composantes fortement connexes :

– deux sommets d’une composante connexe sont reliés par une chaîne ;

– deux sommets d’une composante fortement connexe sont reliés par un chemin.

Graphe réduit

Déf 1.4 Le graphe réduit est le graphe :

– dont les sommets sont les composantes fortement connexes (dites maximales) qui comportent le plus de sommets,

– et les arcs les liens entre celles-ci.

Dans l’exemple Fig.1.8, si on calcule (en booléen) :

(I+B)4=

1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1

on exhibe le graphe réduit :

1 −→ 2, 3, 4 −→ 5

FIG. 1.8 – Exemple de graphe[GR2]

7N.B. Une chaîne, que le graphe soit orienté ou non.

(13)

1.2 Représentations

La façon dont on ordonne les sommets d’un graphe est cruciale pour la recherche d’informations sur le graphe.

1.2.1 Structures de données

Exemple (idem[GR2]Fig. 1.5, p. 9) :

Dictionnaire Le dictionnaire décrit les successeurs de chaque sommet : 1 → [ 2, 4 ]

2 → [ 3, 4 ] 3 → [ 5 ] 4 → [ 3 ]

5 → [⊘]

Matrice associée La matrice associée décrit les liaisons entre sommets :

B=

0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0

Matrice d’adjacence La matrice d’adjacence décrit les arcs :

M =

1 1

-1 1 1

-1 -1 1

-1 -1 1

-1

(14)

1.2.2 Fonctions de conversion

On convient de représenter le dictionnaire par deux vecteurs (méthode classique utilisée pour les maillages).

Pour[GR2], p. 13, on aurait ainsi :8 D = [ 2,4, 3, 4,5, 2, 00, 00 ] C = [ 1, 3, 4, 6, 7, 08 ]

Exemples de fonctions de conversion :

function [ B ] = d2b (D, C) //

// conversion : Dictionnaire -> Matrice associee n = max (D)

B = zeros (n,n) for i = 1:n

for k = C(i) : (C(i+1) - 1) j = D(k)

if j > 0 then B(i,j) = 1, end end

end

endfunction // ...

function [ B ] = m2b (M) //

// conversion : Incidence -> Matrice associee [ n, p ] = size (M)

B = zeros (n,n) for a = 1:p

[ gg, i ] = max (M(:,a)) [ gg, j ] = min (M(:,a)) B(i,j) = 1

end

endfunction // ...

8Les zéros attirent simplement l’attention . . .

(15)

1.3 Noyaux

1.3.1 Stabilité interne

Déf 1.5 Un sous-ensembleAde sommets est dit stable s’il ne contient pas d’arcs : A∩Γ(A) =⊘

On appelle nombre de stabilité, notéα(G), le nombre maximal de sommets pouvant former un sous-ensemble stable.

Déf 1.6 Un sous-ensemble stable est dit maximal s’il n’est contenu dans aucun autre stable.

A un stable maximal, on ne peut pas ajouter un sommet sans rompre sa stabilité.

1.3.1.1 Exemple des huit dames

En théorie des jeux, le graphe du jeu est tel que : – un sommet = un état du jeu,

– un arc = un coup possible (entre deux états).

Dans le problème des huit dames sur l’échiquier, ce nombre 8 est leα(G)du graphe (symétrique) à 64 sommets où une arête existe si une dame peut se déplacer (en un coup) entre les deux sommets de l’arête.

Ce problème admet 92 solutions (dont Gauss en avait trouvé 72).

En voici quelques-unes :

. . . • . . . . . . . • . . . . . • . • . . . . . . . • .

• . . . . . . • . . . . . . . . . • . . .

. • . . . . . . . . • . . . . . . • .

• . . . . . . • . . . . . . . . • . . . • . . . . . • . . . .

6 4 7 1 8 2 5 3

4 1 5 8 2 7 3 6

On peut compléter la première par rotations deπ/2et la seconde deπ/4.

1.3.1.2 Coloriage d’une carte

Soit à colorier une carte de 10 pays (Fig. 1.9), dont la matrice binaire (à compléter par symétrie) représente le graphe des incompatibilités (Bij = 1sii etj sont limi-

(16)

trophes) :

B=

• 0 1 1 0 0 1 0 0 0

• 0 1 0 1 0 1 1 0

• 0 1 0 1 1 0 0

• 0 1 0 1 1 0

• 1 0 0 0 1

• 1 1 0 0

• 0 0 0

• 0 0

• 0

 A B CH

D E F I L NL

P

FIG. 1.9 – Carte de géographie

Le problème revient à trouver une partition deXen un nombre minimum (appelé nombre chromatique) de sous-ensembles stables.

1.3.1.3 Recouvrement

Le tableau ci-dessous indique quelques sous-ensembles stables (pays en ligne, stables en colonne) :

1 1 1 1 1 0 0 0 0 0 0 0 0 0 0

1 1 0 0 0 1 1 1 1 0 0 0 0 0 0

0 0 0 0 0 1 1 0 0 1 1 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 1 1 0 0

1 0 1 0 0 1 0 1 0 1 0 1 0 1 0

0 0 0 1 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1 1 0 0 1 1 1 1

0 0 1 0 1 0 0 0 0 1 1 0 0 1 1

0 0 1 1 1 0 0 0 0 1 1 0 0 1 1

0 1 0 1 1 0 1 0 1 0 1 0 1 0 1

↑ ↑ ↑ ↑

On peut vérifier que quatre suffisent à recouvrir tous les pays, par exemple (4,6,13,15) :

(17)

Couleur A = 1, 6, 9, 10 Couleur B = 2, 3, 5 Couleur C = 4, 7 Couleur D = 8 1.3.1.4 Programmation en nombres entiers

On peut aussi faire une formulation de ce problème de recouvrement sous forme d’une optimisation linéaire en nombres entiers binaires.

On pose (tableau ci-dessus) :

Tik = 1siiest coloré park et on introduit un vecteur :

ck= 1sikest retenue

Le programme linéaire consiste à minimiser le nombre de couleurs : minX

k

ck

sous la contrainte que chaque pays doit apparaître au moins une fois : X

k

Tikck ≥1 ∀i

1.3.2 Noyaux

1.3.2.1 Ensembles absorbants

Déf 1.7 Un sous-ensembleAde sommets (d’un grapheG) est dit absorbant si chaque sommet extérieur àAa un successeur (au moins un) dansA:

∀x /∈A A∩Γ(x)6=⊘

Cela veut dire que, de n’importe quel sommet extérieur àA, on peut entrer dansApar un seul arc (application en théorie des jeux, où un arc représente un coup possible).

Déf 1.8 Un sous-ensemble absorbantA est dit minimal si on ne peut lui retirer un sommet sans rompre son absorbance.

1.3.2.2 Noyaux

Déf 1.9 Un sous-ensembleAde sommets d’un graphe est un noyau s’il est à la fois stable et absorbant.

C’est une notion utilisée en théorie des jeux car le joueur qui se trouve dans un noyau (ensemble des positions gagnantes) est obligé d’en sortir alors que son adversaire peut toujours y rentrer.

On s’en sert usuellement aussi pour effectuer un premier choix (Cf. p.19).

Ex 1.4 Une feuille appartient à tout noyau et le prédécesseur d’une feuille à aucun.

(18)

Thm 1.2 Un noyau est stable maximal.

En effet, comme il est absorbant, on ne peut ajouter aucun sommet sans rompre la stabilité.

Thm 1.3 [Corollaire]9 Si G est symétrique, un sous-ensemble stable maximal est absorbant, donc un noyau.

En effet, maximal=⇒tout sommet extérieur est relié : c’est la définition de l’ab- sorbance dans le cas symétrique.

Thm 1.4 Un graphe fini orienté, sans circuits, a un noyau unique

Theorème admis (la démonstration se fait par un algorithme qui partitionne les sommets : dans le noyau et hors de lui).

Thm 1.5 SoitF(Y, z)la fonction caractéristique de l’ensembleY, alors : Y est un noyau ⇐⇒F(Y, t) = 1− max

z∈Γ(t)(F(Y, z)) En effet :

1. Si Y est un noyau, alors :

– F(Y, t) = 1 =⇒t∈Y =⇒F(Y, z) = 0 pour z∈Γ(t) – F(Y, t) = 0 =⇒t /∈Y =⇒ ∃z∈Γ(t) i.e. F(Y, z) = 1 2. Réciproquement, si on a la relation proposée :

– t ∈ Y =⇒ F(Y, t) = 1 =⇒F(Y, z) = 0 : aucunzdansΓ(t) (stabilité).

– t /∈Y =⇒F(Y, t) = 0 =⇒F(Y, z) = 1 : il y a unzdansΓ(t) (absorbant).

Thm 1.6 L’intersection de deux noyaux n’est jamais un noyau.

En effet, soientAetBdeux noyaux :

– siAetBsont disjoints, il n’y rien à démontrer.

– SiBinclus dansA, on peut trouver unxhors deB qui est relié à B, donc rompt la stabilité deA.

– S’il n’y a pas inclusion (B∩A6=⊘), il existe uncdansA∩Brelié à unadansAhors deB: idem.

1.3.2.3 Algorithme de construction du noyau Dans le dictionnaire du graphe :

– Marquer toute ligne vide.

– Barrer toute ligne où apparaît l’indice d’une ligne marquée.

– Rayer l’indice des lignes barrée dans toute ligne non encore barrée.

– Itérer juqu’à marquer ou barrer toutes les lignes.

Le noyau est constitué des sommets correspondant aux lignes marquées.

9C’est la réciproque du théorème précédent, dans le cas symétrique.

(19)

1.3.2.4 Exemple

Soit à effectuer un premier choix parmi 6 candidats au moyen des résultats suivants, obtenus à 4 tests :

a | 18 13 15 14 b | 17 12 14 10 c | 15 11 19 13 d | 12 10 9 2 e | 13 16 13 6 f | 10 15 10 3 On construit le graphe orienté où existe une arête(x, y)si : – ya eu une meilleure note quexà au moins l’un des tests, – yn’a aucune note inférieure, dans aucun des tests.

FIG. 1.10 – Noyau de sélection

Le noyau de ce graphe (iciaete) fournit une première sélection.

1.4 Arbres et arborescences

1.4.1 Arbres

Prop 1.3 Etant données les trois propriétés (dans un grapheGànsommets) : 1. Gest connexe

2. Gn’a aucun cycle 3. Gpossèden−1arcs.

deux quelconques d’entre elles impliquent la troisième.

Déf 1.10 Un graphe vérifiant les propriétés précédentes est appelé arbre.

1.4.1.1 Autres propriétés

Ex 1.5 Si on ajoute une arête à un arbre, on crée un cycle (et un seul).

Ex 1.6 Si on retire une arête à un arbre, on rompt la connexité.

Ex 1.7 Dans un arbre, il y a une chaîne (et une seule) entre deux sommets.

(20)

1.4.1.2 Arbre minimum

Soit un ensemble densommets, dont on veut relier chaque paire par un chemin.

Etant donné d’autre part le coût de construction de chaque arête, on se propose de construire le graphe de coût minimum.

Algorithme de Kruskal (pour la recherche de l’arbre minimum) : 1. Initialement : aucune arête.

2. Etape zéro : construire les 2 arêtes de coûts minimum.

3. Pourk=3 :n-1 choisir l’arête – la moins coûteuse

– qui ne ferme aucun cycle avec les arêtes déjà retenues.

1.4.2 Arborescences

Déf 1.11 Une arborescence de racine r est un graphe sans circuit et tel que : 1. tout sommet x, autre que r, a un seul prédécesseur ;

2. la racine r n’a pas de prédécesseur ; 1.4.2.1 Propriétés

SoitGune arborescence.

1. Gn’a pas de cycle.

2. Le nombre d’arêtes est :m=n−1 3. Gest un arbre, donc connexe.

4. Gpossède au moins une feuille.

5. Il existe une chemin unique joignant la racine à tout autre sommet.

6. Deux sommets de même niveau n’ont aucun descendant commun (cette propriété induit la notion de branche issue d’un sommet).

1.4.2.2 Branch and bound

Un problème de prise de décisions est représenté par une arborescence : – les feuilles sont les solutions ;

– chaque solution a un coût, que l’on sait calculer.

Bien entendu, il faut choisir la structure de cette arborescence (chaque niveau re- présente une étape, et les choix peuvent être nombreux).

Par delà les méthodes heuristiques, il convient de savoir répondre aux questions suivantes, dont dépend l’efficacité de la procédure de résolution :

1. comment trouver une bonne solution initiale, de démarrage ?

2. comment couper certaines branches de l’arborescence, qui n’amélioreront pas la solution ? (bound)

3. où vaut-il mieux se brancher, en cours d’exploration ? (branch)

(21)

1.5 Graphes planaires

Un graphe est planaire si on peut le dessiner sur une feuille sans que deux arêtes se coupent.

Formule d’Euler

Prop 1.4 Dans un graphe planaire àSsommets,F faces etAarêtes, on a : S+F=A+ 2

Application : il n’existe que cinq polyèdres réguliers de l’espaceR3. Graphe dual

Déf 1.12 Pour obtenir le graphe dual d’un graphe planaire connexe : – On place un sommet dans chaque face,

– et on réunit par une arête coupant une fois et une seule toute arête commune aux deux faces.

Exemples de graphes duals (entre parenthèsesSetF) : – le cube (6,8) et l’octaèdre (8,6) ;

– l’icosaèdre (12,20) et le dodécaèdre (20,12).

Prop 1.5 Le dual d’un graphe planaire est planaire.

Nombre chromatique

Thm 1.7 Un graphe planaire est 4-chromatique.

Théorème de Kuratowski

Thm 1.8 Un graphe est planaire si et seulement si il ne contient pas l’un des deux graphes (complets)K5etK33.

Il est clair queK5etK33ne sont pas planaires (formule d’Euler non vérifiée). La réciproque montre qu’ils sont, de ce point de vue, minimaux.

FIG. 1.11 – Graphes non planaires :K5, K33

(22)

Flots

2.1 Flot dans un réseau

2.1.1 Définitions

2.1.1.1 Réseau

On appelle réseau (network) un grapheG= (X, U): – orienté, connexe, sans circuit ;

– possédant une source a et un puits b ; – à arcsuvalués par des capacitésc(u)≥0.

Rappel : on noteω(S)l’ensemble des arcs incidents versS (entrants) etω+(S) l’ensemble des arcs sortants.1

2.1.1.2 Flot

Un flot est une fonctionϕ(u)à valeurs entières, définie surU, avec les popriétés suivantes :

1. valeurs positives :∀u ϕ(u)≥0 2. valeurs bornées2:∀u ϕ(u)≤c(u) 3. conservation (loi de Kirchhoff) :

∀x6=a, b X

u∈ω(x)

ϕ(u) = X

u∈ω+(x)

ϕ(u)

La valeur du flot est la quantité qui arrive au puits b. C’est aussi la quantité qui part de la source a, et il est parfois commode d’introduire un arc (dit de retour) :

r= (b, a) de sorte que :

ϕ(r) = X

u∈ω+(a)

ϕ(u) = X

u∈ω(b)

ϕ(u)

1L’ensembleω(S) =ω(S)ω(S)des arcs ayant une extrémité (et une seule) dansSs’appelle un cocycle.

2Si on a égalité, l’arcuest dit saturé.

(23)

Cette quantité étant entière, on parlera souvent d’unités de matière circulant dans le réseau.3

2.1.2 Représentations

Soit le réseau de la Fig. 2.1.

FIG. 2.1 – Exemple de réseau [GR3]

Sa matrice d’adjacenceM(sans l’arc de retour) s’écrit :

1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

-1 0 0 1 1 1 0 0 0 0 0 0 0 0 0

0 -1 0 0 0 0 1 1 1 0 0 0 0 0 0

0 0 -1 0 0 0 0 0 0 1 1 0 0 0 0

0 0 0 -1 0 0 -1 0 0 0 0 1 0 0 0

0 0 0 0 -1 0 0 -1 0 0 0 0 1 0 0

0 0 0 0 0 0 0 0 -1 -1 0 0 0 1 0

0 0 0 0 0 -1 0 0 0 0 -1 0 0 0 1

0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1

et le vecteurCdes capacités :

45 25 20 10 15 20 20 5 15 10 10 30 10 20 30

Exemple de flot :

Φ = 20 20 20 10 10 0 20 0 0 10 10 30 10 10 10 pour lequel on peut vérifier que :

3Cette condition de type entier est simplement numérique : il existe une quantité (atomique) minimum pour la modification d’un flot.

(24)

MΦ = (60, 0, . . . , 0, -60) c’est un flot

Φ ≤C il est compatible

kMΦk = 60 on a sa valeur

2.1.3 Flot maximum

On se propose de maximiser la valeurϕ(r)du flot.

2.1.3.1 Coupe

Déf 2.1 Soit un ensembleBde sommets contenant b.

– Une coupe est un ensembleKd’arcs ayant leur extrémité dansB (et pas leur origine).

– La capacité d’une coupe est la somme des capacités de ses arcs : C(K) = X

u∈K

c(u)

Propriété d’une coupe Il résulte de la définition que tout ce qui arrive en b doit traverser la coupe. Donc :

Prop 2.1

ϕ(r)≤C(K) ∀K

La valeur d’un flot ne peut dépasser la capacité d’une coupe.

2.1.3.2 Flot maximum, coupe minimum Prop 2.2 Si on a trouvé une coupeKtelle que :

ϕ(r) =C(K) alors :

– le flot est maximum : on ne peut rien ajouter sur cette coupeK; – C(K)est minimum :ϕ(r)ne pourrait passer surC(K)< C(K).

(25)

2.2 Algorithme de Ford-Fulkerson

L’algorithme de Ford-Fulkerson construit un flot et détermine une coupe qui véri- fient le critère d’optimalité.

2.2.1 Description

La coupe s’obtient en réalisant une partition (dynamique) des sommets en sommets marqués et non marqués.

2.2.1.1 Obtention d’un flot complet

Le flot est construit par améliorations successives jusqu’à l’obtention d’un flot com- plet

Déf 2.2 Un flot est dit complet si tout chemin allant de a à b comporte au moins un arc saturé

Tant qu’il existe un chemin de a à b n’ayant aucun arc saturé, on peut améliorer le flot sur ce chemin.

On le détermine de façon systématique en balayant les arcs depuis chaque noeud, dans un ordre convenu (arbitraire).

2.2.1.2 Marquage des sommets

Le marquage des sommets tente de construire une chaîne allant de a à b.

Sur cette chaîne, certains arcs seront parcourus dans le bon sens (arc progressifs) et d’autres en sens contraire (régressifs), choisis d’après la règle :

– un arc progressifvdoit vérifier :ϕ(v)< c(v) – un arc régressifwdoit vérifier :ϕ(w)>0

Si on arrive à marquerb, la chaîne ainsi construite est dite améliorante, car on peut augmenter le flot :

– en ajoutant une unité sur tout arc progressifv, – en retranchant une unité sur tout arc régressifw.

La loi de Kirchhoff reste vérifiée sur les sommets de la chaîne, sauf en a et en b, où on a ajouté une unité.4

S’il est impossible de marquerb, cette partition des sommets (en marqués et non marqués) détermine une coupe d’arcs(d, f)ayant, par construction, la propriété suivante :

– si c’estdqui est marqué, alorsϕ(u) =c(u), – si c’estf , alorsϕ(u) = 0

i.e. :

ϕ(K) =C(K)

et on conclut d’après le lemme (flot maximum – coupe minimum) : Prop. 2.2, p. 24.

4En pratique, on accélère le processus en ajoutant non pas une unité mais la quantité maximum possible, donnée par le graphe des écarts (valué parcϕ).

(26)

2.2.1.3 En résumé

L’algorithme est fini Il y a un arrêt des itérations, car :

– le nombre de sommets est fini (et le graphe supposé sans circuit), – on ne peut augmenter le flot que jusqu’à la limite des capacités.

L’arrêt définit une coupe qui est l’ensembleK des arcs ayant une seule marque : soit à leur origine (d), soit à leur extrémité (f).

Le flot est maximum par obtention d’une coupe minimale.

Remarque La coupe ainsi déterminée n’est pas forcément unique.5

2.2.2 Exemple

Soit à réaliser un réseau de distribution d’eau (avec des quantités mesurées en nombres entiers) à partir de trois réservoirs (1,2,3) vers quatre villes (4,5,6,7) :[GR3], Fig. 2.1, p. 23.

Il s’agit de maximiser la somme des quantités acheminées, sous des contraintes de limitation :

– de stockage de chacun des réservoirs, – de stockage en chacune des villes,

– de chaque conduite d’acheminement existante.

Le graphe est ici biparti mais l’algorithme de Ford-Fulkerson n’est pas limité à ce type de graphe.

2.2.2.1 Obtention d’un flot complet Flot au jugé (Fig.2.2)

qu’on améliore. . .6jusqu’à trouver un flot complet7(Fig. 2.3).

2.2.2.2 Marquage

→Procédure de marquage de Ford-Fulkerson : On arrive à marquer b, par la chaîne :

A−→3−→6←−2−→4−→B D’où l’amélioration8: Fig. 2.4

On reprend la procédure de marquage. On ne peut plus marquer b : A−→1−→5

L’impossibilité de marquer b détermine donc une coupeK: Fig. 2.5

5C’est à dire qu’il ne sert à rien d’augmenter les capacités des arcs de cette coupe : l’optimum ne changera pas s’il se produit dans d’autres.

6En ajoutant systématiquement sur le premier arc à gauche (mais on peut trouver d’autres flots).

7Pour obtenir un flot complet, on se restreint au graphe partiel des arcs non saturés.

8Obtenue en ajoutant non pas une unité, mais le maximum possible sur le chemin.

(27)

FIG. 2.2 – Flot initial au jugé

FIG. 2.3 – Flot complet

(28)

FIG. 2.4 – Augmentation sur chaîne améliorante

FIG. 2.5 – Coupe minimale obtenue

(29)

2.3 Implémentations

2.3.1 Optimisation linéaire

Formulation primale Le problème du flot maximum est un problème d’optimisation linéaire sous contraintes linéaires et on peut se proposer de le résoudre comme tel.

Soient :

Φ = (Φ12, . . . ,Φm) M(n,m) = matrice d’adjacence

alors le problème s’écrit :

max ϕ = (MΦ|e1) Φ ≥ 0

Φ ≤ C

Formulation duale On peut aussi résoudre le problème dual : min θ = (Θ|C)

Θ ≥ 0 Θ ≥ Me1

2.3.2 Un programme classique

Le programme classique du flot maximum utilise la notion de graphe des écarts.

Version scilab :

function [ flot, G ] = fordFulk (G) //

// Flot maximum : Ford - Fulkerson // Canadian Journal of Mathematics // Vol. 9, 1957, 210-218

//

// scilab : (bM) 2006 [ n, rien ] = size (G) flot = 0

it = 0 while %t

it = it + 1

(30)

sig = zeros (n, 1) gam = zeros (n, 1) del = zeros (n, 1) del(1) = max (G) iter = 0

while %t

iter = iter + 1 k = max (sig) for i = 1:n

if k ~= sig(i) then continue, end for j = 1:n

if del(j) ~= 0 then continue, end if G(i,j) <= 0 then continue, end del(j) = min (G(i,j), del(i)) gam (j) = i

end end // i num = 0

if del(n) > 0 then break, end for i = 1:n

if del(i) <= 0 then continue, end if sig(i) ~= 0 then continue, end num = num + 1

sig(i) = k+1 end // i

if num == 0 then return, end end // while (iter)

f = del(n) flot = flot + f j = n

while %t i = gam(j)

G(i,j) = G(i,j) - f G(j,i) = G(j,i) + f j = i

if j==1 then break, end end

end // while (it) endfunction // ...

(31)

2.4 Aspects algébriques

2.4.1 Flots et tensions

On suppose qu’il existe une fonctionπ(appelée potentiel) définie sur les sommets deG, et on pose, pour tout arcu= (x, y):

θ(u) =π(y)−π(x)

appelée fonction tension (définie sur les arcs).

On a clairement :

θ=Mπ

Si le flotΦdans un réseau est une tensionθ, on dit qu’il dérive du potentielπ.9

Orthogonalité des flots et des tensions Des relations : MΦ = 0

θ = Mπ

on déduit que :

(θ|Φ) = 0

Tensions élémentaires Une tension est dite élémentaire sur un ensembleSde som- mets si :

θ(u) = +1 si u∈ω+(S) θ(u) =−1 si u∈ω(S)

Une tension élémentaire dérive de la fonction caractéristique du complémentaire deSdansX:

π(x) = 0 si x∈S π(x) = 1 si x /∈S

Le potentielπest donc, dans ce cas particulier, associé à une coupe.

9Analogie évidente en électricité où le flot est une intensité.

(32)

2.4.2 Flots bornés

On dit que le flot est borné lorsque la contrainte de définition s’écrit : 0≤b(u)≤ϕ(u)≤c(u)

Le problème qui se pose alors dans l’application de l’algorithme de Ford-Fulkerson est de trouver un flot initial de démarrage (ce n’est plus zéro).

2.4.2.1 Flots et simplexe

Si le problème primal est en termes de flots, le dual est en termes de potentiel, et on montre que la tension est élémentaire à l’optimum.

Le potentiel dont elle dérive définit alors la coupe.

2.4.2.2 Existence d’un flot

Theorème de Hoffmann Si la contrainte s’écrit : b≤Φ≤c alors la condition :

X

u∈ω(S)

c(u)≥ X

u∈ω+(S)

b(u) ∀S∈X

est nécessaire et suffisante pour l’existence d’un flot compatible.

Il est remarquable que la condition soit suffisante.

La démonstration est constructive : l’algorithme (dit de Herz) minimise la somme des écarts du flot existant dans le mauvais sens . . . (et montre alors qu’on peut l’annuler sous la condition ci-dessus).

(33)

Couplage

3.1 Affectation optimale

3.1.1 Définitions

3.1.1.1 Graphe biparti

Déf 3.1 On appelle graphe biparti, notéG(X, Y, U), un graphe dont l’ensemble des sommets est partitionné en deux classes(X, Y)et tel que tout arc a son origine dans Xet son extrémité dansY.

Exemple : le grapheK3,3est un graphe biparti complet.

Si on numérote les sommets deX d’abord(1:p), puis ceux deY (p+1:n), alors la matrice associée n’a déléments non nuls que dans le coin en haut à droite ainsi défini.

La matrice d’adjacence est aussi partitionnée en sesppremières lignes (contenant tous les 1) et lesn-psuivantes (contenant tous les -1).

3.1.1.2 Couplage

Déf 3.2 Un ensemble d’arcs est appelé couplage si deux arcs ne sont jamais adjacents : – un sommetxa un successeur au plus,

– un sommetya un prédécesseur au plus.

Un sommet (deXouY) est dit saturé s’il appartient à un arc du couplage.

Le problème usuel est la recherche d’un couplage optimum (ayant le maximum d’arcs).

3.1.2 Représentation matricielle

Soit à réaliser l’affectation optimale depindividusLiàppostesCj, compte tenu d’une table de coefficients d’adéquation.

Affectation globalement optimale : on optimise la somme des coefficients.

(34)

Dans l’exemple numérique suivant[GR4](représentant le coin en haut à droite de la matrice du graphe) :

A=

7 3 5 7 10

6 ∞ ∞ 8 7

6 5 1 5 ∞

11 4 ∞ 11 15

∞ 4 5 2 10

on convient queAij= 0est l’optimum (∞représentant l’impossibilité d’affectation).

Remarque On ne change pas la solution de ce problème en retranchant de chaque colonne son plus petit élément et en opérant de même sur les lignes :

A =

1 0 4 5 3

0 ∞ ∞ 6 0

0 2 0 3 ∞

4 0 ∞ 8 7

∞ 1 4 0 3

3.2 Résolution par flot maximum

3.2.1 Graphe initial des zéros

On considère d’abord le graphe partiel des zéros de la matrice, avec des arcs sup- posés booléens (affectés ou non affectés).

En y ajoutant une entrée (conduisant aux sommets deX) et une sortie (d’où pro- viennent les sommets deY), on obtient une réseau auquel on peut appliquer l’algo- rithme de Ford-Fulkerson.

Si le flot maximum sur ce graphe partiel correspond à un couplage qui sature tous lesX ou tous lesY, alors c’est l’optimum.

Sinon, on ajoute des arcs à ce graphe partiel.

3.2.2 Adjonction d’arcs

On augmente le graphe partiel en y ajoutant les arcs correspondant aux éléments de Ales plus petits restants.1

Sur ce graphe augmenté, on entame une procédure de marquage qui peut améliorer la couplage.

On réitère cette opération (d’adjonction d’arc) jusqu’au couplage optimum ou à l’épuisement des arcs.

1C’est à dire qu’on accepte un optimum correspondant à des termes deAautres que les zéros.

(35)

3.2.3 Une chaîne améliorante est alternée

Déf 3.3 Une chaîne dansGest dite alternée si elle est composée d’arcs alternativement saturés et non saturés.

Théorème

Un couplage est maximum si et seulement si aucune chaîne alternée ne relie deux sommets insaturés.

Il est facile de voir que la condition est nécessaire, car on peut améliorer le couplage sur une chaîne alternée :

on y permute les arcs saturés et les non saturés, Exemple (non significatif pour la matrice ci-dessus) :

3.3 Algorithme hongrois

L’algorithme de König (algorithme hongrois) résout le problème du couplage opti- mum.

3.3.1 Description sur un exemple

Sur le graphe[GR4]des zéros de la matrice :

1 0 4 5 3

0 ∞ ∞ 6 0

0 2 0 3 ∞

4 0 ∞ 8 7

∞ 1 4 0 3

on sature d’abord les arcs :

(L1, C2),(L2, C1), L3, C3),(L5, C4) et le flot est alors complet car on ne peut marquer la sortie :

E→L4→C2←L1

(36)

L’algorithme hongrois améliore le processus en observant que l’ensemble des ran- gées deA correspondant auxLi marqués et auxCjnon marqués représente les arcs possibles à ajouter.

Le meilleur arc correspond ainsi au plus petit élément de la sous-matrice :

1 . 4 5 3 . . . . . . . . . . 4 . ∞ 8 7 . . . . .

c’est à dire(L1, C1).2

Dans ce nouveau graphe : on constate alors que la chaîne : (L4, C2, L1, C1, L2, C5)

est alternée (entre deux sommets insaturés). La permutation des arcs saturés et non saturés donne donc un arc de plus.

Le couplage obtenu :

(L1, C1); (L2, C5); (L3, C3); (L4, C2); (L5, C4) est alors maximum (sans être unique).

Sa valeur (calculée dans la matrice initiale) est : 7 + 7 + 1 + 4 + 2 = 21

2Alors que la version de principe aurait ajouté les deux arcs(1,1)et(5,2).

(37)

3.3.2 Version matricielle de l’algorithme hongrois

3.3.2.1 Couplage (partiel) initial

– Choisir une ligne contenant le moins de zéros.

– Encadrer 0 le premier zéro et barrer⊘tous les autres sur sa ligne et sa colonne.

– Continuer jusqu’à avoir traité tous les zéros.

. 0 . . .

0 . . . ⊘

⊘ . 0 . .

. ⊘ . . .

. . . 0 .

3.3.2.2 Sous-matrice d’adjonction d’un arc

– Marquer les lignes ne contenant pas de zéro encadré 0

– Marquer les colonnes ayant un zéro barré⊘dans une ligne marquée.

– Marquer les lignes ayant un zéro encadré 0 dans une colonne marquée.

– Barrer les lignes non marquées et les colonnes marquées.

1 0 4 5 3

→ 0 ∞ ∞ 6 0

→ 0 2 0 3 ∞

4 0 ∞ 8 7

→ ∞ 1 4 0 3

3.3.2.3 Amélioration

– Prendre le plus petit des éléments de la matrice restante (en enlevant les rangées barrées).

– Soustraire ce nombre des colonnes non barrées et l’ajouter aux lignes barrées.

1 0 4 5 3

0 ∞ ∞ 6 0

0 2 0 3 ∞

4 0 ∞ 8 7

∞ 1 4 0 3

0 0 3 4 2

0 ∞ ∞ 6 0

0 3 0 3 ∞

3 0 ∞ 7 6

∞ 2 4 0 3

3.3.2.4 Itération

On reprend le marquage jusqu’à trouverpzéros encadrés 0 .

(38)

Chemins extrémaux

On considère un grapheG= (X, U), à arcs valués, sans circuits.

La valeurvijd’un arc est appelée sa longueur.

4.1 Problème du plus court chemin

On se place dans le cas particulier d’un réseau (entrée a, sortie b), représentant les étapes d’un projet, l’existence d’un arc(i, j)signifiant que :

– l’étapejest postérieure ài;

– une durée minimumvijest nécessaire entre les deux.

Déf 4.1 Problème du plus court chemin : trouver un chemin de a à b, de longueur maximale.1

4.1.1 Algorithme de Ford

L’algorithme ci-dessous2 résout le problème par une procédure de marquage des sommets.

Algo 4.1 Algorithme du plus court chemin : – marquer l’entrée parta= 0

– marquer chaque sommetjdont tous les prédécesseursP(j)sont marqués : tj= max

i∈P(j)(ti+vij)

– La marquetbde la sortie est la longueur du chemin extrémal.3 Ex 4.1 Ecrire l’algorithme de Ford.

On peut utiliser la matrice associée (vij) : Fig. 4.1, p. 39.

On notera l’importance de la numérotation des sommets (testj<i) : il faut la faire grosso-modo dans l’ordre d’éloignement de l’entrée.

1C’est bien max pour un plus court chemin, car toutes les étapes doivent être validées.

2de Ford, mais on dit aussi : de Moore-Dijkstra, de Dantzig, . . .

3Si on n’arrive pas à marquer la sortie, c’est que le graphe comporte un circuit.

(39)

FIG. 4.1 – Algorithme de Ford for i = 1:n

for j = 2:n

if v(i,j) == 0 then continue, end tt = t(i) + v(i,j)

if t(j) < tt then t(j) = tt

if j < i then i = j, j = 2, end // ! end

end end

4.1.1.1 Chemin critique

Déf 4.2 Soit un chemin de a à i, de longueur maximale : sa longueurdi est appelée date au plus tôt (du sommeti).

En inversant le sens des arcs du graphe, on obtient les (compléments à la durée totale des) dates au plus tardfi(de chaque sommet).

Déf 4.3 On appelle chemin critique un chemin de a à b, jalonné par des sommetsitels que :

di=fi

vij=dj−di

On le construit en remontant les arcs depuis b.

Il n’est pas forcément unique.

4.1.2 Ordonnancement

Le problème de l’ordonnancement consiste à déterminer le calendrier d’exécution de tâches soumises à des contraintes de coordination (succession et durée).

On détermine alors le chemin de longueur maximale allant du début à la fin du projet.

La méthode PERT4est un autre nom (utilisé en gestion de projets) de l’algorithme du plus court chemin.

4Program Evaluation Research Task ou Review Technique

(40)

4.1.2.1 Exemple

Soit le réseau d’ordonnancement[GR5]dont le dictionnaire (avec les valuations entre parenthèses) s’écrit :

0 −→ 1 (2), 3 (6), 4 (4), 2 (4) 1 −→ 3 (3), 4 (5)

2 −→ 6 (7) 3 −→ 5 (6)

4 −→ 2 (2), 5 (4), 6 (3) 5 −→ 7 (2)

6 −→ 7 (3) 7 −→ 8 (4)

4.1.2.2 Résolution graphique

Dates au plus tôt et au plus tard :

0 : (0,0) 1 : (2,2) 2 : (9,9) 3 : (6,11) 4 : (7,7) 5 : (12,17) 6 : (16,16) 7 : (19,19) 8 : (23,23)

Chemin critique :

0−→1−→4−→2−→6−→7−→8

(41)

4.2 Méthode matricielle

4.2.1 Matrices et opérations symboliques

4.2.1.1 Définitions

Déf 4.4 Matrice symboliqueM du graphe valué :5 Mij =

vij si (xi, xj)∈U 0 si i=j

−∞ si (xi, xj)∈/ U Déf 4.5 Opérations symboliques associées àM :

a [+] b = max(a, b) a [*] b = a+b remplaçant6l’addition et la multiplication.

Prop 4.1 Les opérations symboliques vérifient les propriétés usuelles : 1. distributivité

2. matrice nulle :

−∞ −∞ −∞

−∞ −∞ −∞

−∞ −∞ −∞

3. matrice identité :

0 −∞ −∞

−∞ 0 −∞

−∞ −∞ 0

4.2.1.2 Propriétés Posons :

M(p) =M[p]

Ex 4.2 Montrer que :

[M(2)]ijest la longueur maximale des chemins de deux arcs entreietj.

C’est une conséquence immédiate de la formule :

C=A[∗]B ⇒ Cij = max(Aik+Bkj)

Prop 4.2 La matriceM(p)est la matrice des chemins maximaux deparcs.

Le nombrende sommets étant fini et le graphe supposé sans circuits, il est clair que les puissances successives deM finissent par se stabiliser.

On a donc les cas particuliers : – M(1) =M, matrice initiale ;

5 Dans le cas d’une longueur maximale pour fixer les idées. Pour une longueur minimale, on remplace

−∞par+etmaxparmin.

6avantageusement, car plus rapides.

(42)

– M(n−1) =R, appelée matrice de résolution.

Ex 4.3 On peut calculerRenO(logn)produits matriciels symboliques.

Car il suffit en pratique de calculerM[2], M[4], M[8], . . ., jusqu’à la stabilisation.

4.2.2 Ordonnancement par la méthode matricielle

SoitRla matrice de résolution. On observe que : – la ligneR(1,:)donne les dates au plus tôt ; – l’élémentR(1,n)est la longueur totale cherchée ;

– la colonneR(:,n)permet de calculer les dates au plus tard.

4.2.2.1 Calcul des marques

Si on veut éviter le calcul de R, on peut itérer un produit matrice-vecteur pour obtenir les dates.

Ex 4.4 La suite de vecteurs (ligne) :

V0 = M(1, :) Vk+1 = Vk[∗]M converge vers les dates au plus tôt.

Ex 4.5 La suite de vecteurs (colonne) :

Z0 = M( :,n) Zk+1 = M[∗]Zk

converge vers le complément (àR(1,n)) des dates au plus tard.

(43)

4.2.3 Exemple de résolution matricielle

On reprend le réseau d’ordonnancement[GR5]de la page 40.

Matrice symbolique (le-est un−∞) :

M =

0 2 4 6 4 − − − −

− 0 − 3 5 − − − −

− − 0 − − − 7 − −

− − − 0 − 6 − − −

− − 2 − 0 4 3 − −

− − − − − 0 − 2 −

− − − − − − 0 3 −

− − − − − − − 0 4

− − − − − − − − 0

Dates au plus tôt :

0 2 9 6 7 12 16 19 23

Dates au plus tard :

0 2 9 11 7 17 16 19 23

Matrice de résolution :

R=

0 2 9 6 7 12 16 19 23

− 0 7 3 5 9 14 17 21

− − 0 − − − 7 10 14

− − − 0 − 6 − 8 12

− − 2 − 0 4 9 12 16

− − − − − 0 − 2 6

− − − − − − 0 3 7

− − − − − − − 0 4

− − − − − − − − 0

On observe que la présence (dansM, et donc dansR) d’éléments au dessous de la diagonale est une indication de (mauvaise) qualité de la numérotation (on a signalé ci-dessus que cela activait un test de rebouclage dans l’algorithme de Ford).

(44)

Exercices

(45)

Graphes

Objectifs

Quelques résultats d’illustration de la théorie des graphes.

FIG. 1.1 – Exemple de graphe

1.1 Représentations d’un graphe

Déf 1.1 Dictionnaire du graphe :

1 : 2, 4

2 : 3

3 : 4, 5

4 : 2

5 : ⊘

Déf 1.2 Matrice associée :

B=

0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0

(46)

Déf 1.3 Matrice d’adjacence :

M =

1 1 0 0 0 0

−1 0 1 0 0 −1

0 0 −1 1 1 0

0 −1 0 −1 0 1

0 0 0 0 −1 0

Ex 1.1 Ecrire le principe d’algorithmes de conversion entre les différentes représenta- tions.

Commenter rapidement : l’encombrement (de la représentation choisie) et la com- plexité (de la fonction de conversion).

1.2 Cheminements dans un graphe

Ex 1.2 On se pose le problème de l’existence de chemins entre deux sommets donnés d’un graphe.

CalculerB2, B3, . . .et expliquer le résultat.

Ex 1.3 Pour vérifier l’absence de circuit dans un graphe, on applique l’algorithme sui- vant :

1. marquer tout sommet qui n’a pas de successeur ;

2. marquer tout sommet dont tous les successeurs sont marqués.

Quels en sont les terminaisons possibles ?

Ex 1.4 Quelle est la structure de données la plus adaptée ?

En particulier, si on représente le graphe par sa matrice associée, quel est le critère d’absence de circuit ?

Circuits hamiltoniens

Ex 1.5 On considère le graphe(X, U)formé par lesn2cases d’un échiquier avec des arêtes qui relient deux cases quand un cavalier peut aller directement de l’une à l’autre.

Montrer que sinest impair un cavalier ne peut pas passer par toutes les cases et revenir à son point de départ.

→Cette propriété équivaut à dire que :

Un graphe 2-coloriable n’admet pas de cycle de longueur impaire.

Ex 1.6 Montrer que le graphe associé au dodécaèdre est hamiltonien.

(47)

FIG. 1.2 – Dodécaèdre

1.3 Stabilité

Stabilité interne

Déf 1.4 Un sous-ensembleAde sommets est dit stable s’il ne contient pas d’arcs.

Déf 1.5 Le nombre chromatique est le nombre minimum de sous-ensembles stables réalisant une partition deX.

1.3.0.1 Exemple

Soit à colorier une carte de 8 pays, dont la matrice binaire représente le graphe de contiguïté :Aij = 1siietjsont limitrophes.

A=

• 1 1 0 0 0 0 0

• 1 1 0 0 0 0

• 0 1 0 0 0

• 0 0 1 0

• 0 0 1

• 0 0

• 0

Ex 1.7 Décrire un algorithme (raisonnable) de construction de sous-sensembles stables, donc de coloration.

Ex 1.8 On supose avoir déterminé, de façon systématique, les sous-sensembles stables suivants :

(48)

1 4 5

1 4 8

1 5 7

1 7 8

2 5 7 6

2 6 7 8

3 4 6 8

3 6 7 8

4 5 6

Comment peut-on conclure ?

1.4 Graphes particuliers

Aborescences

Ne pas confondre arbre (graphe non orienté, connexe, sans cycle) et arborescence, qui est un graphe orienté possédant une (racine).

A toute expression formée par composition de fonctions, on peut associer une ar- borescence de la manière suivante :

– on écrit l’expression en notation polonaise inverse, – les feuilles sont les constantes ou les variables, – les noeuds sont les symboles de fonction,

– les arcs relient deux fonctions qui sont composées.

Ex 1.9 Quelle est l’arborescence associée à : sin (x+y) +

Z a+1 a−1

(2p

x2+ 1 +y)dx

Ex 1.10 Comment est parcourue l’arborescence lors de l’évaluation ?

Graphes planaires

Thm 1.1 Si un graphe connexe est planaire et siS est le nombre de sommet,A le nombre d’arête etF le nombre de face on a (relation d’Euler) :

S+F−A= 2

Rappel :K5est le graphe complet à5noeuds, i.e. c’est la réunion du pentagone et du pentagone étoilé.K3,3est le graphe à(3 + 3)noeuds dont les arêtes relient trois maisons à trois puits.

Ex 1.11 Vérifier que les graphesK5etK3,3ne peuvent pas être planaires.

(49)

Flots et chemins dans un réseau

Objectifs Théorie des Graphes.

Flot maximum dans un réseau.

Problème du chemin optimal.

Rappelons qu’on note ω(x) l’ensemble des arcs incidents vers x(sommet ou ensemble de sommets) etω+(x)l’ensemble des arcs sortant dex.

2.1 Flot maximum

Déf 2.1 On appelle réseau un grapheG= (X, U): – orienté, connexe, sans boucle ;

– possédant une source a et un puits b ; – à arcsuvalués par des capacitésc(u)≥0.

Déf 2.2 Un flot est une fonctionϕ(u)à valeurs entières, définie surU, telle que : 1. ∀u ϕ(u)≥0

2. ∀u ϕ(u)≤c(u) 3. ∀x6=a, b P

u∈ω(x)ϕ(u) =P

u∈ω+(x)ϕ(u) (loi de Kirchhoff) La valeur du flot est la quantité qui arrive au puits b (c’est donc aussi égal à ce qui part de la source a).

ϕ(b) = X

u∈ω+(a)

ϕ(u) = X

u∈ω(b)

ϕ(u)

→On se propose de maximiser la valeur du flot.

Déf 2.3 Une coupe est un ensembleE d’arcs qui rencontre tout chemin allant de la source a vers le puits b.

(50)

La capacité d’une coupe est la somme des capacités de ses arcs : C(E) =c(ω(E)) = X

u∈ω(E)

c(u)

Prop 2.1 La valeur d’un flot ne peut dépasser la capacité d’une coupe.

Thm 2.1 Le flot est maximum s’il est égal à la capacité miminale d’une coupe.

Déf 2.4 Un flot est dit complet si chaque chemin allant de a à b comporte au moins un arc saturé.

Algo 2.1 L’algorithme de Ford-Fulkerson est une procédure de marquage dynamique des sommets d’une chaîne allant de a à b.

Déf 2.5 Une chaîne allant de a à b est dite améliorante si ses arcs progressifs sont non saturés et ses arcs régressifs non vides.

Exercice

Soit à réaliser un réseau de distribution d’eau (avec des quantités mesurées en nombres entiers), à partir de trois réservoirs (1,2,3), vers trois villes (4,5,6).

Il s’agit de maximiser la somme des quantités acheminées, compte tenu des limi- tations de capacité : de stockage de chacun des réservoirs (arcs partant de l’entrée a), de stockage en chacune des villes (arcs incidents sur la sortie b), de chaque conduite d’acheminement existante.

FIG. 2.1 –

Ex 2.1 Vérifier (avec un tracé du graphe ou sur une matrice) qu’un premier flot au jugé est compatible avec les contraintes.

Ex 2.2 Améliorer le flot jusqu’à le rendre complet (ϕ= 10).

Ex 2.3 Entamer une procédure de marquage et vérifier qu’on peut atteindre la sortie b.

Ex 2.4 Faire l’amélioration de l’algorithme de Ford-Fulkerson (alorsϕ = 11) et ca- ractériser la coupe qui en résulte.

(51)

Convergence

Ex 2.5 Montrer que (sous d’éventuelles conditions que l’on précisera) l’algorithme comporte un nombre fini d’étapes.

Ex 2.6 Montrer que l’arrêt définit une coupe.

Ex 2.7 Montrer qu’alors le flot est maximum.

2.2 Ordonnancement

Déf 2.6 On considère un réseau (dit graphe d’ordonnancement)G = (X, U)à arcs valués (par une duréevijappelée ici. . . longueur).

→Le problème est de trouver le chemin de longueur extrémale allant du sommet d’entrée a à la sortie b.

Algo 2.2 Algorithme de Ford : marquagetides sommets.

Déf 2.7 Les arcs(i, j)pour lesquels on a :tj−ti=vijjalonnent le chemin critique.

Exercice

Soit à réaliser un projet dont les étapes (successives ou concomittantes) sont re- présentées par un graphe d’étapes (valué par des durées) dont le dictionnaire s’écrit

1:

0 7→ 1 (2), 3 (6), 4 (4), 2 (4) 1 7→ 3 (3), 4 (5)

2 7→ 6 (7) 3 7→ 5 (6)

4 7→ 2 (2), 5 (4), 6 (3) 5 7→ 7 (2)

6 7→ 7 (3) 7 7→ 8 (4) Ex 2.8 Dessiner le graphe de ce projet.

Quelle est la structure de données suggérée par le dictionnaire du graphe ? Ex 2.9 Calculer les dates au plus tôt.

Déterminer la durée optimale du projet et calculer les dates au plus tard.

Ex 2.10 Déterminer le chemin critique.

Méthode algébrique

Déf 2.8 Matrice et opérations symboliques :[+], [*], . . .. Prop 2.2 Montrer que :M(p) =M[p]

1Les valuations figurent entre parenthèses.

Références

Documents relatifs

Il faut pour cela que tous les sommets du graphe soient de degré pair, sauf le sommet 1 et le sommet 10 ; ce n’est pas le cas (par exemple le sommet 6 a pour degré 3) donc il

Pour chacune des cinq affirmations suivantes, indiquer si elle est vraie ou fausse en justifiant la réponse.. Il est attribué un point par réponse exacte

Nous avons résolu pratiquement cette difficulté de la manière suivante, qui de plus améliore les performances de l'algorithme initial du point de vue du coût des graphes obtenus

Sur une autre conjecture : considérons un graphe fortement connexe, on appelle À tout ensemble d'arcs dont la suppression entraîne la disparition des circuits du graphe : si

Théorème : U ensemble E n , ordonné par Vinclusion des parties connexes d'un n-graphe est un treillis si et seulement si les p éléments de tout cycle de longueur p forment un

En justifiant, associer à chacun des 4 nuages de points qui suivent l’un des coefficients de corrélation, ainsi que les séries étudiées :.. rang mondial des écoles de

— Montrer que si l’on enlève une arête d’un cycle d’un graphe connexe alors le graphe reste connexe..

Commençons par importer la bibliothèque numpy afin de définir la fonction