Théorie des graphes

publicité
Mathématique (graphes)
Théorie des graphes
La théorie des graphes est une théorie informatique et mathématique. Un graphe permet de
décrire un ensemble d'objets et leurs relations, c'est à dire les liens entre de tels objets.
Définition
Un graphe est un ensemble de points nommés sommets (ou nœuds) reliés par des traits ou
flèches nommées arêtes (ou arcs). L'ensemble des arêtes entre nœuds forme une figure similaire
à un réseau.
Les arêtes peuvent être orientées (flèches) ou non orientées (traits). Si les arêtes sont orientées,
la relation va dans un seul sens et est donc asymétrique, et le graphe lui-même est dit orienté.
Sinon, si les arêtes sont non orientées, la relation va dans les deux sens et est symétrique, et le
graphe est dit non orienté.
ba
aa
ba
da
aa
ca
Graphe simple orienté
da
ca
Graphe simple non orienté
Un graphe est simple s'il n'a ni arêtes multiples (c’est-à-dire, qu’il n’existe qu’un seul arc de x
vers y, mais il peut exister un arc de y vers x si le graphe est orienté) ni boucles (arête d’un
sommet vers lui-même), il peut alors être défini tel qu’un graphe G = (V, E) où
 V est un ensemble (fini) d'objets. Les éléments de V sont les sommets du graphe.
 E est sous-ensemble de V V. Les éléments de E sont les arêtes du graphe (ou arcs pour
les graphes orientés).
Une arête e d’un graphe simple non orienté est une paire e={x,y} de sommets. Les sommets x
et y sont les extrémités de l'arête. La notation varie pour un graphe simple orienté.
Graphe orienté :
V = {a, b, c, d}
E = {(a,b), (b,a), (b,c), (c,d), (d,b)}
Graphe non orienté :
V = {a, b, c, d}
E = {{a,b}, {b,c}, {c,d}, {d,b}}
Degré
 Un graphe est d’ordre n s’il comporte n sommets.
 Deux sommets x et y sont adjacents s’il existe l'arête (x,y) dans E. Les sommets x et y
sont alors dits voisins.
 Une arête est incidente à un sommet x, si x est l'une de ses extrémités.
 Le degré d'un sommet x de G (non orienté) est le nombre d'arêtes incidentes à x. Il est
noté d(x).
Pour un graphe simple non orienté le degré de x correspond également au nombre de
sommets adjacents à x.
 Le degré entrant (d–) est le nombre d’arcs allant vers le sommet x de G (orienté) alors
que le degré sortant (d+) est le nombre d’arcs partant de x.
Graphe orienté :
n=4
Sommet b
Voisins : a, c, d
d– (b) = 2
d+ (b) = 2
Graphe non orienté :
n=4
Sommet c
Voisins : b, d
d– (c) = 1
d+ (c) = 1
Sommet b
Voisins : a, c, d
d (b) = 3
Sommet c
Voisins : a, b, d
d (c) = 2
 Pour un graphe simple d'ordre n, le degré d'un sommet est compris entre 0 et n-1 (entier).
 Un sommet de degré 0, n’est donc relié à aucun sommet, il est dit isolé
