複合長方形領域の最小分割

複合長方形領域の最小分割  Partitioning a rectilinear polygon to rectangles
3
Hiro Ono / 小野雅裕 @masahiro_ono

Planetary roboticist @NASA JPL. Father of princess and munchkin. Opinions my own. NASA JPL技術者。東京弁の阪神ファン。副業作家。ミーちゃんとユーちゃんのパパ。児童書『 #宇宙の話をしようhttps://t.co/3c1IM1rtb1

Hiro Ono / 小野雅裕 @masahiro_ono

数学に強い方、ヘルプ要請です!!!! 以下の問題を解くアルゴリズムを探してます。(Pythonライブラリがあればなお良い。)ご存知でしたら教えて下さい! 問題:バイナリ値(0か1)が入った2Dグリッドが与えられたとき、最少の数の長方形で1のセルを全て覆い、かつ0のセルを全く覆わない方法を見つける。 pic.twitter.com/e7kbqHj41X

2019-11-21 09:39:12
拡大
Hiro Ono / 小野雅裕 @masahiro_ono

きっと解いた人がいるであろうこの問題が、何と呼ばれているかだけでも教えていただければ嬉しいですm(_ _)m

2019-11-21 09:41:30
Hiro Ono / 小野雅裕 @masahiro_ono

みなさま、たくさんのレスありがとうございます!!!友人が見つけてくれた解法も貼っておきます! 結論からいうとNP hardで、どうやって近似的に解くかがフォーカスです。 en.wikipedia.org/wiki/Polygon_p… github.com/mittalgovind/P… stackoverflow.com/questions/5919…

2019-11-21 22:46:54
素地 @50j1_

@masahiro_ono 最大長方形問題というものがあり(algorithms.blog55.fc2.com/blog-entry-133…)、これを繰り返し適用することで(最大長方形を検出→埋めるの繰り返し)、O(領域の面積×長方形の分割数)の計算量で実現可能な気はします、、(もっと賢いやり方がある気もします…)

2019-11-21 10:13:56
hhk @hkorg

@masahiro_ono 最大の長方形であれば、以下が参考になると思います。最大が見つかれば、それを除いて同様のアルゴリズムで次の最大が見つかるはず。 ipsj.or.jp/07editj/promen…

2019-11-21 10:41:46
Tatt (たっと) @tatt61880

@50j1_ @masahiro_ono その方法では添付画像のInputに対し3つの長方形が必要になると思うのですが違いますか? pic.twitter.com/g7nvt6kvBq

2019-11-21 19:37:04
拡大
Yotaro Takazawa @y_takazawa

@masahiro_ono Imai and Asano, SIAM J. Comput. (1986)の7.1にほぼ同じ問題(より一般的?)が載ってますがどうでしょうか。 問題を二部グラフ上の独立集合問題にして帰着して解いているみたいで、実装も楽かと思いました。 semanticscholar.org/paper/Efficien…

2019-11-21 11:30:31
Yotaro Takazawa @y_takazawa

@masahiro_ono 具体的には、 1. 論文の通りに二部グラフ上の独立集合問題に帰着する。 2. 二部グラフ上の最大独立集合は、二部グラフの最大マッチングから間接的に求まるので、Pythonの最大マッチングのライブラリ(Networkxなど)を使って求める という感じでいけるかなと 参考slideshare.net/mobile/drken12…

2019-11-21 11:36:33
Tatt (たっと) @tatt61880

@hkorg @masahiro_ono その方法では添付した画像のInputで3つの長方形を使用することになると思うのでダメだと思います。(2つの長方形で済みます。) pic.twitter.com/lm5f6p1y5W

2019-11-21 19:40:46
拡大
Hiro Ono / 小野雅裕 @masahiro_ono

あ、ちなみに、詳細は省きますが、この問題が解けたら火星ローバーのなにかしらんに役立ったりします! twitter.com/masahiro_ono/s…

2019-11-21 22:50:29

ワシのためのメモ

この問題は、「最大長方形問題」ではない。似ているけれども。
この問題は、「複合長方形領域の最小分割」で正しいだろうか?

複合長方形領域の最小分割
https://ci.nii.ac.jp/naid/110002723815/
複合長方形領域の最小分割
Partitioning a rectilinear polygon to rectanglesPython
Python code for partitioning rectilinear polygon in O(n) time complexity
https://github.com/mittalgovind/Polygon-Partition 

この問題は
ACM国際大学対抗プログラミングコンテスト
における2012年国内予選のG問題に対応している。
Problem G ACM洋菓子店