arbres/flots/coloration

Transcription

arbres/flots/coloration
Arbres
●
●
G = (X, U).
H = (X, T), T  U est une forêt si H ne contient pas
de cycle.
Si G est connexe et que aucune arête ne peut être
ajoutée sans créér de cycle, G est un arbre.
1
2
U
3
5
6
●
4
7
Tout arbre contient |X|-1 arêtes
L.L. - Graphes
1
Arbres
●
●
G = (X, U).
H = (X, T), T  U est une forêt si H ne contient pas
de cycle.
Si G est connexe et que aucune arête ne peut être
ajoutée sans créér de cycle, G est un arbre.
1
2
U
T
3
5
6
●
4
1
7
Tout arbre contient |X|-1 arêtes
L.L. - Graphes
6
2
3
4
5
7
2
Arbre couvrant de poids minimum
●
G = (X, U), avec poids associés aux arêtes.
Trouver, à partir d'un sommet S0 , un arbre
H = (X', T), X'  X, T  U t.q :
●
–
|X'| soit maximum et
–
∑ (wuT) soit minimum.
H est un arbre couvrant de poids minimum
10
15
1
2
5
20
10
30
4
6
L.L. - Graphes
10
50
30
7
2
35
45
3
10
15
1
OU ?
5
20
10
6
30
4
50
35
45
30
7
3
10
3
Arbre couvrant de poids minimum
●
Est-ce l'arbre couvrant de poids minimum ?
Algorithme de Kurskal ou Prim
∑ (wuT) = 160
15
1
2
50
4
6
L.L. - Graphes
10
5
20
10
∑ (wuT) = 165
30
7
15
1
2
35
5
30
OU ?
4
3
6
35
45
30
7
3
4
Arbre couvrant de poids minimum
Algorithme de Prim
●
●
A partir de S0, ajout d'un sommet à l'arbre à chaque
étape
–
une arête de connexion à l'arbre par sommet
–
N-1 étapes, N-1 arêtes
Même principe de marquage que avec Dijkstra
D[i], poids de l'arête de connexion u pour Si
a[i] = a.u, arête de connexion u pour Si
●
a = ∓1 suivant que Si est/n'est pas dans l'arbre
L.L. - Graphes
5
Prim - énoncé
Prim(Graphe G = (X, U), sommet S0)(Tableaux D, a)
1-Initialisation
D[0]= -
SiX, i0, D[i]  +
 Si  X, a[i]  -
2-Itération courante
choisir Si t.q
Si (D[i]=+) ou (SiX, a[i]>0) fin
Sinon a[i]  - a[i]
Pour toute arête u = (Si  Sj)
Si (wu < D[j]) et (a[j] < 0)
D[j]  wu
a[j]  -u
D[i] = min{j | a[j]<0}D[j]
L.L. - Graphes
6
Arbre couvrant de poids minimum
une étape
S1
S2
S3
S4
S5
S6
S7
D -
a +
35
-u1
15
u3

-
10
u2

-
30
-u5
35
2
20
10
6
u7
u1
u6
4
L.L. - Graphes
10
1
30
u2
u5
45
u8
7
5
50
u4
u9
u3 15
3
60
7
Arbre couvrant de poids minimum
une étape
S1
S2
S3
S4
S5
S6
S7
D -
a +
35
-u1
15
u3
45
-u8
10
u2
 30
- +u5
minimu
m
35
2
20
10
6
u7
u1
u6
4
L.L. - Graphes
10
1
30
u2
u5
45
u8
7
35
5
50
u4
u9
60
2
u3 15
3
20
10
6
u7
u1
u6
4
10
1
30
u2
u5
45
u8
7
5
50
u4
u9
u3 15
3
60
8
Arbre couvrant de poids minimum
résultat
S1
S2
S3
S4
S5
S6
S7
D -
a +
35
u1
15
u3
20
u6
10
u2
10
u7
30
u5
35
2
20
10
6
L.L. - Graphes
u7
4
1
u1
u6
10
30
u2
u5
45
u8
7
5
50
u4
u9
u3 15
3
60
9
Arbre couvrant de poids minimum
Applications
●
●
La construction/couverture de réseau (télephone,
routier/transport, informatique)
Souvent dans le plan
–
graphe complet ou
diag. Voronoi -> triangles de Delaunay -> Arbre
L.L. - Graphes
http://www-sop.inria.fr/prisme/fiches/Voronoi/index.html.fr
10
Arbre couvrant de poids minimum
exemples
STP (Spanning Tree Protocol) pour la diffusion
Ethernet – éviter les rebouclages
http://www.cs.berkeley.edu/~bonachea
●
L.L. - Graphes
11
Arbre couvrant de poids minimum
Applications
●
Définition de régions dans une image
arêtes entre pixels voisins pondérées par la
similarité entre les pixels (1)
–
Arbre de poids min/ simil max (2)
–
et coupe des arêtes de coût supérieur à un seuil
2
1
arbre
(1)
L.L. - Graphes
(2)
12
Problèmes de flot
réseau électrique
●
●
●
L'ensemble de l'électricité produite est consommée :
Il y a équilibre
entre les
producteurs
et les
consomateurs
à tout moment
Loi d'Ohm : les courants entrants et sortant
s'équilibrent à chaque intersection
L.L. - Graphes
13
Problèmes de flot
●
Flux: nombre fu associé à chaque arc
u  U de G=(X, U, C)
●
Flot: L'ensemble des flux sur G
constitue un flot ssi
(1) ∑
u  w+(i)
fu = ∑
u  w-(i)
fu
Loi de conservation
–
w+(i) : arcs sortants de Si
–
w-(i) : arcs entrants de Si
(2) u  U, fu  cu
Flux
admissible
L.L.
- Graphes
3
50
30
30
20
5
50
20
4
80
70
2
20
20
40
30
1
70
20
6
100
50
capacité flux
14
Graphe de flot
●
●
G=(X, U, C)
–
Sommet source S, sans arc entrant
–
Sommet puits P sans arc sortant
Flot de S à P, avec loi de conservation respectée
sauf pour S et P
–
Valeur de flot : f = ∑
10 9
f=9+10 S
15
10
L.L. - Graphes
u
(S)
fu = ∑
13 9
2
5
5
6
0
3
15 5
u
-1(P)
fu
4
14
14
P
capacité
flux
f=14+5
15
Flot maximum
●
Maximiser la valeur flot de S à P dans G
 Flot maximum dans G0
S
–
G0: ajout de l'arc u0, avec une capacité , dans G
–
Flot maximum dans G0  flux maximum pour u0
10
2
13
5
6
15
L.L. - Graphes
4
3
15
G
G0
14
S
P
2
10
13
5
6
15
flux
max
4
15
3
14
P
u0

16
Graphe d'écart
●
Soit un graphe de flot G=(X, U, C) et un flot f sur G
le graphe d'écart GD(f) = (X, UD ,CD) est défini par :
 arc u=(Si  Sj)  U
–
u+ = (Si  Sj)  UD, avec cD(Si  Sj) = cu - fu
–
u- = (Sj  Si)  UD, avec cD(Sj  Si) = fu
dans GD :
dans G :
2
13
capacité
9
flux
4
cu – f u = 4
2
4
fu = 9
capacités
L.L. - Graphes
17
Graphe d'écart
exemple
S
10
9
15
10
13 9
2
6
0
4
5
3
capacité flux
5
15 5
14
14
P
G
Flot maximum dans G
si il n'existe aucun
chemin S  P dans GD
Flot max ici ?
L.L. - Graphes
capacité
GD
1
S
9
10
5
4
2
4
9
5
6
3
14
5
P
10
18
Ford-Fulkerson - énoncé
FordFulkerson(Graphe G = (X, U, C))(Flot F)
1-Initialisation
Flot f  (0, 0, ..., 0)
2-Itération courante
Trouver un chemin A
de S  P dans GD(f)
Si A non trouvé fin
Flot max
L.L. - Graphes
Sinon
r  min u  XcD(u)
r: capacité résiduelle
ff+r
Si u+  X, fu  fu + r
Si u-  X, fu  fu - r
19
Ford-Fulkerson – une étape
S
10
9
15
10
13 9
2
6
0
4
5
3
capacité flux
L.L. - Graphes
G
5
15 5
14
14
construire GD(f)
P
f = 19
20
Ford-Fulkerson -- exemple
S
10
9
15
10
G
13 9
2
6
0
3
capacité flux
1
4
5
5
15 5
f = 19
capacité
GD
14
14
S
P
9
10
5
4
2
4
9
5
6
3
14
5
P
10
Trouver un chemin A
de S  P dans GD(f)
L.L. - Graphes
21
Ford-Fulkerson -- exemple
S
10
9
15
10
G
13 9
2
6
0
3
capacité flux
1
4
5
5
15 5
f = 19
capacité
GD
14
14
9
S
P
10
5
4
2
4
9
5
6
3
14
5
P
10
r  min u  AcD(u) = 1
L.L. - Graphes
22
Ford-Fulkerson -- exemple
S
10
9
15
10
13 9
2
6
0
3
S
15
10
2
1
14
14
6
0
S
4
10
5
4
15 6
G
14
14
4
2
ff+r
5
3
9
P
f = 19
13 10
flux
L.L. - Graphes
5
15 5
capacité
GD
4
5
capacité flux
10
10
G
4
9
5
6
3
14
5
P
10
Si u+  X, fu  fu + r
Si u-  X, fu  fu - r
P
f = 20
23
Ford-Fulkerson -- exemple
capacité
GD
1
Etape suivante :
mise à jour de GD
● à partir de G ou
●
à partir de GD
●
S
10
S
15
10
2
13 10
6
0
4
5
3
4
15 6
f = 20
L.L. - Graphes
2
G
14
14
P
5
14
5
5
P
10
3
capacité
GD
S
4
9
6
5
capacité flux
10
10
9
4
10
10
3
2
10
4
6
3
4
14
1
6
9
P
24
Problèmes
de flot
●
Quelle est la
capacité de
transfert entre
Brest et Nice ?
L.L. - Graphes
25
Flot maximum - variantes
●
Maximiser la capacité résiduelle r
–
●
Algorithme capa Max
Edmonds-Karp
Pas toujours optimal en nombre d'étapes
2
20
30
S
10
L.L. - Graphes
P
25
3
25
26
Flot maximum - variantes
●
Flot maximum avec coût minimum
–
Coûts associés aux arcs, en plus des capacités
Busaker et Gowen
2
10
S
90 €
18
13
120 €
160 €
3
L.L. - Graphes
4
120 €
70 €
15
14
P
27
Couplage maximal
●
Associer dans un graphe G=(X, U) les sommets 2
par 2 pour obtenir un couplage maximum :
–
Sommets dits compatibles reliés par des arêtes
–
Sélectionner un sous-ensemble E  U d'arêtes
non adjacentes (couples disjoints) t.q :
∑
●
uE
wu
est maximum
Si, u  U, wu = 1, couplage de cardinalité
maximale
L.L. - Graphes
28
Couplage de cardinalité maximale
exemple: maximiser le nombre de
duos
Cléopatre Iphigénie Juliette Fanny Chimène
Achille
César
Rodrigue
Roméo
Marius
L.L. - Graphes
Cl
Ip
Ju
Fa
Ch
Ac
Cé
Rd
Rm
Ma
29
Couplage de poids maximal
Problème d'affectation
●
●
Dans un graphe biparti
On cherche à maximiser ou minimiser le coût du
couplage, mesuré par le poids des arêtes
sélectionnées
40
●
12 24
16
11
87 13
54
45
31
48
Résolution par l'algorithme de Busaker et Gowen
(il existe aussi la méthode hongroise)
L.L. - Graphes
30
Couplage de poids maximal
Problème d'affectation
●
Exemple : qui fait quoi ?
coût E/h
Toto
Titi
Tata
L.L. - Graphes
Jardin
4
8
3
Maison Enfants
3
7
2
5
3
3
31
Flot maximum - applications
Flot Max / Coupe Min
●
Le flot maximum d'un graphe de flot est égale à la
coupe de taille/capacité minimale dans ce graphe
capacité
flux 50
40
3
30
30
L.L. - Graphes
2
20
20
40
40
Coupe de capacité 140
5
50
50
4
Coupes de taille 2
10090
1
70
50
6
100
80
32
Flot Max / Coupe Min
●
Où sont le flot
max et la coupe
min dans Brest
centre ?
http://www.mappy.fr
L.L. - Graphes
33
Coloration de graphes
●
On appelle k-coloration d'un graphe G = (X, U), la
répartition des sommets de X en k ensembles
disjoints X1, X2, ..., Xk t.q. :
–
–
●
 S  X, S  Xi  CS = i, i  [1..k] est la couleur
associée à S
 u = (S1  S2)  U, CS1 ≠ CS2. Deux sommets
adjacents sont de d'une couleur différente
Nombre chromatique : nombre de couleurs
minimum pour colorer l'ensemble du graphe
L.L. - Graphes
34
Exemples
Théorème
des 4
couleurs
Graphe biparti
Graphe de Pertersen
L.L. - Graphes
http://www.inria.fr/actualites/2005/images/b4couleurs.jpg
35
Nombre chromatique g(G)
Théorème de Brooks :
Pour un graphe G, g(G)  D
(D : degré max des sommets)
Exceptions – g(G) = D+1 :
● Cycle impair
● Graphe complet
g(S6) = 2
graphe G
g(G)
graphe complet Kn
cycle Cn, n>1
n
3
2
2
3
4
étoile Sn, n>1
roue Wn, n>2
L.L. - Graphes
g(K6) = 6
g(C5) = 3
g(W5) = 3
g(C6) = 2
g(W6) = 4
si n impair
si n pair
si n impair
si n pair
http://mathworld.wolfram.com/ChromaticNumber.html
36
Applications
●
Coloration générale
–
●
aigle
éléphant
zèbre
girafe
onyx
Couverture de graphes de tigre
compatibilité (classes
rhino
panda
disjointes d'éléments, par
ex. EDT, allocation de Animaux compatibles au zoo
ressources)
Théorème des 4 couleurs
–
Coloration de cartes
Téléphonie mobile , ....
Réduire les fréquences utilisées
pour couvrir une région par un
http://research.yale.edu/.../ar
ensemble de cellules
ticles-logic-graph.gif
L.L. - Graphes
37
Algorithme glouton - énoncé
coloriage(Graphe G = (X, U))(tableau C de couleurs)
1-Initialisation
couls  0
SiX, C[i]  0
Si  couleur c 1≤c≤couls t.q.
Sjadjacents(Si), C[j]  c
Alors
C[i]  c
2-Itération courante
Tant que
 SiX non colorié
L.L. - Graphes
Sinon
couls  couls + 1
C[i]  couls
38
Exemple
1
3
L.L. - Graphes
2
4
39
Exemple
1
3
L.L. - Graphes
2
4
40
Exemple
1
3
L.L. - Graphes
2
4
1
3
2
4
41
Exemple
1
3
L.L. - Graphes
2
4
1
3
2
4
1
3
2
4
42
Exemple
1
3
2
4
1
3
2
4
1
3
1
2
4
2
Est – ce optimal ?
3
L.L. - Graphes
4
43
Conclusion sur l'exemple
●
●
Heuristique
(donne une solution approchée)
–
Rapide (O(n))
–
Meilleure solution non garantie (depend de
l'ordre d'examen des sommets)
Algorithme optimal en O(en)
1
3
L.L. - Graphes
1
2
4
Ok
2
Non !
3
4
44
Coloration de graphe
Algorithme par énumération
●
Toutes les colorations en au plus M couleurs pour
G= (X, U)
–
Enumerer toutes les solutions (|X|M)
–
Sommets déjà colorés
Colorer le sommet suivant avec toutes les
couleurs disponibles
M=2
|X| = 5
S1
S2
S3
S4
S5
L.L. - Graphes
Arbre de recherche
45
Coloration de graphe
Enumération implicite
●
Dans certains cas, inutile de colorier tous les
sommets
1
???
3
2
S1
S2
S3
S4
S5
L.L. - Graphes
5
4
M=2
|X| = 5
???
46
Coloration de graphe
Enumération implicite
●
Dans certains cas, inutile de colorier tous les
sommets
1
2
S1
S2
S3
S4
S5
L.L. - Graphes
5
3
4
M=2
|X| = 5
S1
S2
S3
S4
S5
M=2
|X| = 5
Coupe
dans
l'arbre de
recherche
Solutions énumérées
implicitement
47
Coloration de graphe
Arbre de recherche
●
Toutes les colorations en au plus M couleurs pour
G= (X, U)
1
2
5
4
S1
S2
S3
S4
S5
L.L. - Graphes
3
M=2
|X| = 5
Que signifie cet arbre ?
48
Algorithme par énumération
●
●
C[i] = 0 ≤ c ≤ M+1
–
0 pour non colorié
–
M+1 si impossible à colorier
suivant(C, s) détermine la couleur suivant pour Ss
1
2
L.L. - Graphes
5
suivant(C, 2) :
3
S1
S2
4
2
1
0
0
0
2
3
0
0
0 49
Algorithme par énumération
●
●
C[i] = 0 ≤ c ≤ M+1
–
0 pour non colorié
–
M+1 si impossible à colorier
suivant(C, s) détermine la couleur suivant pour Ss
coloriage(Graphe G = (X, U), M)(tableau C de couleurs)
1-Initialisation
SiX, C[i]  0
s1
Aucune couleur attribuée
Sommet courant
fin  faux
L.L. - Graphes
50
Algorithme par énumération
2-Itération courante
suivant(C, s)
cas 1 : (C[s] ≤ M) et (s < |X|)
s  s+1
Avancer dans l'arbre
cas 2 : (C[s] ≤ M) et (s = |X|)
afficher(C)
Une solution trouvée
cas 3 : (C[s] > M) et (s > 1)
C[s]  0
s  s-1
Non coloriable
cas 4 : (C[s] > M) et (s = 1)
fin  vrai
L.L. - Graphes
Retour à la racine
51
Algorithme par énumération
déroulement
●
Dérouler l'algorithme sur le graphe suivant ...
1
2
5
4
L.L. - Graphes
3
#
Init
1
2
3
...
C
C[1] C[2] C[3] C[4] C[5] Cas
0
0
0
0
0
1
1
0
0
0
0
1
1
1
0
0
0
1
1
1
2
0
0
1
... ...
...
...
...
...
S
0
1
2
3
...
52
Coloration de graphe
application
●
●
●
Emploi du temps
contrainte de partage de ressource entre une tâche
Ti et une tâche Tj
Graphe G = (X, U)
–
X, ensemble des tâches Ti
–
u = (Ti  Tj)  U si Ti et Tj ne peuvent s'exécuter
simultanément
Trouver une affectation des tâches respectant les
contraintes d'exclusion, sachant que toutes les
tâches ont le même temps d'exécution
L.L. - Graphes
53
Coloration de graphe
exemple
●
●
Examens pour les étudiants :
–
a, b, c et d : info
–
a, e, f, g : bio
–
e, f, g : lettres
–
b, d, f : histoire
Minimiser le nombre de creneaux d'examens
–
formulation du problème d'optimisation
–
graphe associé
–
application
L.L. - Graphes
54
Coloration de graphe
exemple
●
●
Examens pour les étudiants :
–
a, b, c et d : info
–
a, e, f, g : bio
–
e, f, g : lettres
–
b, d, f : histoire
a b c d e
f
g
Info
Bio
Lettres
Hist.
Formulation du problème d'optimisation
–
Correspond à trouver le nombre chromatique du
graphe d'incompatibilité
L.L. - Graphes
55
Coloration de graphe
exemple
●
●
Examens pour les étudiants :
–
a, b, c et d : info
–
a, e, f, g : bio
–
e, f, g : lettres
–
b, d, f : histoire
a b c d e
f
g
Info
Bio
Lettres
Hist.
graphe associé
Info
Bio
L.L. - Graphes
Histoire
Lettres
incompatibilités
Bio Lettres Hist.
Info
Bio
Lettres
56
Coloration de graphe
exemple
●
●
Examens pour les étudiants :
–
a, b, c et d : info
–
a, e, f, g : bio
–
e, f, g : lettres
–
b, d, f : histoire
3 creneaux d'examens, info même temps que lettres
Info
Histoire
Bio
Lettres
L.L. - Graphes
57
Coloration de graphe
un autre exemple
Carré Latin (Sudoku)
●
–
Un carré A de taille N x N
contient sur chaque ligne et
colonne les nombres de 1 à N
une et une seule fois
●
9 couleurs (1 par nombre de la grille)
●
81 sommets de type (x,y)
–
2 sommets de la même ligne, 2 sommets de
la même colonne sont adjacents
–
2 sommets d'un même groupe sont
adjacents
L.L. - Graphes
58
Coloration de graphe
Coloriage des arêtes
●
Colorier les arêtes : 2 arêtes adjacentes ne peuvent
avoir la même couleur
1
B
3
A
D
2
B
C
4
Graphe G
L.L. - Graphes
A
C
D
Arête D adjacente donc
incompatible avec A, B et C
59
Coloration de graphe
Coloriage des arêtes
●
Colorier les arêtes : 2 arêtes adjacentes ne peuvent
avoir la même couleur
1
B
3
A
D
2
A
B
C
4
C
D
Graphe G' à colorier
L.L. - Graphes
60
Coloration de graphe
définition
●
[rappel] Nombre chromatique
–
●
Nombre minimum de couleurs pour colorier
les sommets d'un graphe.
Indice chromatique
–
Nombre minimum de couleurs pour colorier
les arêtes d'un graphe.
L.L. - Graphes
61
Coloration de graphe
preuve de l'existence d'une grille
●
●
Le coloriage permet de prouver que le carré latin de
la matrice A existe
Graphe biparti G = (X, U) avec X = L  C,
–
–
L correspond aux indices de lignes, C aux indices
de colonnes de A.
G est complet (x1  L, x2  C, (x1x2)  U)
L.L. - Graphes
62
Coloration de graphe
preuve de l'existence d'une grille
●
[propriété] Dans un graphe biparti, de degré
maximal des sommets ∆, l'indice chromatique est ∆.
–
●
x1  L adjacent à tous les sommets de C
→ clique, donc nombre chromatique dans G' = ∆
Dans le graphe de la matrice, ∆ = N. La coloration
se fait en N couleurs, correspondant chacune à un
des nombres du carré.
arête (xa  xb) est coloriée en couleurs[i],
 Aab = i
L.L. - Graphes
63
Coloration de graphe
un 3ème exemple
●
Mot de passe à cryptage public
–
Graphe 3-colorable public, qui sert de login
–
Coloriage sert de mot de passe
●
●
Générer un graphe 3-colorable
–
●
La difficulté (pb NP-complet) sert de preuve
Méthode inductive
Prouver que l'on sait le colorier sans révéler le
coloriage
–
Réutilisable
–
Pas de stockage sur le serveur
L.L. - Graphes
64
Coloration de graphe
générer un graphe 3-couleurs
●
●
A partir d'un graphe 3 couleurs
–
Ajouter un sommet, avec une couleur aléatoire
(couleurs 1 à 3)
–
Le connecter à un nombre aléatoire d'autres
sommets de couleurs différentes de la sienne
Graphe assez grand, nombre d'arêtes suffisant pour
rendre la solution introuvable en temps limité
L.L. - Graphes
65
Coloration de graphe
vérification de la capacité à colorier
●
●
Choix par l'observateur de 2 sommets au hasard
–
Dévoiler les 2 couleurs (elles doivent être
différentes si sommets adjacents)
–
Permuter aléatoirement toutes les couleurs (sans
changer de coloriage)
Au bout de r essais, la probabilité d'une erreur
approche 100% si le coloriage n'est pas connu.
–
Permuter les couleurs entre chaque test permet
de préserver le secret du coloriage global.
–
Tiers de confiance nécessaire pour faire les
permutations
L.L. - Graphes
66