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);
        }