/// <summary>
 /// Khởi tạo cho thuật toán, dùng khi xây dựng cluster từ tập mẫu
 /// </summary>
 /// <param name="numCluster">Số cluster muốn tạo</param>
 /// <param name="samples">Các vector mẫu</param>
 /// <param name="distType">Loại khoảng cách</param>
 public Clustering(int numCluster, double[][] samples, DistanceType distType)
 {
     SampleData = new SampleSet(samples, distType);
     Clusters = new Cluster[numCluster];
     for (int i = 0; i < numCluster; i++)
     {
         Clusters[i] = new Cluster(samples[0].Length);
     }
     HasClusterChanged = true;
 }
        /// <summary>
        /// Đọc thông tin các cluster từ file
        /// </summary>
        /// <param name="fileName">Tên file đích</param>
        private void LoadClusters(string fileName)
        {
            StreamReader reader = new StreamReader(fileName);
            string buffer = null;
            buffer = reader.ReadLine();
            Clusters = new Cluster[Int32.Parse(buffer)];

            for (int i = 0; i < Clusters.Length; i++)
            {
                Clusters[i] = new Cluster();
                buffer = reader.ReadLine();
                Clusters[i].NumSample = 0;
                buffer = reader.ReadLine();
                string[] parts = buffer.Split(' ');
                Clusters[i].MeanSample = new double[parts.Length];
                for (int j = 0; j < parts.Length; j++)
                {
                    Clusters[i].MeanSample[j] = Double.Parse(parts[j]);
                }

            }
            reader.Close();
        }