• 沒有找到結果。

另類背包問題

N/A
N/A
Protected

Academic year: 2022

Share "另類背包問題"

Copied!
11
0
0

加載中.... (立即查看全文)

全文

(1)

另類背包問題

by lawfung

(2)

其他背包?

 分數背包

 V跟W都很大的背包

(3)

分數背包

• 每個物品都可以只取部分

(4)

分數背包

• 其實可以貪心(?

• 每次都直接取最性價比最高的。

(5)

V跟W都很大的背包

• 例如 V <= 10^9, W <= 10^9

• 但是物品數量 N <= 20

(6)

V跟W都很大的背包

• 不要掉入思考的窠臼

• 啊不就枚舉嗎

• O(2^N)

(7)

V跟W都很大的背包

• 那如果 N <= 40 ?

• 折半枚舉

(8)

折半枚舉

• 今天把物品任意分兩堆A, B,

• 最後取的集合一定是

A的某子集,加上B的某個子集

• 假設我們已經知道A要取哪個子集了,B的子集該怎麼取?

• 令剩餘的背包大小(W - A子集重量總和)為L

• 那麼我們要取的是B的子集中,重量小於L中價值最大的。

(9)

折半枚舉實作

• 先把B集合的子集枚舉出來成S

• 把S中的垃圾刪掉

(就是如果有兩種取法x, y,若是y取法的價值低於x,但是重量 高於x,那就把y刪掉)

• 最後枚舉A的子集,每次都在S二分搜重量,然後得到該種A子集 取法的最大價值

• 取所有最大價值的最大值

(10)

折半枚舉

• O(2^|B| * log(2^|B|)+ 2^|A|*log(2^|B|))

• =O( |B| * (2^|A|+2^|B|) )

• 所以|A|跟|B|大約平分成兩半是最好的!!

• O( N/2 * (2^(N/2) )

• =O( N * 2^(N/2) )

(11)

折半枚舉

• POJ 2758

POJ 2785

POJ 2785 POJ 2785

POJ 2785

POJ 2785

POJ 2785 POJ 2785

POJ 2785

參考文獻

相關文件

[r]

在解決實際問題時,最大的挑戰常常是將問題轉化成數學的 模型,其中一類可能的模型便是最佳化問題,也就是如何設

為使讀 者清楚問題的背景, 先給出定角對定邊的基本問題。 如圖 1, 線段 AB 的長是定長, 在平 面內一點 C, ∠ACB 度數為定值, 則點 C 的運動軌跡是三角形 ABC 外接圓上的圓弧,

[r]

[r]

形成 形成 形成 研究問題 研究問題 研究問題 研究問題 形成問題 形成問題 形成問題 形成問題 的步驟及 的步驟及 的步驟及 的步驟及 注意事項 注意事項 注意事項

所謂《九章》是將數學分成九大類的應用問題,其中僅在〈方程〉那一章(類)涉及正負數

教師派發討論問題紙 (附件三) ,將五至六位 學生分成 一組。組內應包括男女同學。.. 學生用 15