2016-06-21 6 views
2

可能な限り少ない行数を使用してテーブルの要素を整列させるアルゴリズムを作成する必要があります。ソートハチする必要がテーブル内の要素を自動整列する

要素は次のように水平位置/アライメント

ておく必要があります。 を[enter image description here

私は誰かがすでにこれをやった願っています。 ありがとう!

+0

青いストライプ14はどこから来たのですか?それは '入力データ'にはありません。 – CiaPan

+0

誤って削除された@failは秒単位で修正されます – Luka

+0

これはhttps://en.wikipedia.org/wiki/Bin_packing_problemのように見えます – arekolek

答えて

1

明確にする:それぞれのアイテムが1つの行に収まる必要があり、1つの行のみ(次の行に分割できない)が水平に移動できることを意味すると仮定します。

  • ソート長さの要素を:

    ヒューリスティック/単純に、私はこのようにそれを行うだろう。

  • 行が一杯になるか、それ以上一致する要素が見つからなくなるまで(最長から最短まで)項目を順番に選択して最初の空き行を埋めるようにしてください。
  • すべての要素が完了するまで繰り返す。

これは(比較的)すぐに(どこかO(nlogn)とO(N^2)との間にヒューリスティックな「ショートカット」に応じて)終了しますが、必要以上の穴を残し、それ以外の非最適なソリューションを上げます。

この問題は古典的なNP完全問題https://en.wikipedia.org/wiki/Karp%27s_21_NP-complete_problemsの1つに相当すると思いますので、実用的な非経験的解を見つけることはできません。

関連する問題