Listes d’adjacence [|[("b",4) ;("h",8)] ; [("a",4) ;("c",8) ;("h",11)] ;
[("b",8) ;("d",7) ;("f",4) ;("i",2)] ; ...|]
Matrice d’adjacence
0 4 0 0 0 0 0 8 0
4 0 8 0 0 0 0 11 0
0 8 0 7 0 4 0 0 2
... 0
0
0
0
0
0
Forward star { Sommets = ["a" ; "b" ; "c" ; "d" ; "e" ; "f" ;
"g" ; "h" ; "i"] ; Aretes = [("a",4,"b");
("a",8,"h"); ("b",11,"h") ; ("b",8,"c") ;
("c",7,"d",); ("c",4,"f") ; ("c",2,"i") ; ...]
}
Fig. 2 – Quelques repr´esentations du graphe de la fig. 1
Question 1 Soit G= (V, E)un graphe non orient´e `a nsommets. Justifier (rapidement) l’´equivalence des assertions suivantes :
1. Gest connexe et acyclique.
2. Gest connexe et comporte n−1arˆetes reliant des sommets distincts.
3. Gest acyclique et comporte n−1arˆetes reliant des sommets distincts.
4. Gest acyclique, mais ne le reste pas si on lui ajoute une arˆete.
5. Gest connexe, mais ne le reste pas si on lui enl`eve une arˆete.
6. deux sommets quelconques de Gont reli´es par un et un seul chemin ´el´ementaire.
2 Probl`eme de l’arbre couvrant
◮On se pose le probl`eme suivant : supposant Gconnexe, trouver
un sous-graphe couvrant G′qui soit un arbre, et de poids mini-
mal. Evidemment, cela revient `a chercher un sous-ensemble de A.
On identifie F⊂Aau sous-graphe (E′, F ) contenant les sommets
extremit´es d’arˆetes de F.
Question 2 On commence avec l’id´ee de partir d’un graphe sans
arˆetes, auquel on rajoute des arˆetes de notre graphe initial, jus-
qu’`a atteindre la condition 4 de la question 1. Soit un graphe
G= (V, E)acyclique, et e6∈ E. Montrer que G′= (V, E ∪ {e})
est acyclique si et seulement si erelie deux composantes connexes
de G.
3 Algorithme de Kruskal
◮On peut donc tirer de la question pr´ec´edente un algorithme de construction d’un arbre couvrant d’un graphe G= (V, E) : on part
d’un graphe G0= (V, ∅) sans arˆetes, et on r´eunit au fur et `a mesure les composantes connexes du graphe en ajoutant `a ce graphe
des arˆetes prises dans E. On oublie pour l’instant la minimalit´e de l’arbre.
Question 3 ´
Ecrire l’explosion d’un graphe en un ensemble de ses sous-graphes ´el´ementaires. ´
Evaluer sa complexit´e.
(explose : graphe →graphe list)
Question 4 ´
Ecrire une fonction fusion r´ealisant la fusion par l’arˆete ade deux graphes g1et g2d’une forˆet (liste de graphes), de
type graphe list →graphe →graphe →arete →graphe list.´
Evaluer sa complexit´e.
Question 5 ´
Ecrire cherche_arbre, de type int →graphe list →graphe, qui `a tout ´el´ement xet `a toute forˆet fassocie le
graphe de fauquel appartient x.´
Evaluer sa complexit´e.
Question 6 ´
Ecrire la recherche de la premi`ere arˆete d’une liste reliant deux arbres d’une forˆet
(cherche_areteK : graphe list →arete list →graphe * graphe * arete).
Question 7 En d´eduire une impl´ementation de la recherche d’arbre couvrant, et ´evaluer sa complexit´e.
(spanningtree : graphe →graphe).