2n个整数分为两组,使两组和差的绝对值最小
生活随笔
收集整理的這篇文章主要介紹了
2n个整数分为两组,使两组和差的绝对值最小
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://blog.sina.com.cn/s/blog_6f194ed3010114vt.html
最近建??吹阶鳂I這個題,一開始想了很久。在網上發現竟然沒有完備的算法。不過最后想到一個可以Lingo實現的線性規劃模型。
嚴格說,這不是一個算法,Lingo是如何實現0-1規劃的我并不清楚。有可能也是枚舉法,不過對于具體問題至少可以解決。因為是TeX編譯的,重新打一遍太麻煩,所以正文用截圖。最后提一個不成熟的算法。
問題重述:有2n個整數,試將其平均分為兩組(每組n個),使兩組元素和的差值最小。
(這里有一點打錯了?!皬牧硪粋€角度看”后的等式要加絕對值號。另外這里要注意需要限定S1較大,之所以如此是因為帶絕對值號的min顯然是比較難實現的。不過我并不清楚Lingo能不能實現絕對值的min...我接觸Lingo才幾天。)
這個問題可以擴展到多維變量,并可擴展到分為多組。下面就多元、多組的情況討論一個想法。
一開始我設想了一個算法,但是感覺問題多多,只能有時間再深入想:
多元統計分析中有一個動態算法:K均值聚類。其基本思想是,假定目標是聚為k類,任意劃分為k組,并分別計算其均值。然后任選一個樣本點,計算其到所有k類中心的距離。尋找最小距離,若對應的中心不是自身所在組,則將其調至改組,再重新計算各組中心,并重復本步驟;如果其對自身所在組中心的距離為最小,則保持不變,繼續尋找下一個點,直到所有的點都不需要調整。
類似這個想法,是否可以反其道行之,每次都將較遠的元素與組調在一起。假設存在一個調整,可以使組內均值向量更靠近總體均值向量,則進行該調整,直到不存在調整空間,則停止算法。
這個問題看起來好像沒什么實際意義,純粹是一個數字游戲,其實可以很廣泛的加以應用。比如給定你一隊人馬,每個人能力不同,如何分配才能保證每組實力相近以求得公平?或者一些施工人員,你想要他們產生競爭激勵,分組時就不應該偏心而應盡可能保證每組實力接近。該問題就是這些實際問題的抽象。
總結
以上是生活随笔為你收集整理的2n个整数分为两组,使两组和差的绝对值最小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在数组中找出3个数使得它们和为0
- 下一篇: cJsonFiles数据结构