OK。DPアルゴリズムは不必要に複雑なようです。コメントを読んだ後、これは問題の単調バージョンを解決するかもしれないと思います(しかし、私はすべての詳細をチェックしていません)。
xi=⌊xi⌋+{xi}⌊xi⌋{xi}xi⌊xi⌋+vivivivi
xixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
絶対値のため、式は複雑です。ただし、単調性があるため、2つの内側の絶対値の内側のものは同じ符号を持つ必要があります。外側の絶対値があるため、その符号が何であるかは実際には関係なく、式は単純化されます
|vi−vj−({xi}−{xj})|
これ以降、解が単調であるとは仮定しませんが、代わりに、すべてのペアについて上記の項の合計を最小化するように目的を変更します。この問題の解決策がたまたま単調である場合、それはもちろん単調バージョンの最適な解決策でもあります。(これは次のように考えてください:解が単調でない場合、元の問題には無限のペナルティがあり、新しい問題にはペナルティが小さい、新バージョンでも単調な解が勝った場合、単調バージョンの解でなければなりません)
{xi}>{xj}vi≥vj
{xi}>{xj}vi<vjvi vj
ijvi−vj{xj}−{xi}
k(i,k)(j,k)
|vi−vk−({xi}−{xk})|+|vj−vk−({xj}−{xk})||vj−vk−({xi}−{xk})|+|vi−vk−({xj}−{xk})|
ABCDA+B=C+D|A−B|≥|C−D||A|+|B|≥|C|+|D|xk、スワッピングはより良いものにしかならないことがわかっています。
{xi}
最後に、問題の単調整数バージョンに進みたいと思います。実際に、最適なソリューションが単調な床/天井バージョンと同じであることを証明できます。
vixivik v i > k v i = v i − 10,1,2,...,max{vi}kvi>kvi=vi−1|{xi}−{xj}|<1
我々は証明しなければならない今、平均グループ内少なくとも平均であるグループにプラス。これが当てはまらない場合は、すべてのに対してとするだけで、目的関数が改善されることを計算で再度示します。{xi}k+1{xi}k1/2vi=vi−1vi>k
の平均は範囲にあるため、実際には最大で2つのグループがあり、これはフロア/天井バージョンに対応します。{xi}[0,1)