Exemplo n.º 1
0
        private static void SimpleGraphTest(string fromPoint)
        {
            Vertex a = new Vertex()
            {
                Name = "a"
            };

            Vertex b = new Vertex()
            {
                Name = "b"
            };

            Vertex c = new Vertex()
            {
                Name = "c"
            };

            Vertex d = new Vertex()
            {
                Name = "d"
            };

            Vertex e = new Vertex()
            {
                Name = "e"
            };

            Vertex f = new Vertex()
            {
                Name = "f"
            };

            Vertex g = new Vertex()
            {
                Name = "g"
            };

            Vertex h = new Vertex()
            {
                Name = "h"
            };

            Vertex i = new Vertex()
            {
                Name = "i"
            };

            Vertex j = new Vertex()
            {
                Name = "j"
            };

            Vertex k = new Vertex()
            {
                Name = "k"
            };

            Vertex l = new Vertex()
            {
                Name = "l"
            };

            Vertex m = new Vertex()
            {
                Name = "m"
            };

            Vertex n = new Vertex()
            {
                Name = "n"
            };

            Vertex o = new Vertex()
            {
                Name = "o"
            };

            Vertex p = new Vertex()
            {
                Name = "p"
            };

            Vertex q = new Vertex()
            {
                Name = "q"
            };

            Vertex r = new Vertex()
            {
                Name = "r"
            };

            SimpleGraph graph = new SimpleGraph();

            graph.AddVertex(a);
            graph.AddVertex(b);
            graph.AddVertex(c);
            graph.AddVertex(d);
            graph.AddVertex(e);
            graph.AddVertex(f);
            graph.AddVertex(g);
            graph.AddVertex(h);
            graph.AddVertex(i);
            graph.AddVertex(j);
            graph.AddVertex(k);
            graph.AddVertex(l);
            graph.AddVertex(m);
            graph.AddVertex(n);
            graph.AddVertex(o);
            graph.AddVertex(p);
            graph.AddVertex(q);
            graph.AddVertex(r);

            graph.AddEdge("a", "b", 1);
            graph.AddEdge("a", "c", 4);
            graph.AddEdge("a", "d", 5);
            graph.AddEdge("b", "d", 3);
            graph.AddEdge("c", "d", 6);
            graph.AddEdge("d", "e", 2);
            graph.AddEdge("d", "f", 3);
            graph.AddEdge("e", "c", 10);
            graph.AddEdge("e", "g", 7);
            graph.AddEdge("f", "e", 2);
            graph.AddEdge("f", "g", 4);
            graph.AddEdge("f", "h", 2);
            graph.AddEdge("g", "h", 5);
            graph.AddEdge("g", "i", 3);
            graph.AddEdge("i", "h", 3);
            graph.AddEdge("h", "l", 1);
            graph.AddEdge("l", "j", 2);
            graph.AddEdge("j", "k", 1);
            graph.AddEdge("j", "n", 4);
            graph.AddEdge("j", "m", 3);
            graph.AddEdge("k", "n", 2);
            graph.AddEdge("m", "o", 6);
            graph.AddEdge("n", "m", 4);
            graph.AddEdge("n", "p", 8);
            graph.AddEdge("o", "p", 2);
            graph.AddEdge("p", "q", 20);
            graph.AddEdge("q", "r", 2);

            var smt = graph.FindShortestPaths(fromPoint);

            foreach (var item in smt)
            {
                if (item.Value == int.MaxValue)
                {
                    Console.WriteLine($"No available path was found between {fromPoint} and {item.Key.Name}");
                }
                else
                {
                    Console.WriteLine($"shortest path to vertex {item.Key.Name} from vertex {fromPoint} is {item.Value}");
                }
            }
        }
        private static void SimpleGraphTest(string fromPoint)
        {
            Vertex a = new Vertex()
            {
                Name = "a"
            };

            Vertex b = new Vertex()
            {
                Name = "b"
            };

            Vertex c = new Vertex()
            {
                Name = "c"
            };

            Vertex d = new Vertex()
            {
                Name = "d"
            };

            Vertex e = new Vertex()
            {
                Name = "e"
            };

            Vertex f = new Vertex()
            {
                Name = "f"
            };

            SimpleGraph graph = new SimpleGraph();

            graph.AddVertex(a);
            graph.AddVertex(b);
            graph.AddVertex(c);
            graph.AddVertex(d);
            graph.AddVertex(e);
            graph.AddVertex(f);

            graph.AddEdge("a", "b", 2);
            graph.AddEdge("a", "f", 4);
            graph.AddEdge("b", "c", 3);
            graph.AddEdge("d", "c", 3);
            graph.AddEdge("e", "d", 1);
            graph.AddEdge("f", "e", 2);

            var smt = graph.FindShortestPaths(fromPoint);

            foreach (var item in smt)
            {
                if (item.Value == int.MaxValue)
                {
                    Console.WriteLine($"No available path was found between {fromPoint} and {item.Key}");
                }
                else
                {
                    Console.WriteLine($"shortest path to vertex {item.Key} from vertex {fromPoint} is {item.Value}");
                }
            }
        }