예제 #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);
        }