バイナリ行列n * m(0と1)を持っています。問題は、その要素が全て1バイナリ行列のカバーボックスの最小数
例である非重複ボックスがすべて1をカバーするものである:
1111
0110
0110
ボックス各(x,y,lx,ly)
座標の座標と長さで表すことができます。この例は2つのボックス{ (0,0,1,4), (1,1,2,2) }
でカバーされています。
最小限の数のボックスでカバーを見つける方法を探しています。
おかげ
バイナリ行列n * m(0と1)を持っています。問題は、その要素が全て1バイナリ行列のカバーボックスの最小数
例である非重複ボックスがすべて1をカバーするものである:
1111
0110
0110
ボックス各(x,y,lx,ly)
座標の座標と長さで表すことができます。この例は2つのボックス{ (0,0,1,4), (1,1,2,2) }
でカバーされています。
最小限の数のボックスでカバーを見つける方法を探しています。
おかげ
この問題は、直線多面体のパーティションと呼ばれます。似たような質問の上に良いのはanswerですbiziclopはコメントに投稿しました。アルゴリズムの
アイデアは、二部グラフの最大マッチングに問題を低減することである(頂点が可能カットである。)
3D
私の元の問題は、3Dで同じ話題でした。そのバージョンがNP-completeであることが示されている: - いくつかの研究の後/
、私はAnujジャイナ教の論文で説明ヒューリスティックに基づくソリューションを実装:
私の問題ドメインは計算化学であり、そこに私たちは巨大な多変量問題に取り組みます。また、成功した数十原子の何千ものを含むシステムに適用されてきたここで適用することができる2つの一般的なケースのグローバル最適化アルゴリズムがあります
a)は、遺伝的アルゴリズム
http://en.wikipedia.org/wiki/Genetic_algorithm
b)にシミュレーテッドアニーリング
http://www.gnu.org/software/gsl/
ftp://ftp.alumni.caltech.edu/pub/ingber
http://www.taygeta.com/annealing/simanneal.html
http://www2.cs.uni-paderborn.de/cs/ag-monien/SOFTWARE/PARSA/
http://www.codeproject.com/KB/recipes/SimulatedAnnealing.aspx
どちらのアルゴリズムも、パブリックドメインの実装がよく理解されており、よく理解されている最適性プロパティを持っています。
はボックスです重複が許されるか? –
@ Jeff:指定された問題については、重複しても利益は得られません。 –
これは便利です:http://stackoverflow.com/questions/4701887/find-the-set-of-largest-contiguous-rectangles-to-cover-multiple-areas/4701966#4701966 – biziclop