簡體   English   中英

如何加速嘗試決定哪個節點轉到哪個節點列表的算法,以便最終在爬山算法中獲得最佳分數

[英]How to speed up an algorithm that try to decide which Node go to which Nodelist so it ended up with a best score in hill climbing algorithm

假設您編寫了一個非常慢的爬山算法。 你的最小數據單元是一個節點。 您有另一個名為 NodeList 的類,它包含一個節點列表和一些其他數據。 您有一個 NodeList 列表,它們的數量或順序不會改變。 您的算法試圖決定哪個 Node 應該放在哪個 NodeList 中,以便我們最終獲得最好的分數。 分析算法后,您會發現分數計算消耗了 95% 的 CPU 時間。 你能想到加速算法的一般方法嗎?

我試圖用谷歌搜索它並了解爬山算法的基本概念。 但仍然無法弄清楚我應該怎么做來改進算法。 任何幫助將不勝感激。 謝謝。

沒有通用的改進,因為如果您已經擁有最好的代碼,它就無法進一步改進。

如果您的代碼要攀爬的路徑很長(可能很少),那么您可以通過嘗試許多不同的開始,然后僅從其中最好的開始攀爬來節省時間 - 這些往往會沿着它們的路徑走得更遠。

如果你能找到一個更快但可能不太准確的分數版本,你可以檢查很多分數不太准確的鄰居,並用滿分嘗試其中最好的。 這應該可以更快地找到改進,如果你接受你遇到的第一個改進,這應該會有所幫助。

您談論的是分數計算而不是分數更新。 爬山傾向於對現有答案進行微小更改。 如果您從頭開始計算每種可能性的分數,您能否找到一種方法來通過更新您已經為現有答案計算的分數來節省時間,因為您正在檢查的答案的鄰居非常類似嗎?

您可以再次查看是否有其他方法可以解決問題而不是爬山。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM