public void HugeSimpleCPU()
        {
            int nDescriptors       = 350000;
            int descriptorDiension = 4096;
            int nClusters          = 25;// 128;
            int iterationCount     = 10;

            int nDescriptorsDiv5 = nDescriptors / 5;

            Descriptor[]     descriptors = HelperTestClass.GenerateHierarchicalDescriptors(seed, nDescriptorsDiv5, descriptorDiension);
            ClusteringSimple clustering  = new ClusteringSimple(descriptors);

            TestClusteringSimple(clustering);

            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();
            clustering.Clusterize(nClusters, iterationCount, seed);
            stopWatch.Stop();

            double elapsedSeconds = (stopWatch.ElapsedMilliseconds * 0.001);
            double nPerSecond     = nDescriptorsDiv5 * 5 * nClusters / elapsedSeconds;

            Console.WriteLine("Computing time: " + elapsedSeconds + " seconds (" + nPerSecond + " per second).");

            HelperTestClass.VisualizeClustering(clustering.Descriptors, clustering.Centroids, windowSize, windowSize);
        }
        public void VisualizeAgglomerative()
        {
            int nDescriptors        = 100;
            int descriptorDimension = 2;
            int nDescriptorsDiv5    = nDescriptors / 5;

            Descriptor[]            descriptors = HelperTestClass.GenerateHierarchicalDescriptors(seed, nDescriptorsDiv5, descriptorDimension);
            ClusteringAgglomerative clustering  = new ClusteringAgglomerative(descriptors);

            clustering.Clusterize();
            HelperTestClass.TestDescriptorAssignment(descriptors.Length, clustering.Centroids[0]);
            HelperTestClass.VisualizeClustering(clustering.Descriptors, clustering.Centroids[23], windowSize, windowSize);
        }