BAIK. Algoritma DP tampaknya tidak perlu rumit. Setelah membaca komentar saya pikir ini mungkin menyelesaikan masalah versi Monoton (tapi saya belum memeriksa setiap detail).
Pertama, anggap setiap , di mana ⌊ x i ⌋ adalah bagian integral, { x i } adalah bagian fraksional. Asumsikan x i dibulatkan menjadi ⌊ x i ⌋ + v i , di mana v i adalah integer nonnegatif (tentu saja secara umum v i bisa negatif, tetapi kita selalu dapat bergeser sehingga v terkecil i adalah 0).xsaya= ⌊ xsaya⌋ + { xsaya}⌊ xsaya⌋{ xsaya}xsaya⌊ xsaya⌋+vivivivi
Sekarang, pertimbangkan biaya untuk pasangan , x j saat melakukan pembulatan ini. Biaya seharusnyaxixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
Ungkapannya rumit karena nilai absolutnya. Namun, perhatikan bahwa kita memiliki sifat monoton, sehingga hal-hal di dalam dua nilai absolut batin harus memiliki tanda SAMA. Karena kita memiliki nilai absolut terluar, tidak peduli apa tanda itu, ungkapan yang disederhanakan
|vi−vj−({xi}−{xj})|
Mulai sekarang kami tidak menganggap solusinya monoton, tetapi sebaliknya, kami mengubah tujuan untuk meminimalkan jumlah istilah di atas untuk semua pasangan. Jika solusi untuk masalah ini adalah monotonik, maka tentu saja itu juga solusi optimal untuk versi monotonik. (Anggap ini sebagai: masalah asli memiliki penalti tak terbatas ketika solusinya tidak monoton, masalah baru memiliki penalti lebih kecil, jika solusi monoton menang bahkan dalam versi baru, itu harus menjadi solusi untuk versi monoton)
Sekarang kita ingin membuktikan, jika , dalam solusi optimal kita harus memiliki v i ≥ v j .{xi}>{xj}vi≥vj
Asumsikan ini tidak benar, bahwa kita memiliki pasangan tetapi v i < v j . Kami akan menunjukkan bahwa jika kami menukar v i v j solusinya menjadi sangat baik.{xi}>{xj}vi<vjvi vj
Pertama kita membandingkan istilah antara dan j , di sini sangat jelas bahwa swapping benar-benar lebih baik karena dalam versi non-swap, v i - v j dan { x j } - { x i } memiliki tanda yang sama, absolut nilai akan menjadi jumlah dari dua nilai absolut.ijvi−vj{xj}−{xi}
Sekarang untuk apa pun , kami membandingkan jumlah pasangan ( i , k ) dan ( j , k ) . Artinya, kita perlu membandingkank(i,k)(j,k)
dan | v j - v k - ( { x i } - { x k } ) | + ||vi−vk−({xi}−{xk})|+|vj−vk−({xj}−{xk})|.|vj−vk−({xi}−{xk})|+|vi−vk−({xj}−{xk})|
Gunakan , B , C , D untuk menunjukkan empat hal dalam nilai absolut, jelas bahwa A + B = C + D . Juga jelas bahwa | A - B | ≥ | C - D | . Dengan cembungnya nilai absolut, kita tahu | A | + | B | ≥ | C | + | D | . Ambil jumlah atas semua x kABCDA+B=C+D|A−B|≥|C−D||A|+|B|≥|C|+|D|xkKita tahu bertukar hanya bisa lebih baik.
Perhatikan bahwa sekarang kita sudah memiliki solusi untuk versi lantai / langit-langit Monoton: harus ada ambang, ketika lebih besar selalu dibulatkan, ketika lebih kecil selalu dibulatkan ke bawah, ketika itu adalah putaran yang sama beberapa ke atas dan beberapa turun, sedangkan kualitas solusi hanya tergantung pada jumlahnya. Kami menghitung semua solusi ini dan memilih yang memiliki fungsi objektif terkecil. (Semua solusi ini harus monoton).{xi}
Akhirnya kami ingin pergi ke versi integer monoton masalah. Kami benar-benar dapat membuktikan solusi optimal sama dengan versi lantai / langit-langit Monoton.
Seperti kita mengasumsikan, yang terkecil adalah 0. Grup semua x i 's menurut mereka v i ' s, dan memanggil mereka kelompok 0 , 1 , 2 , . . . , maks { v i } . Pertama-tama kita harus membuktikan bahwa tidak ada grup kosong, tetapi ini sederhana, jika grup k -th kosong, untuk v i > k biarkan saja v i = v i - 1vixivi0,1,2,...,max{vi}kvi>kvi=vi−1. Mudah untuk melihat fungsi objektif selalu membaik (pada dasarnya karena ).|{xi}−{xj}|<1
Sekarang kita akan membuktikan, rata-rata dalam kelompok k + 1 adalah setidaknya rata-rata { x i } dalam kelompok k ditambah 1 / 2 . Jika ini tidak benar, cukup biarkan v i = v i - 1 untuk semua v i > k , perhitungan lagi menunjukkan fungsi objektif membaik.{xi}k+1{xi}k1/2vi=vi−1vi>k
Karena rata-rata dalam kisaran [ 0 , 1 ) , sebenarnya ada paling banyak dua kelompok, yang sesuai dengan versi lantai / ceil.{xi}[0,1)