diff --git a/src/phase2.ml b/src/phase2.ml index 4727840260674f4aee221d018083d9d23c7ee925..e5e7f1e51f6fb7a0e3110e68cb7969916e34e3e9 100644 --- a/src/phase2.ml +++ b/src/phase2.ml @@ -8,7 +8,6 @@ *) module Graphe = Map.Make(String) module Arreteliste = Map.Make(String) -module Clesliste = Set.Make(String) (* @@ -84,4 +83,33 @@ let rec chemins s g = *) let rec filtre f t nl = match nl with | [] -> [] - | elt::ma -> if (List.nth elt 0) = f && (List.nth elt ((List.length elt)-1)) = t then elt::(filtre f t ma) else (filtre f t ma) \ No newline at end of file + | elt::ma -> if (List.nth elt 0) = f && (List.nth elt ((List.length elt)-1)) = t then elt::(filtre f t ma) else (filtre f t ma) + + (* + capacité d'un chemin = min des capacités de chaque arrete + + initialisation : pour la liste des chemins du graphe je choisi le chemin de capacite maximum que je sature + hérédité : pour la liste des chemins du graphe des capacité résiduelles je choisi le chemin de capacite maximum que je sature *) + + +(* + * [capacite c g] capacité (mininum des capacités de toutes les arretes) du chemin c dans le graphe g + *) +let capacite c g = + let rec min l a = match l with + | [] -> a + | e::m -> if e<a then min m e else min m a + in + let rec liste_capacite m = match m with + | [] -> [] + | elt::[] -> [] + | e1::(e2::nl) -> (Arreteliste.find e2 (Graphe.find e1 g))::(liste_capacite nl) + in + let liste = liste_capacite c + in + let f b = min liste (List.nth liste 0) + in + List.map f c + +(* [graphe_capacite_residuelles c n g] donne le graphe des capacité résiduelles aprèes avoir retirer des arretes du chemin c le nombre n *) +let rec graphe_capacites_residuelles c n g = \ No newline at end of file