1. 程式人生 > >[回溯法] 0 回溯法介紹-回溯與遞迴的區別

[回溯法] 0 回溯法介紹-回溯與遞迴的區別

【回溯法】有相當一類求一組解、或求全部解或求最優解的問題,例如讀者熟悉的八皇后問題等,不是根據某種確定的計演算法則,而是利用試探的回溯(Backtrcking)的搜尋技術求解

【實質】它的求解過程實質上是一個先序遍歷一棵“狀態樹”的過程,只是這棵樹不是遍歷前預先建立的,而是隱含在遍歷過程中,但如果認識到這點,很多問題的遞迴過程設計也就迎刃而解了。

【回溯與遞迴的區別】

  1. 遞迴是一種演算法結構,遞迴會出現在子程式中自己呼叫自己或間接地自己呼叫自己。最直接的遞迴應用就是計算連續數的階乘,計算規律:n!=(n-1)!*n。
  2. 回溯是一種演算法思想,可以用遞迴實現。通俗點講回溯就是一種試探,類似於窮舉,但回溯有“剪枝”功能,比如求和問題。給定7個數字,1 2 3 4 5 6 7求和等於7的組合,從小到大搜索,選擇1+2+3+4 =10>7,已經超過了7,之後的5 6 7就沒必要在繼續了,這就是一種搜尋過程的優化。如果還有不清楚的可以看一下8皇后問題。

部落格:https://blog.csdn.net/u014772862/article/details/51789015