Cours - LIFL

publicité
20052006
Algorithmique Avancée et Complexité
UFR IEEA
Master 1 d'Informatique
S.Tison
Graphes: Terminologie, Représentation
Les graphes apparaissent naturellement très fréquemment pour modéliser divers situations ou problèmes:
graphe de contrôle d'un programme, diagramme de classes, diagramme d'interactions, graphe des liaisons ferrovaires, graphe des congurations d'un jeu, graphe de dépendance de tâches, graphe d'un réseau, graphe
représentant une relation binaire, graphe d'une fonction, réseau de neurones, graphe du Web, représentation de
molécules...
Les dénitions
Remarque préliminaire: la terminologie concernant les graphes n'est pas tout à fait stable dans la littérature
... mais les diérences sont en général minimes. En particulier, la diérence de vocabulaire entre le cas dirigé
et non dirigé n'est pas toujours respectée scrupuleusement...
Dirigé...
Un graphe dirigé (directed graph, digraph) est un couple
(S, A). S
est un ensemble dont les éléments sont
S (A ⊂ S × S ) - donc
l'ordre a de l'importance, i.e. (a, b) et (b, a) sont diérents-. Les éléments de A sont appelés les arcs de G. Pour
un arc dirigé (v, w), v est la source ou l'origine, w est l'arrivée ou le but. Un arc (v, w) sera noté graphiquement
v → w ou dans le texte simplement vw.
Soit un un arc (v, w); c'est un arc sortant pour v , entrant pour w ; w est adjacent au sommet v ou successeur
de v , v est un prédécesseur de w . Les prédécesseurs et les successeurs d'un sommet sont ses voisins. Le nombre
appelés les sommets (ou noeuds ) du graphe,
A
est un ensemble de couples d'éléments de
d'arcs entrants d'un noeud est son degré entrant, son nombre d'arcs sortants est son degré sortant. Le degré
d'un sommet est la somme des degrés entrant et sortant, donc le nombre de ses voisins.
0,
entrant
i.e. sans prédécesseur, est appelé
Un noeud de degré
racine ou source du graphe - Attention,un graphe peut avoir 0 ou
plusieurs racines-. Le degré d'un graphe est le degré maximum de ses sommets.
...ou non?
Un graphe non dirigé (undirected graph) est un couple
est un ensemble dont les éléments sont appelés
S . Les
G. Dans une paire, l'ordre n'a pas d'importance, la paire {a, b} est la
même que la paire {b, a}. Une arête {v, w} sera notée graphiquement v − w ou dans le texte simplement vw .
Soit un sommet v ; les sommets w tels que {v, w} appartient à A sont appelés les voisins de v ou les sommets
adjacents à w . Le degré d'un sommet est son nombre de voisins.
les sommets (ou noeuds) du graphe,
éléments de
A
A
(S, A). S
est un ensemble de paires -donc non ordonnées- d'éléments de
sont appelés les arêtes de
Chemins, cycles
w est une séquence d'arcs (ou arêtes) v0 v1 , v1 v2 , ..., vk−1 vk avec v0 = v ,
k . Un sommet seul est considéré comme un chemin de longueur 0. w est
accessible ou atteignable à partir de v si il existe un chemin de v à w .
Un chemin v0 v1 , v1 v2 , ..., vk−1 vk dans un graphe dirigé est un circuit (parfois appelé cycle) si v0 = vk et
k > 1. Dans le cas non orienté, un chemin v0 v1 , v1 v2 , ..., vk−1 vk est un cycle si v0 = vk et si une arête n'apparaît
pas deux fois avec une orientation diérente. Par exemple v0 v1 , v1 v0 n'est pas un cycle dans le cas non orienté.
Un chemin dans un graphe de
vk = w.
v
à
La longueur du chemin est
Un graphe non dirigé est dit acyclique si il ne contient pas de cycles. Un graphe dirigé est dit sans circuit
si il ne sontient pas de circuits (noté souvent DAG pour directed ...acyclic graph).
Quelques classes de graphes
Un graphe non orienté est connexe, si et seulement si pour toute paire de sommets
entre
a
et
b.
a
et
b
il existe une chemin
Un graphe orienté est fortement connexe, si et seulement si pour toute paire de sommets
a
et
b,
il
existe un chemin entre
a
et
b
. Si on parle de graphe connexe pour un graphe orienté, on sous-entend que c'est
le graphe non orienté sous-jacent qui est connexe.
Un sous-graphe d'un graphe
G = (S, A)
G0 = (S 0 , A0 ) avec S 0 ⊂ S
S 0 .)
est un graphe
et
A0 ⊂ A
(par dénition
0
d'un graphe, A est un ensemble de couples (rep. paires) d'éléments de
Une composante (fortement) connexe d'un graphe (resp dirigé) est un sous-graphe (fortement) connexe
maximal pour la relation de sous-graphe.
Remarque:
(resp. orienté)
On peut redénir les notions de circuit ou cycle par: Un sous-graphe du graphe non orienté
g
est un cycle (resp. circuit) si et seulement siil est connexe et tous ses sommets sont de degré
2 (resp. de degré entrant 1 et de degré sortant 1).
Un graphe complet est un graphe non orienté dans lequel tous les sommets sont adjacents deux à deux.
Un graphe non orienté acyclique est une forêt ; si il est de plus connexe c'est un arbre.
Quelques extensions:
Un graphe pondéré est un triplet
(S, A, P )
où
(S, A)
est un graphe et
P
est une fonction qui associe à chaque
arc un poids (réel).
Un graphe étiqueté est un triplet
(S, A, P )
où
(S, A)
W
est un graphe et
est une fonction qui associe à
chaque arc une étiquette prise dans un alphabet d'étiquettes (cf les automates).
Représentation, taille...
Soit
G = (S, A)
un graphe. On note
n
le cardinal de S,
p
le cardinal de
A.
On suppose que
S = {v1 , ..., vn }
(donc qu'on accède à un sommet par son numéro).
Ramarque: on a donc
0 ≤ p ≤ n2 ,
dans le cas dirigé,
0 ≤ p ≤ n(n + 1)/2
dans le cas non dirigé.
Plusieurs représentations sont possibles, deux étant privilégiées:
•
Matrice d'adjacence
Un graphe peut être représenté par une matrice
(aji ), 1 ≤ i ≤ n, 1 ≤ j ≤ n
aji
n × n,
appelée matrice d'adjacence dénie par
A =
avec:
= 1 si vi vj ∈ A
= 0 sinon
Si le graphe est non dirigé, la matrice d'adjacence est symétrique (i.e.
La taille d'une telle matrice est
n2 ,
aji = aij ).
quelque soit le nombre d'arcs (ou arêtes)
p.
Cette structure sera donc
coûteuse si le graphe est peu dense (ou creux), i.e. comprenant peu d'arcs. Elle sera plus adaptée si il
est dense i.e. comprenant beaucoup d'arcs.
Par contre elle permet une réponse en temps constant à la question existe-t-il un arc entre
vi
et
vj ?.
Si on a un graphe pondéré on peut adapter la matrice d'adjacence: elle devient la matrice des poids où
cette fois-ci
•
aji
est le poids de l'arc
vi vj
si il existe, une valeur sentinelle sinon.
Listes d'adjacence
La deuxième représentation classique -et sans doute la plus utilisée- est celle par listes d'adjacence. Elle
s sa liste d'adjacence, c.à.d.
des sommets v tels que (s, v)
consiste en un tableau indexé par les sommets contenant pour chaque sommet
la liste d'informations sur les arcs (arêtes) sortant de
soit dans
A.
s,
par exemple la liste
Si le graphe est pondéré (resp. étiqueté) on pourra ajouter le poids de l'arc (resp. l'étiquette).
On peut bien sûr enrichir et ajouter des informations comme le nombre de ses successeurs, la liste des
prédécesseurs dans le cas dirigé...
L'ordre de grandeur de la taille d'une telle structure est donc
n ∗ p.
Cette représentation a donc l'intérêt
d'être plus compacte que la matrice d'adjacence quand le graphe est creux. Par contre pour rechercher si
il existe un arc entre
vi
et
vj ,
on doit balayer la liste d'adjacence de
2
vi :
ce n'est plus en temps constant.
Téléchargement