Chaines et chemins
Graphe orienté :
Graphe non orienté :
Chaine : Un chemin x à y est définie par une Chemin : Une chaine x à y est définie par une
suite de sommets menant du sommet x au suite de sommets menant du sommet x au
sommet y. Il sera noté p.
sommet y. Elle sera notée p.
Longueur : Correspond au nombre d’arcs Longueur : Correspond au nombre d’arêtes
parcourus par le chemin.
parcourues par la chaine.
Exemple : Aller de c à b
Exemple : Aller de c à b
p = (c, d, b), longueur = 2
p = (c, b), longueur = 1
Chemin (chaine) élémentaire : Ne passe pas deux fois par un même sommet, c'est-à-dire dont
tous les sommets sont distincts.
Chemin (chaine) simple : Ne passe pas deux fois par un même arc (arête), c'est-à-dire dont
tous les arcs sont distincts.
Un circuit (graphe orienté) ou un cycle (graphe non orienté) désigne, respectivement, un
chemin ou une chaîne simple dont les deux extrémités sont identiques.
La longueur d’un chemin est la somme des poids des arêtes parcourues dans un graphe
pondéré. La distinction entre le poids et la longueur est valable pour une chaine, il faut donc
bien veiller à différencier une chaîne de poids minimal d'une chaîne la moins longue par
exemple.
Graphe pondéré
Un graphe pondéré est un graphe auquel on adjoint une fonction de valuation. Un graphe
peut être pondéré/valué sur ses sommets comme sur ses arêtes. Le fait de passer par un sommet
ou une arête dans un graphe pondéré a donc un coût (poids).
On note p(x) le poids du sommet x, et p(i, j) le poids d’une arête (i, j). 2
1
Exemple :
4
ba
ba
da
da
2
1
2
1
aa
aa
ca
ca
5
Graphe A
Graphe B
A = (a, b, d)
A = (a, b, d)
p(A) = p({a,b}) + p({b,d}) = 2 + 4
p(A) = p(a) + p(b) + p(d) = 1 + 2 + 1
p(A) = 6
p(A) = 4
B = (a, b, c, d)
B = (a, b, c, d)
p(B) = p({a,b}) + p({b,c}) + p({c,d})
p(B) = p(a) + p(b) + p(c) + p(d)
p(B) = 2 + 1 + 2
p(B) = 1 + 2 + 5 + 1
p(B) = 4
p(B) = 9
Graphe connexe
Un graphe G = (V, E) est dit connexe s’il est non orienté, et que quelque soient les sommets
x et y de V, il existe une chaine de x vers y. On parle de graphe fortement connexe dans le cas
orienté. Un sous-graphe connexe maximal d'un graphe non orienté quelconque est une
composante connexe de ce graphe. Un sous-graphe est un graphe contenu dans un autre graphe,
un graphe H = (VH, EH) est un sous graphe de G = (VG, EG) si VH ⊂ VG et EH ⊂ EG.
Graphe connexe :
Graphe non connexe avec deux sous-graphes connexes :
ba
aa
ca
da
ea
fa
ga
aa
ca
ba
da
ha
Graphe complet
Un graphe complet est un graphe simple dont tous les sommets sont adjacents, c'est-à-dire
que tout couple de sommets disjoints est relié par une arête. Si le graphe est orienté, on dit qu'il
est complet si chaque paire de sommets est reliée par exactement deux arcs (un dans chaque
n(n-1)
sens). Le nombre d’arêtes de Kn est
.
2
Exemples :
K1
Graphe singleton
0 arête
K2
1 arêtes
K3
Graphe triangle
3 arêtes
K4
Graphe tétraédrique
6 arêtes
K5
Graphe pentacle
10 arêtes
K6
15 arêtes
Les graphes complets sont hamiltoniens, symétriques et réguliers.
Graphe hamiltonien
Un graphe hamiltonien est un graphe possédant au moins un cycle passant par tous les
sommets une fois et une seule. Un tel cycle élémentaire est alors appelé cycle hamiltonien.
Exemple :
En rouge : cycle hamiltonien.
Chaine hamiltonienne : Chaine passant une fois et une seule par chaque sommet
Graphe semi-hamiltonien : Graphe contenant une chaine hamiltonienne mais pas de cycle
hamiltonien.
Graphe hamiltonien-connexe : Graphe dont pour toute paire de ses sommets, il existe une
chaîne hamiltonienne entre ces sommets.
Il n’existe pas de condition nécessaire et suffisante pour déterminer si un graphe est
hamiltonien.
Graphe eulérien
Un graphe eulérien ne doit pas être confondu avec un graphe hamiltonien. Un graphe peut
être eulérien ou hamiltonien, les deux ou aucun des deux. Un graphe est eulérien s’il respecte
la propriété suivante :
 On peut distinguer une extrémité initiale et une extrémité finale de chaque arête, et
