Beispiel #1
0
        public List <CCheminDeGrapheReseau> GetChemins(CNoeudDeGrapheReseau noeud1, CNoeudDeGrapheReseau noeud2)
        {
            List <CCheminDeGrapheReseau> lstFinale = new List <CCheminDeGrapheReseau>();
            CCheminDeGrapheReseau        chemin    = new CCheminDeGrapheReseau();

            FindChemins(chemin, noeud1, noeud2, lstFinale);
            return(lstFinale);
        }
Beispiel #2
0
        public static CCheminDeGrapheReseau operator +(CCheminDeGrapheReseau chemin, CLienDeGrapheReseau lien)
        {
            List <CLienDeGrapheReseau> lst = new List <CLienDeGrapheReseau>(chemin.Liens);
            Dictionary <CNoeudDeGrapheReseau, bool> dicNoeuds = new Dictionary <CNoeudDeGrapheReseau, bool>(chemin.m_dicNoeudsUtilises);

            lst.Add(lien);
            dicNoeuds[lien.NoeudArrive] = true;
            dicNoeuds[lien.NoeudDepart] = true;
            CCheminDeGrapheReseau newChemin = new CCheminDeGrapheReseau();

            newChemin.m_baseLiens.AddRange(lst);
            newChemin.m_dicNoeudsUtilises = dicNoeuds;
            return(newChemin);
        }
Beispiel #3
0
 private void FindChemins(CCheminDeGrapheReseau chemin,
                          CNoeudDeGrapheReseau noeudDepart,
                          CNoeudDeGrapheReseau noeudArrive,
                          List <CCheminDeGrapheReseau> cheminsTrouves)
 {
     if (noeudArrive.Equals(noeudDepart))
     {
         cheminsTrouves.Add(chemin);
         return;
     }
     else
     {
         foreach (CLienDeGrapheReseau lien in m_dicSuccesseurs.GetSuccesseurs(noeudDepart))
         {
             if (!chemin.Contains(lien.NoeudArrive))
             {
                 FindChemins(chemin + lien, lien.NoeudArrive, noeudArrive, cheminsTrouves);
             }
         }
     }
 }