350 likes | 517 Views
Chap. 1 INTRODUCTION. Beaucoup de problèmes de la vie courante, tels la gestion de réseaux de communication ou l'ordonnancement de tâches, correspondent à des structures relationnelles que l'on peut modéliser par des graphes.
E N D
Chap. 1 INTRODUCTION • Beaucoup de problèmes de la vie courante, tels la gestion de réseaux de communication ou l'ordonnancement de tâches, correspondent à des structures relationnelles que l'on peut modéliser par des graphes. • Informellement un graphe est un ensemble d'objets, appelés sommets et de relations entre ces sommets.
Exemples Brest Lille Berlin Sarrebrück Nantes Paris Lyon Toulouse Nice
Graphe non-orienté • Dans une carte des liaisons aériennes, les villes sont des sommets du graphe et l'existence d'une liaison aérienne entre deux villes est la relation du graphe. • Dans cet exemple, la relation est symétrique : on peut supposer que la compagnie aérienne assure des vols aller-retour. Dans ce cas on dit que le graphe est non-orienté. Si deux sommets s1 et s2 sont en relation, on dit qu'il existe une arête entre s1 et s2.
Graphe orienté i 4 Tant que i>0 Faire i i -1 print i
Dans cet exemple, la relation n'est pas symétrique Dans ce cas, on dit qu'on a un graphe orienté. Si deux sommets s1 et s2 sont en relation, on dit qu'on a un arc de s1 vers s2.
Ordonnancement Dans une organisation du travail où certaines tâches doivent être exécutées avant d'autres, on peut schématiser l'ordonnancement des tâches par un graphe où les sommets sont les tâches et où il existe un arc entre deux tâches ti et tj seulement si ti doit être terminée juste avant d'exécuter tj. Un des traitements intéressants sur un tel graphe est un tri topologique qui consiste à trouver un ordre des tâches tel que toute tâche ti soit exécutée avant toute tâche tjs'il existe un arc de ti à tj.
Exemple de l’ordonnancement Correction des copies corriger les copies rentrer les notes sur l'ordinateur Montrer les copies aux étudiants envoyer les notes à la scolarité
Définitions: graphe orienté Un graphe orientéG est un couple <S, A>, où S est un ensemble fini de sommets et où A est un ensemble fini de paires ordonnées de sommets appelées arcs.
Définitions : graphe non-orienté Un graphe non-orientéG est un couple <S, A>, où S est un ensemble fini de sommets et où A est un ensemble fini de paires de sommets appelées arêtes.
Extrémités • On note xy l'arc (x, y) ; x est l'extrémité initiale de l'arc, y est son extrémité terminale. On dit que y est un successeur de x et que x est un prédécesseur de y. • De même, on note x—y l'arête {x, y} ; x et y sont les deux extrémités de l'arête.
Application multivoque • L'application multivoque(i)={jS |(i, j) A} à tout élément iS fait correspondre une partie de S : l'ensemble de successeurs de i. • L'application multivoqueréciproque -1(i)={jS |(j, i) A} à tout élément iS fait correspondre une partie de S : l'ensemble de prédécesseurs de i.
Exemple • (s1) = {s5} ; (s2) = {s3, s5} ; (s3) = {s4} ; (s4) = {s1} ; (s5) = {} • -1(s1) = {s4} ; -1(s2) = {}; -1(s3) = {s2} ; -1(s4) = {s3} ; -1(s5) = {s1, s2} s5 s1 s3 s4 s2
Boucle • Une boucle est un arc dont les extrémités coïncident. L'arc a={x, x} est une boucle.
L’ordre d’un graphe G1 : Soit G = <S, A> un graphe. Si |S|=N alors le graphe G est d'ordre N. N(G1) = 3
Soit G = <S, A> un graphe. Le sous-graphe de G engendré par S' S est le graphe G' dont les sommets sont les éléments de S' et dont les arcs (resp. arêtes) sont les arcs (resp. arêtes) de G ayant leurs deux extrémités dans S'. Autrement dit, on ignore les sommets de S – S' ainsi que les arcs ayant au moins une extrémité dans S – S'. G2 sous-graphe de G2 engendré par {s2,s3,s4} s1 s2 s2 s3 s3 s4 s4
Le graphe partiel de G engendré par A' A est le graphe <S, A'> dont les sommets sont les éléments de S et dont les arcs (resp. arêtes) sont ceux de A'. • Autrement dit, on élimine de G les arcs (arêtes) de A – A'. • Graphe partiel de G engendré par {s2s3,s3s4} s2 s1 s2 s1 s3 s3 s4 s4
Deux arcs (resp. arêtes) d'un graphe orienté (resp. non orienté) sont dits adjacents s'ils ont au moins une extrémité commune. • u1 • u2 • u1 et u2 sontadjacents • Deux sommets d'un graphe non orienté sont dits adjacents s'il existe une arête les joignant. • Dans un graphe orienté, le sommet y est dit adjacent au sommet x s'il existe un arc xy. x y
y x • Un graphe est symétriquessi (i,j)A (j,i)A (0 ou 2 arcs entre 2 sommets distincts) • Un graphe est antisymétriquessi (i,j)A (j,i)A (Au plus un arc entre 2 sommets distincts) x y
Un graphe orienté (resp non orienté) est dit complet si pour tout couple de sommets (x, y), il existe un arc xy (resp. une arête x—y).
Le graphe est transitifssi (i,j)A et (j,k)A (i,k)A, i, j, k S. non-transitif transitif
Dans un graphe orienté, si un sommet x est l'extrémité initiale d'un arc u=xy, • on dit que l'arc u est incident à x vers l'extérieur. • Le nombre d'arcs ayant leur extrémité initiale en x, se note d°+(x) et s'appelle le demi-degré extérieur de x. • On définit de même les notions d'arc incidentvers l'intérieur et le demi-degré intérieur qui est noté d°-(x). • Dans un graphe orienté (resp. non orienté), on appelle degré d'un sommet x, et on note d°(x), le nombre d'arcs (resp. d'arêtes) dont x est une extrémité. Dans le cas d'un graphe orienté, on a : d°(x) = d°+(x) + d°-(x), pour tout sommet x. Dans l'exemple, le calcul des degrés du sommet x3 donne : d°+(x3)=2 ; d°-(x3)=3 ; d°(x3)=5. x1 x2 x3 x4
On appelle clique d'un graphe non orienté G tout ensemble de sommets C tel que deux sommets quelconques de C sont reliés par une arête. Clique 1 Clique 2
Matrices associées à un graphe Matrice d'incidence sommets-arcs C'est une matrice A = (aiu), i = 1, …, n ; u = 1, …,m à coefficients 0, +1, -1. n est le nombre de sommets et m est le nombre des arcs. • Chaque ligne correspond à un sommet et chaque colonne à un arc. • Si u=(i,j)A alors aiu=+1, aju=-1 et aku=0 pour ki et kj, kS
u1 1 2 u3 u4 u2 3 4 u5 u4 u3 u1 u2 u5 Matrice d'incidence sommets-arêtes (idem sauf qu' il y a des 1 à la place des –1)
Matrice d'adjacence (incidence sommets-sommets) On représente l'ensemble des arcs par un tableau des booléens; comme chaque arc est une paire ordonnée de sommets, le graphe est représenté par une matrice carrée de booléens, dite matrice d'adjacence., de dimension n * n si le graphe a n sommets. type GRAPHE = tableau[1..n,1..n] de booléens La représentation matricielle est pratique pour tester l'existence d'un arc (ou d'une arête) entre deux sommets : on accède directement à l'élément de la matrice (en un temps constant). Il est facile d'ajouter ou de retirer un arc (une arête) et de parcourir tous les successeurs ou prédécesseurs d'un sommet. Pour G* 1 2 3 4 1 2 3 4 Dans le cas où le graphe est non orienté, la matrice est symétrique.
Utilisation de listes d'adjacence Une autre représentation classique des graphes consiste à représenter l'ensemble des sommets et à associer à chaque sommet la liste de ses successeurs rangés dans un certain ordre. Ces listes sont appelées listes d'adjacence. Ces listes sont accessibles à partir d'un tableau S, qui contient pour chaque sommet, un pointeur vers le début de sa liste. 2 3 3 4 4
Connexité • Dans un graphe orienté G (resp. non orienté), on appelle chemin (resp. chaîne) de longueur l, une suite de (l+1) sommets (s0, s1, …, sl) tels que : pour tout i tel que 0 i l-1, sisi+1 est un arc (resp. une arête) de G. • On dit qu'il y a un chemin de longueur 0 de tout sommet vers lui-même. Ex. Chemin x1-x3 de longueur 2 : x1x2x3 x2 x3 x1 x4
On peut aussi définir de façon récursive un chemin de longueur l (l>0) allant du sommet x vers le sommet y comme : si l=1, un arc de x vers y • sinon la suite composée d'un arc de x vers un certain sommet z et d'un chemin de z vers y, de longueur l-1. • La définition récursive d'une chaîne de longueur l est analogue • Un chemin (resp. une chaîne) est dit élémentaire s'il ne contient pas plusieurs fois le même sommet. • Un circuit (resp. un cycle) est un chemin (resp. une chaîne) dont les extrémités coïncident. x1 x2 x3 x4
Fermeture transitive d'une application multivoque • On appelle fermeture transitive de l'application multivoque , l'application telle que : • i=1ii2…in-1 • ik représente l'ensemble des sommets que l'on peut atteindre à partir du sommet i par des chemins ayant exactement k arcs. • Tout chemin élémentaire a au plus n-1 arcs i = {sommetsqu'on peut atteindre à partir de i}. • i est ensemble des descendants de i. • i-1est l'ensemble des ancêtres de i.
Fermeture transitive d'un graphe • A tout graphe G=[S, A], on peut associer de façon unique un graphe transitif Ĝ = [S, Â], appelé fermeture transitive, où Â est défini par la relation d'appartenance suivante : • (i,j)Â il existe dans G un chemin de i vers j. • Si p+(i) est l'ensemble des sommets accessibles à partir de i par un chemin de cardinalité p alors Ĝ peut être défini par l'application multivoque + suivante : • +=1+(i) 2+(i) …n-1+(i), iS. • + représente l'ensemble des descendants de i. • - représente l'ensemble des ancêtres ou ascendants de i.
-équivalence : Deux graphes G et G' sont dits -équivalents s'ils ont la même fermeture transitive. • -minimilité : G = [S, A] est -minimal si, quel que soit uA, et G' = [S, A – {u}], alors (G)(G') ; i.e. que si l'on supprime un arc quelconque de G, le graphe partiel obtenu n'a plus la même fermeture transitive que G. • Connexité • Un graphe orienté est dit fortement connexe si pour toute paire ordonnée de sommets distincts (u, v), il existe un chemin de u vers v et un chemin de v vers u. • Un graphe non orienté est dit connexe si pour toute paire de sommets distincts (u, v), il existe une chaîne reliant u et v.
On appelle composante fortement connexe d'un graphe orienté un sous-graphe fortement connexe maximal, c.a.d. un sous-graphe fortement connexe qui n'est pas strictement contenu dans un autre sous-graphe fortement connexe. On appelle composante connexe d'un graphe non orienté un sous-graphe connexe maximal. x5 x1 x3 x4 x2 x6 x5 x1 x3 x4 x2 x6 • Le graphe G contient 2 composantes fortement connexes : x1x2x3 et x4x5x6
Graphe réduit : On appelle graphe réduit du graphe G = [S, A] le graphe Ĝ =[Ŝ, Â] dont l'ensemble Ŝ des sommets est en bijection avec l'ensemble des composantes fortement connexes et (x, y)Â si et seulement si il existe un arc u dont l'extrémité initiale appartient à la composante fortement connexe correspondant à x et l'extrémité terminale appartient à la composante fortement connexe correspondant à y. X4 x2
Graphes sans circuits Méthode 1 Un graphe est sans circuit si la matrice d'adjacence M associée à sa fermeture transitive ne possède aucun 1 sur la diagonale. Méthode 2 L'algorithme : Tant que c'est possible, supprimer du graphe un sommet sans prédécesseur. Si on réussit à supprimer tous les sommets, le graphe est sans circuit.
Un graphe sans circuit On supprime : 1, 4, 2, 5, 3 Un graphe avec circuit On supprime 1, et on ne peut plus rien supprimer x3 x2 x1 x5 x4 x2 x1 x3 x5 x4