1
Chaînes dans un graphe
Cycle dans un graphe
Connexité
Il est souvent nécessaire de savoir si l'on peut
aller d'un sommet à un autre en suivant des
arêtes.
Exemple d'utilité : Est-il possible de prendre le
train pour aller
De Bordeaux à Rome?
De Bordeaux à Oslo?
De Bordeaux à Reykjavik?
La notion de chaîne exprime cette idée.
Une chaîne dans un graphe est une suite alternée de
n
+ 1 sommets et
n
arêtes :
les extrémités d’une arête
a
i
sont les sommets
s
i-1
et
s
i
.
On dit alors que C relie
s
0à
s
n
ou encore que C est un
chemin entre
s
0à
s
n
Remarques :
Si
n
= 0, on obtient une chaîne sans arête
C
=
s
0.
Pour définir une chaîne, se donner seulement la suite
des arêtes, ou seulement la suite des sommets ne
suffit pas (pourquoi ?).
C= s0,a1, s1,a2, s2… , an, sn
Un cycle est une chaîne
dont les deux extrémités
coïncident (
s
0=
s
n
)
On peut choisir n’importe
quel sommet du cycle
comme sommet de
départ.
Exemple :
2
Une chaîne est
élémentaire
si ses sommets et ses
arêtes sont distincts deux à deux sauf les sommets
extrémités qui peuvent être égaux.
Dans ce cas il s’agit
d’un cycle élémentaire
La
longueur
d’une chaîne ou d’un cycle est le
nombre n d’arêtes
qui composent la chaine ou le
cycle.
Une
chaîne
peut-être réduite à
un seul sommet
, elle
est alors de
longueur nulle
. Cette chaine est aussi
un cycle de longueur nulle.
La connexité exprime la possibilité d'aller de
n'importe quel sommet du graphe à n'importe
quel autre sommet du graphe.
Informellement, un graphe est connexe s'il est en
un seul morceau.
Connexe Non connexe
Un graphe G est connexe si pour tous sommets s et
t de G il existe une chaîne qui relie s à t.
Une composante connexe d’un graphe G est un
sous ensemble maximal de sommets de G tels que
deux quelconques d’entre eux soient reliés par une
chaîne..
Connexe : 1 composante connexe 2 composantes connexes
Dans un graphe
G,
s'il existe une chaîne
entre deux sommets
s
et
t,
alors il existe
une chaîne
simple
entre
s
et
t.
La preuve est
constructive.
On prend une
chaîne non simple et on en supprime les
cycles pour
construire
une chaîne simple.
3
Soit C =
s
1,
a
1,
s
2, … ,
s
k
,
a
k
, s
k
+1 la chaîne.
Si C est simple, le travail est terminé.
Sinon, il y a deux sommets
s
i
et
s
j
pour lesquels
i < j
et
s
i
=
s
j
[où
i
et
j
sont choisis parmi les entiers de
1 à
k
+1].
On écrit donc :
C = s
1,
a
1,...,
s
i
, a
i
,..., s
j
, a
j
,... ,s
k
, a
k
, s
k
+1
On construit une chaîne
C'
plus courte en
supprimant de
C
la partie
a
i
,..., s
j
On obtient alors :
C'
=
s
1,
a
1,...,
s
i
,
a
j
, ...,
s
k
, a
k
, s
k
+1.
Reste à vérifier que
C'
est bien une chaîne (cela vient
de ce que
s
i
est bien une extrémité de l’arête
a
j
).
On observe que la chaîne C‘ ainsi obtenue est plus
courte, ce qui permet de conclure en invoquant le
principe d’induction (appliqué à la longueur des
chaînes).
Vérifier s'il existe une chaîne entre un sommet s et
un sommet
t
n'est pas forcément simple.
Pour y arriver, nous allons utiliser une technique
pour marquer et démarquer les sommets.
Les marques laissées sur les sommets agissent en
quelque sorte comme une mémoire d’un parcours
effectué dans le graphe.
Algorithme :
1. démarquer tous les sommets
2. marquer s
3. tant que
t
n'est pas marqué,
3.1 chercher une arête dont un sommet extrémité est
marqué et l'autre ne l'est pas
3.2 si une telle arête n'existe pas, renvoyer la valeur "faux
fauxfaux
faux"
3.3 sinon marquer l'extrémité non encore marquée
4. renvoyer la valeur "vrai"
4
La première phase consiste à se mettre dans un état de
départ adéquat afin d’assurer le bon fonctionnement
de l’algorithme.
L’action « renvoyer » correspond à la réponse attendu
et donné par l’algorithme, l’action « renvoyer »
implique que l’algorithme est arrivé à sa conclusion et
s’arête.
On suppose ici que la recherche d’une arête qui
satisfait la condition se fait en suivant une procédure
connue.
On suppose aussi que l’on a une façon facile de vérifier
si un sommet est marqué et de le marquer ou de le
démarquer le cas échéant.
Resterait encore à prouver que l’algorithme fait
bien le travail que l’on attend de lui. C’est-à-
dire:
Que l’on obtient éventuellement et à chaque
fois une réponse de sa part,
Et que cette réponse est bien la bonne (!).
s
t
u
L’algorithme visite d’abord le voisin ude squi se trouve au bas du
graphe puis remonte vers le haut à droite. Il sélectionne ensuite
voisin de uà gauche et en bas de savant de « trouver » t.
Étape 1 :
Étape 2 :
Étape 3.1 :
Étapes 3.2 et 3.3 :
5
Étape 1 :
|S|
unités de
temps.
Étape 2 : 1 unité de
temps.
Étape 3.1 : au pire, pour
chercher une arête «
bicolore » , on passe
d(s)
+ 1 unité de temps par
sommet s, ce qui coûte:
Σ
s
(
d(s)
+ 1) =
2|A| + |S|
= O(|A| + |S|)
unités de
temps.
Étapes 3.2 et 3.3 : 1 unité
de temps.
Au pire, on
recommence l'étape 3
pour chaque sommet,
donc
|S|
fois au total.
La complexité de
l'algorithme est donc
au pire de l'ordre de
|S|(|A| + |S|)
[en
négligeant les étapes
1, 2, 3.2, 3.3 et un
facteur 2]
Rq Il existe un
algorithme de
complexité
O(|A| +
|S|).
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !