首先你有一个函数f(k),表示选k个物品时的代价。
如果f(k)是个整数,那么附加代价可以只在整数内二分。
如果出现了附加代价为t时选了k+1个物品,而附加代价为t+1时选了k−1个物品,(DP时代价相同取物品数较多的方案)那么一定有f(k)+kt=f(k+1)+(k+1)t
因为如果是这种情况:
f(k−1)+(k−1)t≥f(k)+kt>f(k+1)+(k+1)tf(k−1)+(k−1)(t+1)<f(k)+k(t+1)≤f(k+1)+(k+1)(t+1)
而上下的三者之差只有1的区别,就会得到:
f(k−1)+(k−1)t=f(k)+kt=f(k+1)+(k+1)t+1
做差就会有:
f(k−1)−f(k)=tf(k)−f(k+1)=t+1
这个函数凹了!
于是前面提到的结论成立。
而函数的凸性怎么证?即证f(k−1)−f(k)≥f(k)−f(k+1)
首先要求决策具有单调性,即设p(i)为i的最优决策点中最靠右的点,则对于 j<i 要求 p(j)≤p(i)
决策的单调性可以通过代价函数的凸性得知。比如说平方函数,越大增速越快。
然后是论文里提到的证明:


论文中提到的"仅在最后一段大小不唯一处不可导"的意思是左导数不等于右导数(p′(i,x)变化)。
我模拟了一下2 1 3 x分两段算最小平方和的情况:

第一项为分两段的最小平方和,第二项为p′(2,x),第三项为x,在p=2时导数为x+3,在p=3时导数为x,可以明显地看出这一点,在45.00000附近变化率缩小了两倍。
因此,记Δ1=Δx→0limans(i,x+Δx)−ans(i,x),Δ2=Δx→0limans(i+1,x+Δx)−ans(i+1,x)
可以得到Δ1≥Δ2,即ans(i,x)−ans(i+1,x)随x增大单调不降。令x→0和x→∞即可得到最终的结论。