/// <summary> /// pour calculsortie() /// </summary> /// <param name="outil"></param> /// <param name="hs"></param> //pour calculsortie() public void EvaluatePerso(Outils outil, ICollection <Edge <Outils> > hs) { if (!outil.end || Circuit.InEdges(outil) != null) { IEnumerable <Edge <Outils> > inEdges = Circuit.InEdges(outil); foreach (Edge <Outils> edge in inEdges) { if (!hs.Contains(edge)) { hs.Add(edge); EvaluatePerso(edge.Source, hs); } } } outil.calcul_sorties(); }
/// <summary> /// Evalue le circuit en considérant outil sa fin /// </summary> /// <param name="outil">La fin du circuit considéré</param> /// <param name="hs">Collection des edges déjà passé par</param> public void Evaluate(Outils outil, ICollection <Edge <Outils> > hs) { if (Circuit.ContainsVertex(outil)) { if (!Circuit.IsInEdgesEmpty(outil)) { IEnumerable <Edge <Outils> > inEdges = Circuit.InEdges(outil); foreach (Edge <Outils> edge in inEdges) { if (!hs.Contains(edge)) { hs.Add(edge); Evaluate(edge.Source, hs);//on remonte au debut du circuit } } } } outil.calcul_sorties();//on calcul en décendant vers la fin du circuit }