【发布时间】:2014-03-24 04:35:14
【问题描述】:
我必须找到 4 个子矩阵之和之间的差异,这是我在以任何方式拆分矩阵 A 后得到的,以便获得子矩阵之和之间的最小差异矩阵。
例如,对于一个矩阵A,
3 0 2 -8 -8
5 3 2 2 3
2 5 2 1 4
3 4 -1 4 2
-3 6 2 4 3
我可以这样拆分:
3 | 0 2 -8 -8
5 | 3 2 2 3
2 | 5 2 1 4
-------------------
3 4 -1 | 4 2
-3 6 2 | 4 3
每个子矩阵中所有元素的总和得出以下结果:
10 | 8
-------
11 | 13
然后,我计算总和之间所有可能的绝对差,即
abs(10 - 8) = 2
abs(10 - 11) = 1
abs(10 - 13) = 3
abs(8 - 11) = 3
abs(8 - 13) = 5
abs(11 -13) = 2
最后,我选择了最大距离,即5。
但是,如果我以任何其他方式拆分矩阵 A,它将给出不同的最大距离,这是我不想要的。我只需要找到5,但如果我要这样做,我会花费太多时间来寻找所有可能性。这个问题有名字吗,或者你可以给我一个提示吗?
添加
允许的拆分是水平拆分,然后是上方的垂直拆分,以及水平拆分下方的可能不同的垂直拆分。在示例中,矩阵有 4 x 4 x 4 = 64 个允许的分区。
特定分区的子矩阵之间的最大差异是通过考虑该分区的 4 个子矩阵的所有对(将有 6 个这样的对)并取其中一个子矩阵的元素之和之间的最大差异来形成的的对和对的另一个子矩阵的元素的总和。我们希望找到所有最大差异中的最小值。
实际矩阵可能高达 4000 x 4000。
【问题讨论】:
-
我建议这是 math.stackexchange.com 的问题,因为这是一个代数算法问题,而不是编码问题。
-
你得到的输入是矩阵和代表最大距离的数字?
-
我得到矩阵,必须找到最佳分割的最大距离
标签: r algorithm matlab matrix graph