diff --git a/README.md b/README.md index acf3139..772900f 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ # Graphes (R2.07) ## Cours/TD -| Semaine | Cours | TD | +| Semaine | Cours | TD | | -------------------- | ------------------------------------------------ | ----------------------- | | 1 : 31/01 | [Pages 1 à 47](graphes.pdf) | [td1](./td/TD1.pdf) | | 2 : 26/02 | [Pages 48 à 94](graphes.pdf) | [td2](./td/TD2.pdf) | + +| 3 : 4/03 | [Pages 95 à 150](graphes.pdf) | [td3](./td/TD3.pdf) | +| 4 : 11/03 | [Pages 151 à 194](graphes.pdf) | [td3](./td/TD3.pdf) | +| 5 : 18/03 | [Pages 195 à 234](graphes.pdf) | [td4](./td/TD4.pdf) | diff --git a/TP/TP4.md b/TP/TP4.md new file mode 100644 index 0000000..625e1a9 --- /dev/null +++ b/TP/TP4.md @@ -0,0 +1,67 @@ +TP Graphes 4 : Plus Court Chemin et Arbre Recouvrant Minimal +============ + +Le TP est prévu pour être fait en utilisant le codage des graphes à l'aide de matrices d'adjacence. +Pour plus de clarté, vous pouvez utiliser une nouvelle classe, en copiant les structures et fonctions nécessaires depuis les TPs précédants. + + +- - - - - +Exercice 0 : Graphes valués +---------- + +Nous avons enrichi nos graphes avec une valuation des arêtes. + +**Question :** + +Comment intégrer cela à notre structure de données ? + + +Quel fonction(s) faut-il modifier pour prendre en compte cet enrichissement ? + +**Question :** + +Créez une nouvelle classe GraphesValues.java contenant la structure et les primitives nécessaires à la manipulation des graphes valués. + + +- - - - - +Exercice 1 : Algorithme de Dijkstra +---------- + + + +L'algorithme de Dijkstra renvoie deux données : la fonction d donnant la distance minimale entre la source et un sommet, et la fonction père donnant la direction à prendre pour atteindre cette distance minimale. + +**Question :** + +Une fonction des sommets vers un entier (ou un autre sommet) sera représentée par un tableau où la case i contient la valeur de la fonction pour i. + +Nous souhaitons cependant renvoyer deux fonctions. Comment modéliser cela ? + +**Question :** + +Implémentez l'algorithme de Dijsktra, que je redonne ci-dessous : + +![Algorithme de Dijkstra](dijkstra.png) + + +**Question :** + +Testez votre algorithme en reprenant le graphes des frontières avec des valuation de votre choix. +Vérifier à la main que l'algorithme effectue les bons calculs. + + + +- - - - - +Exercice 2 : Algorithme de Prim +---------- + +Pour simplifier l'implémentation, on se contentera d'afficher sur la sortie standard les arêtes sélectionnées. On renverra tout de même la valuation totale de l'arbre couvrant. + +![Algorithme de Prim](prim.png) + + +**Question :** +Implémentez l'algorithme de Prim. Il n'y a pas besoin de modéliser l'ensemble T puisque l'on va l'afficher sur la sortie standard tout au long de l'algorithme. + +**Question :** +Testez et vérifiez votre implémentation sur un exemple, au hasard le graphe des frontières. \ No newline at end of file diff --git a/TP/dijkstra.png b/TP/dijkstra.png new file mode 100644 index 0000000..5bfae8d Binary files /dev/null and b/TP/dijkstra.png differ diff --git a/TP/prim.png b/TP/prim.png new file mode 100644 index 0000000..b077d81 Binary files /dev/null and b/TP/prim.png differ diff --git a/td/TD4.pdf b/td/TD4.pdf new file mode 100644 index 0000000..32734d0 Binary files /dev/null and b/td/TD4.pdf differ