2013-02-26 73 views
0

我正在重構一個C++代碼做kmean集羣。有兩個版本的代碼:重構實施

  1. 普通kmean
  2. 功能對準集羣:使用略有不同的距離度量和更新規則。

我應該如何有效地執行此操作?方法重載(這並不取決於輸入雖然)

好,所以這是做kmean聚類的僞代碼。我需要實現兩個版本的距離和更新功能。

int* kmean_clustering(vector<double[10]> data) 
// each row of data hold one data point 
// so we have M data points of 10 dimension 
{ 
    // Split codebook 
    // Assignment step 
    Find the closest codebook based on distance(distance here can be Euclidean, Mahalanobis, .....) 
    //Update step 
} 
+2

你可以發佈一些代碼,oterwise我們如何建議如何refector它? – lockstock 2013-02-26 23:48:52

+0

函數指針是個好主意嗎?我不想擁有Kmean_Euclidean,Kmean_Mahalanobis,Kmean_blah_blah函數 – 2013-02-27 23:20:06

回答

2

寫得很好的代碼就像是在讀一本好的小說。這就是Knuth稱之爲編程藝術的原因。 This book可能會教你自下而上的重構方法。