[問題] 一個布林變數最佳化演算法

看板C_and_CPP (C/C++)作者 (醉起步溪月)時間12年前 (2013/10/22 22:04), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 最近有一個專題遇到一個最佳化問題: 有n個布林變數x_1,x_2,...x_n 和m個function,f_1,f_2,....f_m 每個function定義域由一個到n個變數組成 而function的值可以由查表得到( 表示O(1) ) 問題是找到一組X使得f_1+ f_2+...f_m的總和為最小 例如有四個變數x_1, x_2, x_3, x_4 兩個function f_1(x_1,x_3) f_2(x_2,x_3,x_4) 而且f_1(0,0) f_1(0,1) f_1(1,0) f_1(1,1)的值可查表取得(f_2()以此類推) 實際執行的x變數數量為3~30個 f的變數數目大約1~5個,然後有十幾個f 目前已經完成一版用暴力法求解 但n太大時就會慢到不行 不知道有沒有比較快的方法 或是演算法的名字可以提供呢 這種問題要去google都不知道從何查起orz -- In desperation they resorted to violence. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.111.116

10/23 05:38, , 2F
如果f_i是convex,可以試試relaxation
10/23 05:38, 2F

10/23 05:38, , 3F
詳見S. Boyd, convex optimization
10/23 05:38, 3F

10/25 15:00, , 4F
試試看 pseudo boolean constraint(ILP) solver ?
10/25 15:00, 4F
文章代碼(AID): #1IPeNx6e (C_and_CPP)
文章代碼(AID): #1IPeNx6e (C_and_CPP)