コード例 #1
0
        public void Basic()
        {
            var graph  = new TestAdjacencyListsGraph(Vertices, Edges);
            var gs     = new TestTarjanGraphSearch();
            var result = (TestTarjanGraphSearch.SccResult)gs.Search(graph, null);

            Validate(result, 6);
        }
コード例 #2
0
        public void SingleCluster()
        {
            var edges = new HashSet <TestEdge>()
            {
                new TestEdge(A, B),
                new TestEdge(B, C),
                new TestEdge(C, D),
                new TestEdge(D, E),
                new TestEdge(E, F),
                new TestEdge(F, G),
                new TestEdge(G, H),
                new TestEdge(H, A),
            }.ToImmutableHashSet();
            var graph  = new TestAdjacencyListsGraph(Vertices, edges);
            var gs     = new TestTarjanGraphSearch();
            var result = (TestTarjanGraphSearch.SccResult)gs.Search(graph, null);

            Validate(result, 1);
            Validate(result, 0, 8, 8);
        }
コード例 #3
0
        public void TwoWeaklyConnectedClusters()
        {
            var edges = new HashSet <TestEdge>()
            {
                new TestEdge(A, B),
                new TestEdge(B, C),
                new TestEdge(C, D),
                new TestEdge(D, A),
                new TestEdge(E, F),
                new TestEdge(F, G),
                new TestEdge(G, H),
                new TestEdge(H, E),
                new TestEdge(B, E),
            }.ToImmutableHashSet();
            var graph  = new TestAdjacencyListsGraph(Vertices, edges);
            var gs     = new TestTarjanGraphSearch();
            var result = (TestTarjanGraphSearch.SccResult)gs.Search(graph, null);

            Validate(result, 2);
            Validate(result, 0, 4, 4);
            Validate(result, 1, 4, 4);
        }
コード例 #4
0
        public void TwoClustersConnectedWithIgnoredEdges()
        {
            var edges = new HashSet <TestEdge>()
            {
                new TestEdge(A, B),
                new TestEdge(B, C),
                new TestEdge(C, D),
                new TestEdge(D, A),
                new TestEdge(E, F),
                new TestEdge(F, G),
                new TestEdge(G, H),
                new TestEdge(H, E),
                new TestEdge(B, E, Weigher.NonViableWeight),
                new TestEdge(E, B, Weigher.NonViableWeight),
            }.ToImmutableHashSet();
            var graph  = new TestAdjacencyListsGraph(Vertices, edges);
            var gs     = new TestTarjanGraphSearch();
            var result = (TestTarjanGraphSearch.SccResult)gs.Search(graph, Weigher);

            Validate(result, 2);
            Validate(result, 0, 4, 4);
            Validate(result, 1, 4, 4);
        }