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