public static List <StrongComponent> getTopoOnScc(LoadInnerLogic.Graph graph, Graph graphN = null)
        {
            graphN ??= Transform.transformGraph(graph);
            var graphT = Transform.transformTransposeGraph(graph);

            return(topoOnScc(StrongComponents(graphN, graphT)));
        }
Ejemplo n.º 2
0
        private static List <Node> transformNodes(LoadInnerLogic.Graph graph, bool transpose)
        {
            var nodes = newNodes(graph.onlyNodes()); //graph succs ?
            var edges = !transpose ? graph.edges : transposeEdges(graph.edges);

            nodes.ForEach(node => node.succs = outgoingEdges(node.attr.id, edges)
                                               .ConvertAll(edge =>
                                                           new System.Tuple <Node, Dictionary <string, string> >(findNode(edge.tailId, nodes), edge.edgeAttr)));
            return(nodes);
        }
Ejemplo n.º 3
0
        private static Graph CreateGraph(LoadInnerLogic.Graph graph, bool transpose = false)
        {
            var newGraph = new Graph(graph.Type,
                                     new Attributes(graph.id, graph.id, graph.GraphAttr, graph.NodeAttr, graph.EdgeAttr), graph.strict)
            {
                subgraphs = transformSubgraphs(graph), nodes = transformNodes(graph, transpose)
            };

            return(newGraph);
        }
Ejemplo n.º 4
0
 private static List <Attributes> transformSubgraphs(LoadInnerLogic.Graph graph)
 {
     return(graph.onlySubgraphs().ConvertAll(sub => new Attributes()
     {
         belonging = sub.belonging,
         EdgeAttr = sub.EdgeAttr,
         GraphAttr = sub.GraphAttr,
         NodeAttr = sub.NodeAttr,
         id = sub.id
     }));
 }
Ejemplo n.º 5
0
 public static Graph transformGraph(LoadInnerLogic.Graph graph) => CreateGraph(graph);
Ejemplo n.º 6
0
 public static Graph transformTransposeGraph(LoadInnerLogic.Graph graph) => CreateGraph(graph, true);