【问题标题】:Optimal grid clustering最优网格聚类
【发布时间】:2013-02-08 21:00:31
【问题描述】:

首先,一维案例。给定一个包含 N 个数字的数组,将其分成 n 个块,以使每个元素与其块平均值的平方距离之和最小化。例如,如果要求将 [0.1,0.3,2,1.2,1.3] 切成三段,则最优解是 [[0.1,0.3],[2],[1.2,1.3]]。

通过动态规划,这可以在 O(N * n) 中轻松解决

现在是 2D 案例。给定一个 (N,M) 矩阵,我们想将它切成 n*m 块。解决方案应该看起来像一个不规则间隔的网格 - 它是一组 n 个水平切口和 m 个垂直切口。

这似乎更棘手。可以通过固定水平切割来动态找到最佳垂直切割,但这似乎并没有导致任何地方。枚举所有可能的水平切割 O(C(M,m)) 是棘手的。

有没有办法在多项式时间内做到这一点?

【问题讨论】:

    标签: algorithm dynamic-programming


    【解决方案1】:

    这听起来很像 NP-Hard 问题:http://en.wikipedia.org/wiki/K-means_clustering 所以我认为不存在多项式时间算法。

    【讨论】:

    • 如果你能证明一个 k-means 的实例可以转化为这个问题的一个实例,那么当然可以。否则,像这样的微小差异会对复杂性产生巨大影响。
    猜你喜欢
    • 2017-04-28
    • 2013-09-08
    • 2016-12-16
    • 2017-12-04
    • 2010-12-20
    • 2012-07-05
    • 1970-01-01
    • 2013-04-27
    • 2021-09-15
    相关资源
    最近更新 更多