Example #1
0
        static void UndirectedDemo()
        {
            var graph = new Graph(
                new int[][]
            {
                new int [] { 1, 2, 3 },     // 0 -> 1, 2, 3
                new int [] { 0, 2 },        // 1 -> 0, 2
                new int [] { 0, 1, 3 },     // 2 -> 0, 1, 3
                new int [] { 0, 2 }         // 3 -> 0, 2
            }
                );

            var adjacency = graph.CreateAdjacencyMatrix();
            var incidence = graph.CreateUndirectedIncidenceMatrix();
            var kirchhoff = graph.CreateKirchhoffMatrix();

            Console.WriteLine("Adjacency:");
            Console.WriteLine(adjacency);
            Console.WriteLine("Undirected incidence:");
            Console.WriteLine(incidence);
            Console.WriteLine("Kirchhoff:");
            Console.WriteLine(kirchhoff);

            Console.WriteLine("\nConversions. \n");
            Console.WriteLine("Adjacency -> Kirchhoff");
            Console.WriteLine(Graph.ConvertAdjacencyToKirchhoff(adjacency));
            Console.WriteLine("Kirchhoff -> Adjacency");
            Console.WriteLine(Graph.ConvertKirchhoffToAdjacency(kirchhoff));
            Console.WriteLine("Adjacency -> Incidence");
            Console.WriteLine(Graph.ConvertAdjacencyToUndirectedIncidence(adjacency));
            Console.WriteLine("Incidence -> Adjacency");
            Console.WriteLine(Graph.ConvertUndirectedIncidenceToAdjacency(incidence));
            // Console.WriteLine("Incidence -> Kirchhoff (only works right for a directed graph)");
            // Console.WriteLine(Graph.ConvertDirectedIncidenceToKirchhoff(incidence));
        }