Beispiel #1
0
        public List <GenericNode> cheminParcoursArbre(GenericNode N, GenericNode N0)
        {
            List <GenericNode> _LN = new List <GenericNode>();

            if (N != null)
            {
                _LN.Add(N);

                while (N != N0)
                {
                    N = N.GetNoeud_Parent();
                    _LN.Insert(0, N);  // On insère en position 1
                }
            }
            return(_LN);
        }
Beispiel #2
0
        private void button_Dijkstra_Click(object sender, EventArgs e)
        {
            affichageCheminListBox.Items.Clear();
            commentaireTextBox.Clear();
            string message = "ERREUR \r\n";

            try
            {
                numinitial = Convert.ToInt32(noeud_debut_textbox.Text);
            }
            catch
            {
                message += ("Vous n'avez pas entré de noeud initial \r\n");
            }
            try
            {
                numfinal = Convert.ToInt32(noeud_fin_textbox.Text);
            }
            catch
            {
                message += ("Vous n'avez pas entré de noeud final \r\n");
            }
            if (message == "ERREUR \r\n")
            {
                g         = new SearchTree();
                N0        = new Node2();
                N0.numero = numinitial;

                L_Ouverts      = new List <GenericNode>();
                L_Fermes       = new List <GenericNode>();
                EnsembleOuvert = new List <List <GenericNode> >();
                EnsembleFermes = new List <List <GenericNode> >();
                N0List         = new List <GenericNode>();



                // Le noeud passé en paramètre est supposé être le noeud initial
                GenericNode N = N0;
                N0List.Add(N0);
                L_Ouverts.Add(N0);
                EnsembleOuvert.Add(N0List);

                // tant que le noeud n'est pas terminal et que ouverts n'est pas vide
                while (L_Ouverts.Count != 0 && N.EndState() == false)
                {
                    // Le meilleur noeud des ouverts est supposé placé en tête de liste
                    // On le place dans les fermés
                    L_Fermes.Add(N);
                    L_Ouverts.Remove(N);
                    GenericNode        solu       = g.stepSolutionAEtoile(N, L_Ouverts, L_Fermes);
                    List <GenericNode> listOuvert = new List <GenericNode>(L_Ouverts);
                    EnsembleOuvert.Add(listOuvert);
                    List <GenericNode> listFermes = new List <GenericNode>(L_Fermes);
                    EnsembleFermes.Add(listFermes);
                    N = solu;
                }
                // renvois les noeuds parents jusqu'a avoir l'arbre total methode du SearchTree qui est passé en ligne de code directement.
                List <GenericNode> _LN = new List <GenericNode>();
                if (N != null)
                {
                    _LN.Add(N);

                    while (N != N0)
                    {
                        N = N.GetNoeud_Parent();
                        _LN.Insert(0, N);  // On insère en position 1
                    }
                }
                solution = _LN;


                g.PrintEmptyTree(treeViewEtudiant);
            }
            else
            {
                MessageBox.Show(message);
            }


            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ////////////////               à partir de là nous pouvons commencer à comparer les ensembles.                     //////////////
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



            ////////////////////////////////////////////////////////////////////////////////////////////////////
            ///////////////////    fin des tests sur les ensembles ouverts et fermés    ////////////////////////
            ////////////////////////////////////////////////////////////////////////////////////////////////////

            /// affichage de l'arbre des solutions et du chemin le plus court à condition que l'étudiant ait entré des ensembles ouverts et fermés
        }