2D数组中非相邻元素的最大总和

时间:2016-10-29 17:08:24

标签: arrays algorithm time-complexity dynamic-programming

我试图找一个能帮我找到二维数组中非相邻元素总和的算法。

对于1D阵列,我发现了以下有用的解决方案: 1)http://www.geeksforgeeks.org/maximum-sum-such-that-no-two-elements-are-adjacent/ 2)https://www.youtube.com/watch?v=UtGtF6nc35g

例如在一维数组中:{3,2,6,2,10} 我的最大总和为19,因为3,6和10不相邻。

但是,我找不到可以帮助我使用2D阵列的那个。如何在没有水平或垂直相邻元素的情况下找到此数组中的最大整数总和?允许对角相邻的元素。

例如:

[3, 2, 6, 2, 10]
[1, 5, 2, 5, 1]
[5, 1, 7, 2, 9]
[3, 9, 1, 8, 2]

是否存在解决此问题的现有算法?或者,如果我使用其他数据结构而不是2D数组,那么它是解决这个问题的另一种方法吗?

1 个答案:

答案 0 :(得分:0)

问题可以表示为maximum-weight independent setmixed integer linear programming问题。

要将其转换为最大权重独立集,请创建图,其中顶点是元素,边是邻接。

我不是整数编程方面的专家。有类似的(甚至更复杂的)question,其中sascha演示了如何将问题转换为MIP,以及求解器的力量。