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); }
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)); }