3

配色では、色相を並べ替えたいと思いますが、「大きなギャップ」を避けたい、つまり(0 ~ 360 度の値として表現された場合) 優先します350,354,2,10,152,10,15,350,354それを行うための最良のアプローチは何ですか(たとえばphpで)?それは「最大のギャップ」を見つけて、その後に開始することですか? より良いアイデアはありますか?

4

2 に答える 2

0

最大のギャップを見つけて、最初に入れます。

  1. 配列をソートする
  2. 最大のギャップを見つける (配列をループして、2 つの隣接間の最大距離を見つける)
  3. ギャップを先頭に移動します (すべての数字をシフトする別のループ)
于 2011-04-02T15:32:55.443 に答える
0

それほど多くない場合:

  1. 順番に並べるだけ
  2. 分散を見つける (モジュロ 360) (つまり、「モジュロ 360 平均」からどれだけ離れているか)
  3. 最初を最後に移動し、分散を再度確認します。
  4. それらをすべて試した後、最も小さいものを選択してください。

このアルゴリズムのリストのサイズは O(N^2) です。

主なポイントは、ここでは N 'rotations' しかないということです。「ギャップ」統計を決定し、それを N 回の回転すべてにわたって総当りし、「ギャップ」を最小化する配置を使用します。

于 2011-04-02T15:24:14.667 に答える