コード例 #1
0
 /// <summary>
 ///  Preencher o grafo
 /// </summary>
 /// <param name="grafos"></param>
 internal static void EstruraVagas(ref Grafos grafos)
 {
     grafos.AddVertice('A', new Dictionary <char, int>()
     {
         { 'B', 7 }
     });
     grafos.AddVertice('B', new Dictionary <char, int>()
     {
         { 'A', 5 }, { 'C', 7 }, { 'D', 3 }
     });
     grafos.AddVertice('C', new Dictionary <char, int>()
     {
         { 'B', 7 }, { 'E', 4 }
     });
     grafos.AddVertice('D', new Dictionary <char, int>()
     {
         { 'B', 3 }, { 'E', 10 }, { 'F', 8 }
     });
     grafos.AddVertice('E', new Dictionary <char, int>()
     {
         { 'C', 4 }, { 'D', 10 }
     });
     grafos.AddVertice('F', new Dictionary <char, int>()
     {
         { 'D', 8 }
     });
 }
コード例 #2
0
        /// <summary>
        ///  Recebe o inicio e o fim dos vertices de referência
        /// </summary>
        /// <param name="inicio"></param>
        /// <param name="fim"></param>
        /// <returns>Retorna a distancia em um intervalo determinado</returns>
        public static int D(char inicio, char fim)
        {
            Grafos grafos = new Grafos();

            EstruraVagas(ref grafos);
            return(value(grafos.DistanciaMinimaDijkstra(inicio, fim)));
        }
コード例 #3
0
        static void Main(string[] args)
        {
            Graph  g      = new Graph();
            Grafos grafos = new Grafos();

            g.AddVertice('A', new Dictionary <char, int>()
            {
                { 'B', 7 }, { 'C', 8 }
            });
            g.AddVertice('B', new Dictionary <char, int>()
            {
                { 'A', 7 }, { 'F', 2 }
            });
            g.AddVertice('C', new Dictionary <char, int>()
            {
                { 'A', 8 }, { 'F', 6 }, { 'G', 4 }
            });
            g.AddVertice('D', new Dictionary <char, int>()
            {
                { 'F', 8 }
            });
            g.AddVertice('E', new Dictionary <char, int>()
            {
                { 'H', 1 }
            });
            g.AddVertice('F', new Dictionary <char, int>()
            {
                { 'B', 2 }, { 'C', 6 }, { 'D', 8 }, { 'G', 9 }, { 'H', 3 }
            });
            g.AddVertice('G', new Dictionary <char, int>()
            {
                { 'C', 4 }, { 'F', 9 }
            });
            g.AddVertice('H', new Dictionary <char, int>()
            {
                { 'E', 1 }, { 'F', 3 }
            });


            grafos.AddVertice('A', new Dictionary <char, int>()
            {
                { 'B', 7 }, { 'C', 8 }
            });
            grafos.AddVertice('B', new Dictionary <char, int>()
            {
                { 'A', 7 }, { 'F', 2 }
            });
            grafos.AddVertice('C', new Dictionary <char, int>()
            {
                { 'A', 8 }, { 'F', 6 }, { 'G', 4 }
            });
            grafos.AddVertice('D', new Dictionary <char, int>()
            {
                { 'F', 8 }
            });
            grafos.AddVertice('E', new Dictionary <char, int>()
            {
                { 'H', 1 }
            });
            grafos.AddVertice('F', new Dictionary <char, int>()
            {
                { 'B', 2 }, { 'C', 6 }, { 'D', 8 }, { 'G', 9 }, { 'H', 3 }
            });
            grafos.AddVertice('G', new Dictionary <char, int>()
            {
                { 'C', 4 }, { 'F', 9 }
            });
            grafos.AddVertice('H', new Dictionary <char, int>()
            {
                { 'E', 1 }, { 'F', 3 }
            });

            //  g.shortest_path('A', 'H').ForEach(x => Console.WriteLine(x));

            Console.WriteLine(g.Distancia('A', 'E'));

            Console.WriteLine("\n");

            Console.WriteLine(grafos.DistanciaMinimaDijkstra('A', 'E'));

            Console.Read();
        }