public static void Main()
        {
            var graph = new UndirectedGraph <int>();

            graph.AddNode(1);
            graph.AddNode(2);
            graph.AddNode(3);
            graph.AddNode(4);

            graph.AddEdge(1, 2, weight: 10);
            graph.AddEdge(1, 3, weight: 1);
            graph.AddEdge(2, 3, weight: 2);
            graph.AddEdge(3, 4, weight: 3);

            var one  = graph.GetNode(1);
            var four = graph.GetNode(4);

            FindShortestPath <int>(one, four);

            //TraverseUsingDepthFirst(one, (TNode) => Console.Write("{0} ", TNode.Value));
            //Console.WriteLine();
            //TraverseUsingBreathFirst(one, (TNode) => Console.Write("{0} ", TNode.Value));
        }
Example #2
0
        public static void Main()
        {
            var graph = new UndirectedGraph <string>();

            graph.AddNode("a");
            graph.AddNode("b");
            graph.AddNode("c");
            graph.AddNode("d");
            graph.AddNode("e");
            graph.AddNode("f");
            graph.AddNode("g");

            graph.AddEdge("a", "b", weight: 3);
            graph.AddEdge("a", "d", weight: 6);
            graph.AddEdge("a", "c", weight: 5);
            graph.AddEdge("b", "d", weight: 2);
            graph.AddEdge("c", "d", weight: 2);
            graph.AddEdge("c", "f", weight: 3);
            graph.AddEdge("c", "g", weight: 7);
            graph.AddEdge("c", "e", weight: 6);
            graph.AddEdge("d", "f", weight: 9);
            graph.AddEdge("e", "f", weight: 5);
            graph.AddEdge("e", "g", weight: 2);
            graph.AddEdge("f", "g", weight: 1);

            var a     = graph.GetNode("a");
            var costs = DijkstraAlgorithm(a, graph);

            foreach (var node in costs)
            {
                Console.WriteLine("{0} -> {1}", node.Key, node.Value);
            }

            var start = graph.GetNode("a");
            var end   = graph.GetNode("g");

            var path = FindCheapestPath(start, end, graph);

            DisplayPath(path);

            //var graph = new UndirectedGraph<int>();

            //graph.AddNode(1);
            //graph.AddNode(2);
            //graph.AddNode(3);
            //graph.AddNode(4);
            //graph.AddNode(5);

            //graph.AddEdge(1, 2, weight: 4);
            //graph.AddEdge(1, 4, weight: 8);
            //graph.AddEdge(2, 3, weight: 3);
            //graph.AddEdge(3, 4, weight: 4);
            //graph.AddEdge(4, 5, weight: 7);

            //var start = graph.GetNode(1);
            //var end = graph.GetNode(3);

            //var path = FindCheapestPath(start, end, graph);
            //DisplayPath(path);

            //TraverseUsingDepthFirst(start, (TNode) => Console.Write("{0} ", TNode.Value));
            //Console.WriteLine();
            //TraverseUsingBreathFirst(one, (TNode) => Console.Write("{0} ", TNode.Value));
        }