// 還未親測,后續補充
回溯法(探索與回溯法)是一種優先搜索法,又稱為試探法,按優先條件向前探索,以達到目標。但當探索到某一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態的點稱為“回溯點”。
在回溯法中,每次擴大當前部分解時,都面臨一個可選的狀態集合,新的部分解就通過在該集合中選擇構造而成,這樣的狀態集合,其結構就是一顆多叉樹。
應用回溯法求解問題時,首先應明確定義問題的解空間,該解空間應至少包含問題的一個最優解。
在定義了問題的解空間,還需要將解空間有效地組織起來,使得回溯法方便的搜索整個解空間,通常將解空間組織成樹或圖的形式。
確定了問題的解空間結構后,回溯法將從開始結點(根節點)出發,以深度優先的方式搜索整個解空間。
開始結點成為活結點,同時也成為擴展結點,向縱深方向搜索并移至一個新結點,這個新結點就成為一個新的活結點,并成為當前的擴展結點。
如果在當前的擴展結點不能再向縱深方向移動,則當前的擴展結點就成為死結點。此時應往回移動(回溯)至最近的一個活結點,并使其稱為當前的擴展結點。
回溯法以上述工作方式遞歸地在解空間中搜索,直至找到所要求的解或者解空間中已無活結點為止。
(1)針對給定的問題,定義問題的解空間
(2) 確定易于搜索的解空間結構
(3)以深度優先方式搜索解空間,并且在搜索過程中用剪枝函數避免無效檢索。
一般情況下可以用遞歸函數實現回溯法,遞歸函數模板如下:
void BackTrace(int t){ if(t>n){ Output(x) } else{ for(int i=f(n,t);i<=g(n,t);i++){ x[t] = h(i); if(Constraint(t)&&Bound(t)){ BackTrace(t+1); } } }}
t 表示遞歸深度,即當前擴展結點在解空間樹中的深度;
n 用來控制遞歸深度,即解空間樹的高度。
當 t>n時,算法已搜索到一個葉子結點,此時由函數Output(x)對得到的可行解x進行記錄或輸出處理。
用 f(n, t)和 g(n, t)分別表示在當前擴展結點處未搜索過的子樹的起始編號和終止編號;
h(i)表示在當前擴展結點處x[t] 的第i個可選值;
函數 Constraint(t)和 Bound(t)分別表示當前擴展結點處的約束函數和限界函數。
若函數 Constraint(t)的返回值為真,則表示當前擴展結點處x[1:t] 的取值滿足問題的約束條件;否則不滿足問題的約束條件。若函數Bound(t)的返回值為真,則表示在當前擴展結點處x[1:t] 的取值尚未使目標函數越界,還需由BackTrace(t+1)對其相應的子樹做進一步地搜索;否則,在當前擴展結點處x[1:t]的取值已使目標函數越界,可剪去相應的子樹。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
世界十大危險機場排名世界十大機場最難降落?世界最復雜機場?1、盧卡拉機場盧卡拉機場位于尼泊爾東部的盧卡拉鎮,喜馬拉雅山腹地,被稱為世界屋脊上的跑道。機場跑道很短,只有460米,坡度很大,達到了18.5學位。機場只有06號跑道可以降落,跑道的盡頭是懸崖。如果一次近進失敗,就沒有復飛的可能。此外,由于機場位于高山腹地,氣象條件復雜,亂流眾多,無可爭議地位居世界十大危險機場之首。2、特崗汀機場特崗汀機場...
iphone 13 wifi關不掉?iPhone 13手機的Wi-Fi是也可以關了的,只不需要可以打開手機設置,點擊Wi-Fi,再點擊自動關閉即可。接著把下面的詢問是否需要加入與如何確定自動啟動加入熱點決定為必須詢問,Wi-Fi就應該不會自動啟動打開直接連接,當再次再連接Wi-Fi的時候就要手動再打開Wi-Fi才還能夠成功連接上。iPhone 11美版怎么打開wifi與蜂窩網絡公用?美版的蘋果手機...
Love的代碼是什么?愛當然意味著愛,但什么是愛?愛:“L”代表傾聽。愛就是不帶偏見地傾聽對方的需求,幫助他們?!贝砀屑?。愛需要不斷的感恩和同情,付出更多,澆灌愛的幼苗?!薄癡”代表價值。愛是表示尊重,表達體貼、真誠的鼓勵和愉快的贊美?!薄癊”代表“公差”。愛是善良,原諒彼此的缺點和錯誤,保持長處和短處。我愛你的代碼?關于“我愛你”的數字代碼1。使用ASC(“I love you”)函數將asc...