次のようなブール配列を想定します。
1111
1111
1110
1111
1001
次に、この形状を実現するために、任意のサイズの最小の長方形を配置する方法を見つける必要があります。したがって、たとえば、次のようになります。
+-++
| |+
| |
+-++
+ +
ここで、+は長方形の角であり、|、-は長方形の境界です。
私が考えたのは、可能な限り最大の長方形から始めて、配置できる場所が配列内にあるかどうかを確認することです。この場所で、長方形で覆われるすべての配列要素が真になります。そのような場所が存在する場合、長方形がリストに追加されます。その後、配列の左側のスペースに長方形を配置する別のスポットがあるかどうかを確認し、長方形のサイズを小さくして、サイズが0になるまで残りのスペースでプロセスを繰り返します。
私たちは常に大きな長方形から始めるので、これは良い結果をもたらすはずです。もちろん、使用する長方形の数を減らすことができます。つまり、使用する長方形の量は少なくなります。
しかし、これは私が考えた概念であり、まだ実践されていません。それはかなり非効率的であるように思われるので、これを達成するための既知の迅速なアルゴリズムがあるかどうか疑問に思いましたか?