全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:970
推到 Plurk!
推到 Facebook!

計算次數過多(演算法問題)

尚未結案
beta
一般會員


發表:7
回覆:11
積分:3
註冊:2003-01-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-26 16:11:24 IP:203.69.xxx.xxx 未訂閱
在MICKEY版主及許多網友幫忙下,最近寫了一支線性規劃的程式。 我先做一下說明: EX: 工件一 工件二 工件三 工作天數 4 6 5 到期日 6 5 15 要求出上述之最小延遲天數 條件一天只能執行一個工件且必須連續執行至該工件結束才能執行下一工件 各工件之執行順序不拘, 根據我的程式 有幾個工件就必須運算 N! (N=工件數) 從1到10個工件都很快(10個工件大約3-5min) 一旦超過10個工件,運算次數大增 時間馬上暴增 13個工件要超過30個小時 我根本沒勇氣去RUN個工件 請教各位前輩,或任何有興趣的人, 要如何做可以減少運算次數 如有需要我可以mail Source Code給你們 或上傳(我不會上傳) 就降子囉!!
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-28 00:16:38 IP:61.62.xxx.xxx 未訂閱
Hi, 基本上排序 (permutate) 會花比較長的時間沒錯, 但其實不需要一一去計算每一個順序的總 [最小延遲天數], 可以先隨便排一個完整的計算最小延遲天數(a)後, 再利用排序好的順序從頭累加 最小延遲天數 並和 (a)比較, 若優於 (a) 才繼續算, 否則就放棄這組, 再算下一組, 以減少運算時間及次數!
beta
一般會員


發表:7
回覆:11
積分:3
註冊:2003-01-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-29 09:23:23 IP:203.69.xxx.xxx 未訂閱
感謝TimHuang兄的建議,我目前也是這樣做。 但是時間還是太久了。
beta
一般會員


發表:7
回覆:11
積分:3
註冊:2003-01-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-30 10:58:54 IP:203.69.xxx.xxx 未訂閱
是否請各位前輩推薦幾本書給小弟參考?
Chris.Net
一般會員


發表:0
回覆:9
積分:6
註冊:2004-03-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-30 23:07:53 IP:61.58.xxx.xxx 未訂閱
其實依到期日排序後先執行最早到期日的工作 依序作下來所得到的就是最小延遲天數了
beta
一般會員


發表:7
回覆:11
積分:3
註冊:2003-01-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-31 14:30:16 IP:203.69.xxx.xxx 未訂閱
感謝CHris.net的想法, 但是您提的作法未必可以得到最佳解, 就算是最佳解也必須證明!
Chris.Net
一般會員


發表:0
回覆:9
積分:6
註冊:2004-03-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-02 00:28:20 IP:61.58.xxx.xxx 未訂閱
先計算總工時 然後由最後一天開始減 找延遲最小的工作做 如果有相同的工作選工作時間最小的 一直重複往前推算即可
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-02 02:40:43 IP:203.204.xxx.xxx 未訂閱
Chris.Net 你好 可以的話,將該程式壓縮後上傳上來,讓大家有個參考的機會,上傳得簡單,只要到討論區首頁往下找到〔會員貢獻專區(歡迎會員提供資訊共享 )〕這大標題內的 (會員求助程式檔案上傳區) 就有[按此上傳問題程式] 把它按下去,之後應該看到就會了。
beta
一般會員


發表:7
回覆:11
積分:3
註冊:2003-01-03

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-02 09:15:27 IP:203.69.xxx.xxx 未訂閱
我已經將程式上傳了,請各位有興趣的朋友看看。
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-03 02:37:44 IP:203.204.xxx.xxx 未訂閱
beta 你好     也許你可以先參考以下連結的排列組合的方法,取代遞迴呼叫以減少函式或程序的呼叫次數 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=45540
beta
一般會員


發表:7
回覆:11
積分:3
註冊:2003-01-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-05 10:16:25 IP:203.69.xxx.xxx 未訂閱
感謝CHance36的建議。 我一開始也是這樣做但 這種作法一旦超過10個工件會造成記憶體不足。 所以我採用展開一筆計算一筆的作法。
系統時間:2024-07-05 21:51:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!