2012-04-23 12 views
1

私は、私が持っている問題の世話をするある種のアルゴリズムを探すことを試みてきました。私が見つけた最も近いものは、ビンのパッキングアルゴリズムのものですが、私が探しているものは静かではないと思います。と http://www.scribd.com/doc/90871434/Rectanglesひねりを入れたビンパッキング?

私の考え最低(高さ)四角形を見つけて、残りの長方形の幅に合う四角形を作成するために、そして:

この文書は私の問題のグラフィカルな表現と予想される出力でありますいくつかの再帰が残りの部分を把握します。

私が基本的にしようとしているのは、N個の水平に配置された長方形が与えられている場合、垂直に積み重ねられた長方形の最小量を見つけることです。

Javaでこれを行うには、私は入力矩形でHashMapを持っています。

アイデア、コード、リンクはありますか?ありがとう

答えて

1

私はあなたがを分割して征服すると思うと思います

最小の四角形を見つけたら、データセットも分割します。次の矩形は、排他的に左または右のセットのいずれかである。そしてそれは再帰的に働く。

2

最小の四角形を探します。

最初に作成された四角形を作成します。

残りの長方形を決定します。

残りの四角形の連続するすべてのグループに対してアルゴリズムを適用します。

+0

ああ、それは私が持っていた考え方と同じです。問題は、HashMapを通過し、最終的に正しい場所に矩形を配置するコードのアルゴリズム部分です。 – user1352234

+0

もっと明白な表現は、左から右に配置された長方形の配列です。その表現では、上記のアルゴリズムを実装する方がずっと簡単です。最悪の場合は 'O(n * n)'であり、その平均は 'O(n log(n))'になります。そのアルゴリズムが十分に高速でない場合、私はより複雑なO(n log(n)) '最悪の場合があります。しかし複雑さはおそらく保証されません。 – btilly

関連する問題