public virtual void OnGenerateEnd(IClusterNode root)
        {
            if (IsVerbose)
            {
                int estimatedMaxNodeCount = CalculateEstimatedNodeCount(MaxBucketCounts);
                int estimatedMinNodeCount = CalculateEstimatedNodeCount(MinBucketCounts);
                int actualNodeCount       = CountNodes <int> .Count <ClusterTree, IClusterNode>(null, root);

                Console.WriteLine("Nodes: estimated min: {0:#,#}, estimated max: {1:#,#}, actual: {2:#,#}",
                                  estimatedMinNodeCount, estimatedMaxNodeCount, actualNodeCount);
            }
        }
示例#2
0
        public void OnGenerateEnd(IClusterNode root)
        {
            if (IsVerbose)
            {
                int estimatedNodeCount = 1;
                int power = 1;
                for (int r = 0; r < 4; ++r)
                {
                    power *= BucketCounts[r];
                    estimatedNodeCount += power;
                }
                int actualNodeCount = CountNodes <int> .Count <ClusterTree, IClusterNode>(null, root);

                Console.WriteLine("Nodes: estimated: {0:#,#}, actual: {1:#,#}",
                                  estimatedNodeCount, actualNodeCount);
            }
        }
示例#3
0
            public ChanceTree ConvertToChanceTree()
            {
                int depth = PlayersCount * RoundsCount;

                int nodesCount = CountNodes <int> .Count(Root, Root as object);

                ChanceTree ct = new ChanceTree(nodesCount);

                ct.SetNodesMemory(0); // To clear results.

                SyncUniAndUF <int> .Sync(Root, Root as object, ct, SyncNodes);

                WalkUFTreePP <ChanceTree, WalkUFTreePPContext> wt = new WalkUFTreePP <ChanceTree, WalkUFTreePPContext>();

                wt.OnNodeEnd = FinalizeChanceTree_OnNodeEnd;
                wt.Walk(ct);
                ct.PlayersCount        = PlayersCount;
                ct.Version.Description = String.Format("Chance tree (MC:{0:0,0}, {1})", SamplesCount, SourceInfo);
                return(ct);
            }