DOBRZE. Algorytm DP wydaje się niepotrzebnie skomplikowany. Po przeczytaniu komentarzy myślę, że może to rozwiązać monotoniczną wersję problemu (ale nie sprawdziłem każdego szczegółu).
Najpierw załóżmy, że każdy , gdzie ⌊ x i ⌋ jest częścią integralną, { x i } jest częścią ułamkową. Załóżmy, że x i jest zaokrąglone do ⌊ x i ⌋ + v i , gdzie v i jest nieujemną liczbą całkowitą (oczywiście ogólnie v i może być ujemna, ale zawsze możemy przesunąć tak, aby najmniejsza v i wynosiła 0).xi=⌊xi⌋+{xi}⌊xi⌋{xi}xi⌊xi⌋+vivivivi
Teraz weź pod uwagę koszt pary , x j podczas wykonywania tego zaokrąglania. Koszt powinien wynosićxixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
Wyrażenie jest skomplikowane ze względu na wartości bezwzględne. Zauważ jednak, że mamy monotoniczność, więc rzeczy wewnątrz dwóch wewnętrznych wartości bezwzględnych powinny mieć znak SAM. Ponieważ mamy zewnętrzną wartość bezwzględną, tak naprawdę nie ma znaczenia, czym jest ten znak, wyrażenie to po prostu upraszcza
|vi−vj−({xi}−{xj})|
Odtąd nie zakładamy, że rozwiązanie jest monotoniczne, ale zamiast tego zmieniamy cel, aby zminimalizować sumę powyższego terminu dla wszystkich par. Jeśli rozwiązanie tego problemu okaże się monotoniczne, to oczywiście jest to również optymalne rozwiązanie dla wersji monotonicznej. (Pomyśl o tym jako: oryginalny problem ma nieskończoną karę, gdy rozwiązanie nie jest monotoniczne, nowy problem ma mniejszą karę, jeśli rozwiązanie monotoniczne wygrywa nawet w nowej wersji, musi to być rozwiązanie monotonicznej wersji)
Teraz chcielibyśmy udowodnić, że jeśli , w optymalnym rozwiązaniu musimy mieć v i ≥ v j .{xi}>{xj}vi≥vj
Załóżmy, że to nieprawda, że mamy parę ale v i < v j . Pokażemy, że jeśli zamienimy v i v j, rozwiązanie stanie się zdecydowanie lepsze.{xi}>{xj}vi<vjvi vj
Najpierw porównujemy termin między i j , tutaj jest naprawdę jasne, że zamiana jest zdecydowanie lepsza, ponieważ w wersji bez zamiany, v i - v j i { x j } - { x i } ma ten sam znak, absolut wartość będzie sumą dwóch wartości bezwzględnych.ijvi−vj{xj}−{xi}
Teraz dla dowolnego porównujemy sumę par ( i , k ) i ( j , k ) . Oznacza to, że musimy porównaćk(i,k)(j,k)
i | v j - v k - ( { x i } - { x k } ) | + ||vi−vk−({xi}−{xk})|+|vj−vk−({xj}−{xk})|.|vj−vk−({xi}−{xk})|+|vi−vk−({xj}−{xk})|
Zastosowanie , B , C , D , oznaczające cztery warunki wewnątrz wartości bezwzględnej, to jest oczywiste, że + B = C + D . Jest również jasne, że | A - B | ≥ | C - D | . Dzięki wypukłości wartości bezwzględnej wiemy | A | + | B | ≥ | C | + | D | . Weź sumę nad wszystkimi x kABCDA+B=C+D|A−B|≥|C−D||A|+|B|≥|C|+|D|xkWiemy, że zamiana może być tylko lepsza.
Zauważ, że teraz mamy już rozwiązanie dla monotonicznej wersji podłogi / sufitu: musi istnieć próg, gdy jest większy zawsze zaokrągla w górę, gdy jest mniejszy zawsze zaokrągla w dół, gdy jest równy zaokrągla w górę, a niektóre w dół, podczas gdy jakość rozwiązania zależy tylko od liczby. Wymieniamy wszystkie te rozwiązania i wybieramy jedno z najmniejszą funkcją celu. (Wszystkie te rozwiązania są z konieczności monotoniczne).{xi}
Na koniec chcielibyśmy przejść do monotonicznej liczby całkowitej problemu. Możemy faktycznie udowodnić, że optymalne rozwiązanie jest takie samo jak wersja monotoniczna podłogi / sufitu.
Ponieważ zakładamy, najmniejsza 0. Grupa wszystkich x i jest zgodnie z ich v i 's, które nazywają grupę 0 , 1 , 2 , . . . , max { v i } . Najpierw udowodnimy, że nie ma pustych grup, ale jest to proste, jeśli k-ta grupa jest pusta, dla dowolnego v i > k po prostu pozwól v i = v i - 1vixivi0,1,2,...,max{vi}kvi>kvi=vi−1. Łatwo jest zauważyć, że funkcja celu zawsze się poprawia (zasadniczo dlatego, że ).|{xi}−{xj}|<1
Teraz udowodnimy, średnia w grupie k + 1 jest co najmniej średnią { x i } w grupie k powiększonej o 1 / 2 . Jeśli nie jest to prawdą, po prostu pozwól v i = v i - 1 dla wszystkich v i > k , obliczenia ponownie pokazują poprawę funkcji celu.{xi}k+1{xi}k1/2vi=vi−1vi>k
Ponieważ średnia mieści się w przedziale [ 0 , 1 ) , tak naprawdę istnieją co najwyżej dwie grupy, co odpowiada wersji podłoga / sufit.{xi}[0,1)