最大サブマトリックス合計


7

与えられた n×m マトリックス A整数の場合、合計が最大になる部分行列を見つけます。行または列が1つしかない場合、これは最大のサブ配列を見つけることと同じです。

1Dバージョンは、動的プログラミングによって線形時間で解決できます。2DバージョンはO(n3) すべての列のペアをループし、長さが行列の行数である配列に対して1Dアルゴリズムを使用して、各位置で r 行の要素の合計を保持します r 2つの列の間。

行列が次のように与えられた場合:

(120154331784512199)

次に、列のペアについて (0,2)、最大サブマトリックスの合計は、配列で1Dアルゴリズムを使用して見つけることができます(上から下)。

(12+0=15+43+31=794512+19=38)
誰か知っていますか O(n2) この問題を解決するためのアルゴリズム?

この質問を説明するこのビデオをチェックしてください。youtu.be/yCQN096CwWM

回答:


2

私はこれを見つけました:Sung Eun Bae、一般化された最大サブアレイ問題の逐次および並列アルゴリズム。18〜30ページを読んでください。O(nm2)この問題のサブキュービックアルゴリズム(一般的な場合)、たとえば、Takao TakaokaO(n3loglognlogn) アルゴリズム。

この問題はで解決できると言っているフォーラムのコメントも見つけましたO(N2logN)「おもしろい」セグメントツリーを使用してN個の非ゼロ要素を持つ行列の場合(詳細についてはコメンテーターに尋ねることができます)。


このサイトについて私が嫌いな唯一のことは、それがロシア語で書かれていることです(私はそれをたくさん使います)。
saadtaame 14年

@saadtaame PHPで書かれていると思います。また、翻訳者を使用してロシア語で書かれたテキストを理解できます。しかし、私はそれらの言葉「私は嫌いだ」、「信者の感情を侮辱しないでください」(ロシアのことわざ)を言わないことをお勧めします。私たちの何人か(一般的に、外国語を知っている人)は私たちの無限の言語をとても誇りに思っています(私もそうです)。Авотэтоперевестинечерезче。
Ralor

あなたの気持ちを傷つけるつもりではありませんでした、すみません。はい、私は翻訳者を使用しています(私はサイトを頻繁に使用していると言いました)。さて、あなたはサイトを英語に翻訳することによって私たちに大きな恩恵を与えることができます。
saadtaame 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.