看板 b92902xxx 關於我們 聯絡資訊
問題是: 今天有大小分別為8、5、2的貨物, 要放到大小為25的貨櫃(可用多個貨櫃) 求貨櫃數最小的裝法,及此時各貨櫃剩餘的空間 Input: 各種貨物的數量 output: 貨櫃數,各貨櫃剩餘空間 以下是我這個禮拜聽到的方法(幾乎都不是我想到的) 今天聽到還有其他方法,希望同學們不吝指教 (抱歉我認得的人太少了...連他名字都說不出來... ><|| ) 方法一: 老師說的簡單Greedy 先填8,再填5,然後是2, 填不下了,或是沒有更小的貨物時,填另一個貨櫃 反例: 8*4, 5*2, 2*4 此法解:(8,8,8) (8,5,5,2,2,2) (2) 最佳解:(8,8,5,2,2)*2 方法一的修正版:先填5,再填8,2 理由,5是25的因數,若有可用5填滿的貨櫃,定可先找出 之後,由於8是2的因數,故Greedy確保有最佳解 反例: 8*2, 5*2, 2*12 此法解:(5,5,8,2,2,2) (8, 2*8) (2) 最佳解:(8,5,2*6)*2 方法二: 找填滿25的整數解,共6組:(8,8,5,2,2) (8,5,5,5,2) (8,5,2*6) (5*5) (5*3,2*5) (5,2*10) a) 把6組作排列,先後把可以填滿的貨櫃找出,再作Greedy 反例目前沒有,但其後Greedy不保證是最佳解(?) b) 先用8的數量較多的解試,依此類推 反例: 5*5, 2*50 此法解:(5*5) (2*12)*4 (2,2) 最佳解:(5,2*10)*5 方法三: 班代提出的"BFS"---廣度優先搜尋 把每一種填法都找出來...時間複雜度n*m*l... 理論上絕對會有最佳解(但是耗時間和空間,且會用到還沒上到的東西) 方法四: DP 問題在....有些人連Greedy都弄不懂... 而且在考慮各貨櫃獨立後,不能只看目前是否有最佳解 (可能現在的填滿了,卻導致找不到最佳解) 注:方法二的Greedy可用DP取代,唯意義不大... --- 以上, 方法三和四應該可以確保有最佳解,但方法四超過進度過多 原先以為二的b是較可行的辦法,但找到反例後,a變成可能是最簡單找到最佳解的方法 剩下的問題是...真的要想那麼多嗎...? 因為...說不定目的是跟老師答案一樣,不是找最佳解... -- 不太重要的p.s.: 作業三難度大幅下降.... Time(作業一) + Time(作業三) << Time(作業二) -- 也許我們人類真的都是破壞的火焰 以自己期望人家的樣子 以自己以為人家的樣子 去改變別人 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.100