2016-10-29 15 views
3

2次元配列内の隣接していない要素の最大合計を見つけるのに役立つアルゴリズムを探しています。私が取得する{3、2、6、2、10} :1Dアレイ、例えば 1)http://www.geeksforgeeks.org/maximum-sum-such-that-no-two-elements-are-adjacent/ 2)https://www.youtube.com/watch?v=UtGtF6nc35g2次元配列内の隣接していない要素の最大和

は:

1Dアレイの

、Iから有用なソリューションを見つけました3、6、および10が隣接していないため、最大合計は19です。

しかし、私は2D配列で私を助けることができるものを見つけることができません。どのようにして、この配列の整数の最大和を、水平方向または垂直方向に隣接する要素なしに見つけることができますか?斜めに隣接する要素が許可されます。例えば

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

は、この問題を解決するための既存のアルゴリズムはありますか?または、2D配列の代わりに別のデータ構造を使用した場合、この問題を解決する別の方法ですか?

+0

4方向隣接関係または8方向関係はありますか? –

+0

指定しないと申し訳ありませんが、水平と垂直は許可されませんが、斜めの隣接は許可されます。 –

+0

これは、「方法」または「可能な限り時間の複雑さはどのように」ですか?あなたは最大を必要としていますか、それとも近似していますか? 2Dアレイのサイズはどのくらいですか? –

答えて

0

問題はmaximum-weight independent setまたはmixed integer linear programmingという問題があります。

最大重み独立セットに変換するには、頂点が要素でエッジが隣接するグラフを作成します。

私は整数プログラミングの専門家ではありません。 saschaが問題をMIPに変換する方法と解答者の力を示したのと同様の(より複雑な)questionがあります。

関連する問題