ordonner l'ensemble des arêtes du graphe de telle façon que l'extrémité finale d'une arête
corresponde à l'extrémité initiale de l'arête qui lui succède dans l'ordre (où la première
arête de l'ordre succède à la dernière).
Cela revient donc à passer par chaque arête une et une unique fois, et à revenir sur le sommet
de départ. Un tel cycle est nommé cycle eulérien.
Théorème d’Euler :
Un graphe connexe est eulérien si et seulement si chacun de ses sommets est incident à
un nombre pair d'arêtes.
Graphe symétrique
Un graphe est symétrique (ou arc-transitif) si pour deux paires quelconques de sommets
reliés par une arête, tel que {x1, x2} et {y1, y2}, il existe un automorphisme de graphe.
Un automorphisme de graphe est une bijection de l'ensemble des sommets vers lui-même qui
préserve l'ensemble des arêtes. On peut voir l'automorphisme de graphes comme un
isomorphisme de graphes du graphe dans lui-même.
Exemple d’isomorphisme entre deux graphes :
fa
a
c
b
a
a
a
ja
ia
ha
ea
da
ga
Graphe B
Isomorphisme entre A et B :
f(a)
= f(f)
f(b) = f(g)
f(c)
= f(h)
f(d) = f(i)
f(e)
= f(j)
L’automorphisme et l’isomorphisme peuvent également être définis dans des graphes
orientés ou pondérés ; dans ces cas on demande à ce que la bijection préserve aussi l'orientation
et/ou la pondération.
Exemple d’un graphe symétrique :
aa
ca
ca
aa
Symétrie :
ea
ea
ba
da
b
d
Graphe A
a
a
Graphe régulier
Un graphe est régulier quand tous ses sommets ont le même nombre de voisins, c'est-à-dire
le même degré.
Graphe 0-régulier
Graphe 1-régulier
Graphe 2-régulier
Graphe 3-régulier
Graphe cubique
Graphe planaire
Un graphe planaire est un graphe qui a la particularité de pouvoir se représenter sur un plan
sans qu'aucune arête (ou arc) n'en croise une autre.
Exemples :
Est planaire :
N’est pas planaire :
//

Un graphe fini est planaire si et seulement s'il ne contient pas de sous-graphe qui est une
expansion de K5 (5-clique, soit la clique à 5 sommets) ou K3,3 (le graphe complet biparti
à 3+3 sommets).
1
Une clique d'un graphe non orienté est un
3
2
sous-ensemble des sommets de ce graphe dont
xc1
5
le sous-graphe induit est complet, c'est-à-dire
4
que deux sommets quelconques de la clique Graphe possédant une 3-clique, K3, (les 3
sont toujours adjacents.
sommets sont tous adjacents deux à deux).
Un graphe est dit biparti s'il existe une
partition de son ensemble de sommets en deux
sous-ensembles U et V telle que chaque arête
V
U
ait une extrémité dans U et l'autre dans V.
U
Un graphe est dit biparti complet (ou
biclique) s'il est biparti et contient le nombre
V
maximal d'arêtes.
K3,2
Un stable, est l’inverse d’une clique, il s’agit d’ensemble de sommets deux à deux non
adjacents. Dans xc1 le graphe possède 5 stables d’ordre 2 : {1,3}, {1,4}, {1,5}, {2,4}, {2,5}.
Matrice d’adjacence
Une matrice d'adjacence pour un graphe fini G à n sommets est une matrice de dimension
n n dont l'élément non-diagonal aij est le nombre d'arêtes liant le sommet i au sommet j.
L'élément diagonal aii est le nombre de boucles au sommet i.
Exemple :
ba
da
ea
da
ea
ba
fa
aa
fa
aa
ca
ca
Graphe non orienté
a
b
c
d
e
f
a
1
1
0
0
0
0
b
1
0
1
0
0
0
c
0
1
0
1
0
0
d
0
0
1
0
1
1
Graphe orienté
e
0
0
0
1
0
0
f
0
0
0
1
0
0
a
b
c
d
e
f
a
0
0
0
0
0
0
b
1
0
0
0
0
0
c
1
0
0
0
0
0
d
1
0
0
0
0
0
e
0
0
0
1
0
0
f
0
0
1
0
1
0
Pour les graphes orientés, la ligne correspond au sommet de départ et la colonne à celui
d’arrivé. Pour les non orientés, on peut observer une symétrie autours de la diagonale.
Algorithme de Dijkstra
L'algorithme de Dijkstra permet de résoudre le problème du plus court chemin, il calcule
des plus courts chemins à partir d'une source dans un graphe orienté pondéré par des réels
positifs. On peut aussi l'utiliser pour calculer un plus court chemin entre une source et un
sommet d'arrivée.
Algorithme :
 Il s'agit de construire progressivement un sous-graphe dans lequel sont classés les
