GRAPHES EN INFORMATIQUE
INTRODUCTION Les objets mathématiques appelés graphes apparaissent dans de nombreux domaines comme les mathématiques, la biologie, la sociologie, pour modéliser entre autres les relations binaires entre éléments d’un ensemble fini (on dispose d’une population et on souhaite savoir qui est en relation avec qui, par exemple). Géométriquement un graphe se présente comme un ensemble fini de points (les sommets) qui peuvent être éventuellement reliés par des segments (les arêtes )
EXEMPLE Les sommets sont numérotés de 1 à 8: 1 et 2 sont en relation, mais pas 1 et
EXEMPLE: GRAPHE PONDÉRÉ Il est possible d’affecter un poids aux arêtes (ex: les sommets représentent des villes et le poids de l’arrête joignant 2 sommets représente le distance entre les villes correspondantes.)
DÉFINITION ABSTRAITE D’UN GRAPHE La représentation des graphes par des schémas similaires aux précédents doit être précisée ; en effet il est clair que modifier la longueur des arêtes ou faire légérement pivoter une arête n ’a aucune incidence sur le type du graphe. Le point essentiel dans la définition est le nombre de sommets et les relations qui existent entre ces sommets. D’où la définition abstraite suivante: Définition: Définition: On appelle graphe abstrait (non orienté) la donnée d’un couple (S,A) où S est un ensemble fini et A est une partie de l’ensemble des paires de sommet {{s,t} | s et t S} ( notons bien que contrairement à un couple une paire n’est pas ordonnée ). L’ensemble S est appelé ensemble des sommets et A ensemble des arêtes. On dira que deux sommets s et t sont reliés si la paire {s,t} est dans A. En remplaçant paire par couple ( un couple est ordonné ) on obtient la notion d’arc orienté.
EXEMPLE D’ARC ORIENTÉ: Graphiquement l’arête (s,t) est représentée avec une flèche orientée de s vers t: Par exemple (4,7) est dans A mais pas (7,4) Par contre (4,2) et (2,4) sont toutes deux dans A
VOCABULAIRE RELATIF AUX GRAPHES
EXEMPLE DE SOUS-GRAPHE Sous graphe (S’,A’) avec: S’={2,3,8,5} A’={{2,3},{3,8},{8,5}}
REPRÉSENTATION INFORMATIQUE D’UN GRAPHE…
REPRÉSENTATION D’UN GRAPHE
PROBLÈME DU PLUS COURT CHEMIN
EXEMPLE TEST: On va déterminer un plus court chemin de a (=0) vers g (=6) pour le graphe suivant: b c ef g h i d a
PRINCIPE DE L’ALGORITHME:
ALGORITHME
ETAPE 1: b c ef g h i d a abcdefghiT 0(7,a) (3,a) (4,a) a,e
ETAPE 2 b c e f g h i d a abcdefghiT 0 (5,e) (3,a) (11,e) (4,a)(6,e) a,e,h
ETAPE 3 b c ef g h i d a abcdefghiT 0 (5,e) (3,a) (11,e) (4,a)(6,e) a,e,h, b
ETAPE 4: b c ef g h i d a abcdefghiT 0 (5,e)(6,b) (3,a) (11,e) (4,a)(6,e) a,e,h, b,c
ETAPE 5: b c ef g h i d a abcdefghiT 0 (5,e)(6,b) (3,a) (8,c)(11,e)(4,a)(6,e) a,e,h, b,c,d
ETAPE 6: b c ef g h i d a abcdefghiT 0 (5,e)(6,b) (3,a) (8,c)(11,e)(4,a)(6,e) a,e,h, b,c,d,i
ETAPE 7: b c ef g h i d a abcdefghiT 0 (5,e)(6,b) (3,a) (8,c)(11,e)(4,a)(6,e) a,e,h,b, c,d,i,f
ETAPE 8: b c ef g h i d a abcdefghiT 0 (5,e)(6,b) (3,a) (8,c)(8,e)(4,a)(6,e) a,e,h,b, c,d,i,f,g
PREUVE DE L’ALGORITHME
IMPLÉMENTATION On codera les graphes par leur matrice de poids On créera une liste père indexée par les sommets et initialisée avec tous les éléments égaux au sommet de départ (a sur notre exemple). On initialisera par n’importe quoi qui n’est pas un sommet. On créera une liste pi indexée par les sommets qui contiendra les valeurs des pi(s) (on l’initialisera avec des valeurs « infinies ») On utilisera la fonctions successeurMat(M,i) du TD On utilisera la classe set de python pour l’ensemble T( rappel : on peut créer un ensemble S en partant de la liste l de ses éléments puis en posant S=set(l) )