我有一個二進制矩陣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) }
。
我在尋找如何用最少數量的盒子找到封面。
謝謝
此問題被稱爲直線多面體的分區。關於類似的問題biziclop在評論中發佈了很好的answer。
理念算法是減少問題二分圖的最大匹配(頂點是可能的削減。)
3D
我原來的問題是3D同一主題。該版本被證明是NP-complete: -/
經過一番研究,我實現了基於由Anuj耆那教在論文中描述的啓發式解決方案:
我的問題領域是計算化學,我們解決了巨大的多元問題。有跡象表明,也已成功應用於含有原子數以萬計的系統,可以在這裏應用了兩個一般情況下,全局優化算法:
一)遺傳算法
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
這兩種算法都有很好的公共領域實現和良好理解的最優性質。
,方框允許重疊? – 2011-03-16 10:26:57
@Jeff:對於指定的問題,您不會因重疊而獲得任何好處。 – 2011-03-16 10:31:33
你可能會覺得這很有用:http://stackoverflow.com/questions/4701887/find-the-set-of-largest-contiguous-rectangles-to-cover-multiple-areas/4701966#4701966 – biziclop 2011-03-16 10:33:50