一個整數A劃分成n個數,每個數至少等於1,怎樣劃分才能使這n個數的平方和最小?
直覺告訴我是均分A能達到效果,方法如下:
val = A / n;rest = A % n;cnt = n - rest;ans = cnt * val ^ 2 + rest * (val + 1) ^ 2;ans就是要求的最小值。
但是我不知道要如何證明其正確性,也不知道其原理根源在哪裡?
假設n個數中存在兩個數a,b,
磨光變換。
假定最優解不是這樣,那麼可以進行微調,得到一個更優解。(參見 @npbool的回答)於是我們知道,最優解如果存在,必定為均分(各項之間最多相差1)的形式。又因為最優解必定存在(所有的分法種類數都是有限的,因此下確界一定可以取得),說明均分的方案就是最優解。答案是這樣,證明也很簡單。首先如果A/n為整數,那麼這就是均值不等式的情況:而f(x)是一個凸函數,局部極小就是全局最小。
既然是問原理不是問證明,那就應該說的本質一點。
簡單的說,原理就是柯西不等式,或者說是平均值不等式,都可以:
這個不等式換一種說法:當這個總和固定的時候,平方和在這一堆數都相等的時候最小。
更本質的說法是這個函數的凸性,由於這個函數是下凸的,所以
,(請自行腦補函數圖像和左右兩邊在圖像上的位置),由此可得上述平方和與和的平方之間的關係。
首先肯定題主的劃分確實是最優劃分,以下給出證明
設有
所以我們有
所以按題主的劃分,以下簡稱方案A我們有
所以有
設是
的任意一個劃分B,則
總可以表示成下面的兩個和,即總有:
所以有
現在即我們只需證明即能得出A是最優方案,很明顯當b = 0時該條件成立
當 是我們有,因為
所以我們有
所以 (此處有誤)
得證!
------------------------------------------------------------------------------------------------------------
最後一步證明錯了哈,害我一晚上沒睡著,蛋疼啊,這個不能得出上面的結論,但其實可以證明,首先我們假定
中只有
個不為零,為了討論方便我們先設前
個為正,最後一個為負,很明顯如果我們將最後一個增大至零,在前
個數做相應的減少,但仍保持前
個位正數,此時前
個數的平方和一定小於變化之前的平方和,我們很容易將這個結論擴展至
項中有
個為負數的情況,即有:
又因為當時我們有:
所以
所以
所以得證!
-----------------------------------------------------------------------------------------------------------
推薦閱讀:
