private void buttonCourtChemin_Click(object sender, EventArgs e) { NodeRecherche.nomLieuFinal = textBox_noeudFinal.Text; Graph graph = new Graph(); NodeRecherche noeudInit = new NodeRecherche(textBox_noeudInit.Text); List<GenericNode> chemin = graph.RechercheSolutionAEtoile(noeudInit); double cout=0; NodeRecherche n1 = noeudInit; NodeRecherche n2; listBoxChemin.Items.Clear(); foreach (GenericNode n in chemin) { listBoxChemin.Items.Add(n.ToString()); n2 = n as NodeRecherche; if (n2!=n1) cout += n1.GetArcCost(n2); n1 = n2; } textBoxCout.Text = cout.ToString(); graph.GetSearchTree(treeView1); }
//renvoie le cout du + court chemin de noeudInital à noeudFinal public double calculeMeilleurCout(string noeudInital, string noeudFinal, out List<GenericNode> chemin) { NodeRecherche noeudInit = new NodeRecherche(noeudInital); // départ de noeudInital NodeRecherche.nomLieuFinal = noeudFinal; // retour à noeudFinal Graph graph = new Graph(); //meilleur chemin de noeudInital à noeudFinal chemin = graph.RechercheSolutionAEtoile(noeudInit); double cout = 0; NodeRecherche n1 = noeudInit; NodeRecherche n2; //somme des couts intermédiaires foreach (GenericNode n in chemin) { n2 = n as NodeRecherche; if (n2 != n1) cout += n1.GetArcCost(n2); n1 = n2; } return (cout); }