2013-05-28 72 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来做,但尝试一下会很有趣。