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"