1. 程式人生 > >第五章作業報告

第五章作業報告

1.你對回溯演算法的理解(2分)

回溯演算法解決問題的一般步驟為:

1、定義一個解空間,它包含問題的解

2、利用適於搜尋的方法組織解空間

3、利用深度優先法搜尋解空間

4、利用限界函式避免移動到不可能產生解的子空間。

回溯演算法的一個重要特性是,問題的解空間通常是在搜尋問題的解的過程中動態產生的

 

2.請說明“子集和”問題的解空間結構和約束函式(2分)

解空間結構:用樹的結構判斷集合中的某一個數是否放入子集集合的陣列中。

約束函式:解空間結構中遍歷的深度> n時沒有可行解,進行剪枝;當放入子集的元素總和等於目標和,則輸出子集元素並進行剪枝;如果元素總和與下一個遍歷節點之和大於目標和,則也剪枝。剪枝結束後便返回上一層。

3.請說明在本章學習過程中遇到的問題及結對程式設計的情況(1分

問題就是上課的時候看程式碼看得懂,但自己敲程式碼是就很混亂,究其原因還是不夠熟悉、缺少實踐練習。一般情況下課後遇到不懂的都是上網搜別人的程式碼然後理解。結對程式設計還是挺好玩的,因為小夥伴會發現一些自己忽略的小問題,這樣可以少走很多彎路。在結對過程中,因為我們剛開始都對回溯法的掌握都不是很熟,所以花了挺長時間的,因為題目是比較典型的,所以演算法的思想還可以,但是實現演算法的路有點艱難。