différents sommets par ordre croissant de leur distance minimale au sommet de
départ. La distance correspond à la somme des poids des arcs empruntés.
 Au départ, on considère que les distances de chaque sommet au sommet de départ sont
infinies sauf pour le sommet de départ pour lequel la distance est de 0. Le sous-graphe
de départ est l'ensemble vide.
 Au cours de chaque itération, on choisit en dehors du sous-graphe un sommet de
distance minimale et on l'ajoute au sous-graphe. Ensuite, on met à jour les distances des
sommets voisins de celui ajouté. La mise à jour s'opère comme suit : la nouvelle distance
du sommet voisin est le minimum entre la distance existante et celle obtenue en ajoutant
le poids de l'arc entre sommet voisin et sommet ajouté à la distance du sommet ajouté.
 On continue ainsi jusqu'à épuisement des sommets (ou jusqu'à sélection du sommet
d'arrivée).
Exemple : Chemin le plus court de x à y :
2
9
aa
2
8
xa
2
ga
6
3
Étape initiale
x(0)
a(2x)
a
∞
2 (x)
b(3x)
ea
ha
3
1
ya
2
5
ca
ba
x
0
1
da
4
fa
b
∞
3 (x)
c
∞
∞
d
∞
∞
e
∞
∞
f
∞
∞
g
∞
8 (x)
h
∞
∞
y
∞
∞
3 (x)
∞
2+9
11 (a)
∞
∞
8 (x)
∞
∞
∞
11 (a)
∞
∞
3+6
8 (x) < 9 (b)
∞
∞
10 (g)
10 (g)
∞
∞
∞
∞
8 (x)
g(8x)
c(9g)
h(10g)
d(11a)
e(12d)
9 (g)
11 (a)
11 (a)
11 (a)
∞
∞
∞
12 (d)
∞
∞
15 (h)
15 (h)
12 + 2
15 (h)
14 (e)
∞
f(14e)
Distance entre x et y : 18
18 (e)
Chemin à l’envers (suivre les parenthèses) : y – f – e – d – a – x
Plus court chemin : x, a, d, e, f, y
1
9
da
ea
aa
2
2
8
2
ga
xa
ha
2
3
6
5
1
3
ca
fa
ba
ya
4
Nombre chromatique
Colorer un graphe signifie attribuer une couleur à chacun de ses sommets de manière que
deux sommets reliés par une arête soient de couleur différente. L'utilisation du nombre minimal
de couleurs est le nombre chromatique.
Le nombre chromatique n’est défini que pour les graphes sans boucles et ne prend pas en
compte la multiplicité des arêtes (revient donc à considérer des graphes simples).
Théorème :
Le nombre chromatique d’un graphe est inférieur ou égal à d + 1, où d est le plus grand
degré des sommets.
Propriétés :
 Tout graphe contenant un triangle complet nécessite au moins trois couleurs.
 Tout graphe contenant un quadrilatère complet nécessite au moins quatre couleurs.
Algorithme et exemple :
ca
ba
ga
ha
aa
fa
ea
da
 On trie les sommets dans l’ordre décroissant de leur degré (sans tenir compte de l’ordre
pour les sommets de même degré) :
d(b)
d(d)
d(f)
d(a)
d(e)
d(g)
d(h)
d(c)
3
3
3
2
2
2
2
1
 On choisit une couleur pour le premier sommet du tableau, et on le colorie avec ainsi
que tous les sommets qui ne lui sont pas adjacents et qui ne sont pas adjacents entre eux
(en suivant l’ordre du tableau) :
d(b)
d(d)
d(f)
d(a)
d(e)
d(g)
d(h)
d(c)
3
3
3
2
2
2
2
1
ca
b
ga

ha
aa
f
ea
da
 On réitère le processus jusqu’à la coloration de tous les sommets du graphe :
d(b)
d(d)
d(f)
d(a)
d(e)
d(g)
d(h)
d(c)
3
3
3
2
2
2
2
1
b
a
c
g
h
f
e
d
Le nombre chromatique de ce graphe est donc : 3
3 <= d +1  3 <= 4
Téléchargement