Esempio n. 1
0
        IsWeaklyConnected()     // Ориентированный граф называется слабо-связным, если является связным неориентированный граф, полученный из него заменой ориентированных рёбер неориентированными.
        {
            var graph = new DiGraph <String>();

            foreach (NodeModel node in model.NodesSource)
            {
                graph.AddVertex(node.Key);
            }

            foreach (LinkModel link in model.LinksSource)
            {
                graph.AddEdge(link.From, link.To);
                graph.AddEdge(link.To, link.From);
            }

            var connectivityComponentsFinder = new KosarajuStronglyConnected <String>();

            return(connectivityComponentsFinder.FindStronglyConnectedComponents(graph).Count == 1);
        }
Esempio n. 2
0
        private List <List <string> > GetConnectivityComponents()
        {
            var graph = new DiGraph <String>();

            foreach (NodeModel node in model.NodesSource)
            {
                graph.AddVertex(node.Key);
            }

            foreach (LinkModel link in model.LinksSource)
            {
                graph.AddEdge(link.From, link.To);
                if (!link.IsOriented)
                {
                    graph.AddEdge(link.To, link.From);
                }
            }

            var connectivityComponentsFinder = new KosarajuStronglyConnected <String>();

            return(connectivityComponentsFinder.FindStronglyConnectedComponents(graph));
        }