예제 #1
0
        public int FindMinCutKargerStein()
        {
            _edgesList = GraphGenerator.CreateEdgesList(_graphArray);
            var graph = new UnionFind(_verticesCount);

            return(FindMinCutKargerSteinRecursive(graph, _verticesCount));
        }
예제 #2
0
        public int FindMinCutUnion()
        {
            _edgesList = GraphGenerator.CreateEdgesList(_graphArray);
            var trialsNumber = GetDefaultTrials();
            var lowestCut    = int.MaxValue;

            for (int i = 0; i < trialsNumber; i++)
            {
                var randomGenerator = new Random(i);
                var currentCut      = FindMinCutUnionOnce(randomGenerator);

                if (currentCut > lowestCut)
                {
                    continue;
                }
                lowestCut = currentCut;
            }

            return(lowestCut);
        }