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

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

            Console.WriteLine("Adjacency:");
            Console.WriteLine(adjacency);
            Console.WriteLine("Directed 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.ConvertAdjacencyToDirectedIncidence(adjacency));
            Console.WriteLine("Incidence -> Adjacency");
            Console.WriteLine(Graph.ConvertDirectedIncidenceToAdjacency(incidence));
            Console.WriteLine("Incidence -> Kirchhoff (only works right for a directed graph)");
            Console.WriteLine(Graph.ConvertDirectedIncidenceToKirchhoff(incidence));
        }