Esempio n. 1
0
        public void FindEdgeCut_WhenPresentBridges_ThenBridges()
        {
            // given
            var graph = new UndirectedSimpleGraph <int, object, object>(Enumerable.Range(0, 12));

            graph.AddEdgeBetween(graph[0], graph[1]);
            graph.AddEdgeBetween(graph[0], graph[2]);
            graph.AddEdgeBetween(graph[0], graph[7]);
            graph.AddEdgeBetween(graph[1], graph[2]);
            graph.AddEdgeBetween(graph[1], graph[3]);
            graph.AddEdgeBetween(graph[1], graph[4]);
            graph.AddEdgeBetween(graph[3], graph[5]);
            graph.AddEdgeBetween(graph[4], graph[5]);
            graph.AddEdgeBetween(graph[5], graph[6]);
            graph.AddEdgeBetween(graph[7], graph[8]);
            graph.AddEdgeBetween(graph[7], graph[9]);
            graph.AddEdgeBetween(graph[7], graph[11]);
            graph.AddEdgeBetween(graph[8], graph[9]);
            graph.AddEdgeBetween(graph[9], graph[10]);
            graph.AddEdgeBetween(graph[9], graph[11]);
            graph.AddEdgeBetween(graph[10], graph[11]);
            // when
            IEnumerable <Edge <int> > result = graph.FindEdgeCut();

            // then
            result.Should().BeEquivalentTo(
                new[] { graph[graph[0], graph[7]], graph[graph[5], graph[6]] });
        }
Esempio n. 2
0
        public void FindEdgeCut_WhenNoBridges_ThenEmptyList()
        {
            // given
            var graph = new UndirectedSimpleGraph <int, object, object>(Enumerable.Range(0, 6));

            graph.AddEdgeBetween(graph[0], graph[1]);
            graph.AddEdgeBetween(graph[0], graph[2]);
            graph.AddEdgeBetween(graph[1], graph[2]);
            graph.AddEdgeBetween(graph[1], graph[3]);
            graph.AddEdgeBetween(graph[1], graph[4]);
            graph.AddEdgeBetween(graph[3], graph[5]);
            graph.AddEdgeBetween(graph[4], graph[5]);
            // when
            IEnumerable <Edge <int> > result = graph.FindEdgeCut();

            // then
            result.Should().BeEmpty();
        }