91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java回溯法怎么實現

發布時間:2021-12-20 14:50:00 來源:億速云 閱讀:131 作者:iii 欄目:大數據

本篇內容介紹了“Java回溯法怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

概述

回溯法思路的簡單描述是:把問題的解空間轉化成了圖或者樹的結構表示,然后使用深度優先搜索策略進行遍歷,遍歷的過程中記錄和尋找所有可行解或者最優解。

基本思想類同于:

圖的深度優先搜索

二叉樹的后序遍歷

       詳細的描述則為:

       回溯法按深度優先策略搜索問題的解空間樹。首先從根節點出發搜索解空間樹,當算法搜索至解空間樹的某一節點時,先利用剪枝函數判斷該節點是否可行(即能得到問題的解)。如果不可行,則跳過對該節點為根的子樹的搜索,逐層向其祖先節點回溯;否則,進入該子樹,繼續按深度優先策略搜索。

       回溯法的基本行為是搜索,搜索過程使用剪枝函數來為了避免無效的搜索。剪枝函數包括兩類:1. 使用約束函數,剪去不滿足約束條件的路徑;2.使用限界函數,剪去不能得到最優解的路徑。

       問題的關鍵在于如何定義問題的解空間,轉化成樹(即解空間樹)。解空間樹分為兩種:子集樹和排列樹。兩種在算法結構和思路上大體相同。

實現方式

       回溯法的實現方法有兩種:遞歸和遞推(也稱迭代)。一般來說,一個問題兩種方法都可以實現,只是在算法效率和設計復雜度上有區別。
     【類比于圖深度遍歷的遞歸實現和非遞歸(遞推)實現】

遞歸

       思路簡單,設計容易,但效率低,其設計范式如下:

void backtrack (int t)  
{  
    if (t>n) output(x); //葉子節點,輸出結果,x是可行解      else         for i = 1 to k//當前節點的所有子節點          {  
            x[t]=value(i); //每個子節點的值賦值給x              //滿足約束條件和限界條件            if (constraint(t)&&bound(t))   
                backtrack(t+1);  //遞歸下一層          }  
}

遞推

void iterativeBacktrack ()  
{  
    int t=1;  
    while (t>0) {  
        if(ExistSubNode(t)) //當前節點的存在子節點          {  
            for i = 1 to k  //遍歷當前節點的所有子節點              {  
                x[t]=value(i);//每個子節點的值賦值給x                  if (constraint(t)&&bound(t))//滿足約束條件和限界條件                   {  
                    //solution表示在節點t處得到了一個解                      if (solution(t)) output(x);//得到問題的一個可行解,輸出                      else t++;//沒有得到解,繼續向下搜索                  }  
            }  
        }  
        else //不存在子節點,返回上一層          {  
            t--;  
        }  
    }  
}

“Java回溯法怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永济市| 汪清县| 珲春市| 安丘市| 特克斯县| 兴城市| 横山县| 台江县| 荔浦县| 肇州县| 房山区| 防城港市| 瑞昌市| 桃江县| 金溪县| 博客| 顺昌县| 铜梁县| 嘉义市| 上栗县| 延长县| 奎屯市| 利辛县| 南安市| 宁阳县| 民县| 诏安县| 龙江县| 伊春市| 绥化市| 巨鹿县| 饶阳县| 淳化县| 大方县| 桐城市| 海城市| 时尚| 确山县| 双辽市| 建始县| 屏边|