2013-05-28 76 views
0

我已設置的對象:Сlassification複雜對象的

class someObject { 
    float weight; //can be from 0.0 to 1000000.0 
    enum type {A, B, C}; 
    int code; //can be from 0 to 1000 
} 

CREATE TABLE `someObjects` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `weight` float NOT NULL, 
    `type` enum('A','B','C') COLLATE utf8_unicode_ci NOT NULL, 
    `code` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) 

該集合包含1000個這樣的對象。

如何通過這些規則這組成對象組拆分:

  • 對象應由重量非常接近彼此;
  • 每組應包含大約相等數量的類型,3 x (A,B和C);
  • 對象相同代碼必須在相同的組。

是否可以僅使用SQL

什麼分類算法應該選擇使用SQL與PHP或C++?

+0

你在用什麼。 MySQL的? SQL Server?甲骨文? – arunlalam

+0

此問題不適合SQL。 SQL問題通常是確定性的(比如「列出將這些分成9組的所有可能方式」)與優化(比如「最好的方式......」)。這是一類裝箱問題。典型的算法是貪婪算法。有關裝箱問題的更多信息,請訪問http://en.wikipedia.org/wiki/Bin_packing_problem。 –

+0

@roughnex,MySQL – X25

回答

0

根據您的規則,創建一組1000個對象可以非常容易,這些對象可以藐視您正在尋找的分組類型。但是也許數據的特徵意味着你的規則確實有意義,在這種情況下,爲了解決這個問題,你需要合併額外的信息。

當我在過去解決過這些問題時,我通常設法得到K-Means clustering to work。但是我從來沒有試過用SQL來做,但嘗試一下會很有趣。