NxN
行列内の最大合計の部分矩形を見つけることは、他の柱で指摘されているように、2-dカダンのアルゴリズムを用いてO(n^3)
時間で行うことができる。しかし、行列が疎である場合、具体的にはO(n)
の非ゼロエントリの場合、O(n^3)
の時間を叩くことができますか?疎行列内の最大和小矩形
私が興味を持っている現在のアプリケーションでは、行列の各行と各列の非ゼロ値を最大でも1つと仮定することで十分です。しかし、私の将来のアプリケーションでは、この仮定は適切ではないかもしれません(まばらさだけが保持されます)。そして、とにかく私の数学的な直感は、単に希薄さを利用する良い解決法があり、行列が対角行列と置換行列の積である。
各行と各列に最大で0以外の値があり、その値をx軸とy軸に投影すると、それぞれサイズnの2つの1次元配列が得られます。2つの配列の最大連続部分配列を探します。私はこれがあなたに最大のsubrectangleを与えると思います。これは、O(n)時間およびO(n)空間の複雑さで行うことができる。 –
残念なことに、この提案されているO(n)解決策は、次のカウンタ例に示すように機能しません。 1 0 0 \ 0 0 2 \\ 0 -1 0 \\ – user2566092