2016-05-22 3 views
0

ここ数日、私はAI問題の解決策を考えていました。この問題は、次のようになります。Python:幾何学的形状をボードマトリックスにフィットさせる?

与えられたサイズの四角いボード上で幾何学的形状(指定されたボードサイズを超えない)の配列を決定し、ボードが一様になるようにしたい覆われ、フォームは重複しません。

デプスファーストサーチ/グリーディーファーストファーストサーチを適用したいが、フォームとボードの適切な表現を見つけてそれをトラバースするのは難しいと感じている。私はPythonには新しいので、少し難しくなります。助言がありますか?

ビジュアル例:

Forms

Board

+0

例を投稿できますか? –

+0

@RosaGronchiあなたはテトリスゲームのようなものを想像することができます。あなたはテトリスのものとまったく同じようないくつかのフォームを持っているでしょう。フォームを回転することもできます... – user3293380

+0

https://en.wikipedia.org/wiki/Tessellation? –

答えて

0

あなたが記述している何が長方形/正方形のフィッティングのバリエーションです。問題のバージョンは、図の最適な配置のために未使用セルを最小限に抑えなければならない一方、記述しているような他のバージョンではボード全体を均一に覆う必要があります。これらを「完全正方形/矩形配置」問題と呼びます。

これらの問題を解決する典型的な方法は、矩形の変数を表す有限整数ドメインの使用と、幾何学的配置が有効なものであることを確認する制約のセットを使用します(つまり、ボードの境界線を越えない、互いにお互いに、..)。

+0

ボード上の塗りつぶした四角形は値1を持ち、空白のものは値0を持っています。 最初のボードをマトリックスにして、私はボードにフォームを追加するときに値> 1(オーバーラップしている)を取得しないようにすることができます。 しかし、それでもDFS/GBFSを使って行列をどのように横断するのかは明らかではありません。 – user3293380

+0

イメージを追加したので、分かりやすくなりました。 – user3293380

+1

これは本当にすべてのセルがそれと重なることができる数を知っているので、すべてのセルを均一にカバーすることが容易になるので、この問題をモデル化するための良い方法です。プログラミング言語としてECLiPSeを使用している[this](http://4c.ucc.ie/~hsimonis/shikaku.pdf)の論文をご覧ください。それはあなたに良い/インスピレーションを与えるかもしれません。検索に関しては、部分検索(最終的な検索スペースを減らすために事前にすべてのプレースメントを計算することで説明されています)または同時に検索しながら検索するかのいずれかを選択できます。もちろん、どちらも長所と短所があります。 – SND

関連する問題