- 相關推薦
算法設計心得體會
一、實驗內容:
這學期的算法與設計課,老師布置了這四個問題,分別是貨郎擔問題,動態(tài)生成二維數組,對話框下拉列表,排序問題。
二、學習掌握:
基本程序描述:
。1)貨郎擔問題:貨郎擔問題屬于易于描述但難于解決的著名難題之一,至今世界上還有不少人在研究它。貨郎擔問題要從圖g的所有周游路線中求取具有最小成本的周游路線,而由始點出發(fā)的周游路線一共有(n一1)!條,即等于除始結點外的n一1個結點的排列數,因此貨郎擔問題是一個排列問題。貨郎擔的程序實現了利用窮舉法解決貨郎擔問題,可以在城市個數和各地費用給定的情況下利用窮舉法逐一計算出每一條路線的費用,并從中選出費用最小的路線,從而求出問題的解。
。2)費用矩陣:費用矩陣的主要內容是動態(tài)生成二維數組。首先由鍵盤輸入自然數,費用矩陣的元素由隨機數產生,并取整,把生成的矩陣存放在二維數組中,最后把矩陣內容輸出到文件和屏幕上。它采用分支界限法,分支限界法的基本思想是對包含具有約束條件的最優(yōu)化問題的所有可行解的解(數目有限)空間進行搜索。該算法在具體執(zhí)行時,把全部可行的解空間不斷分割為越來越小的子集,并為每個子集內的解計算一個下界或上界。動態(tài)生成二維n*n的數組程序利用指針表示數組的行和列,并逐一分配空間,在輸入n的數值后,系統(tǒng)自動分配空間,生成n*n的數組,并產生隨機數填充數組,最后將結果輸入到指定文件中。
(3)Mfc:在下拉列表框中添加內容程序,在下拉列表對應的函數中利用addstring添加需要的內容。首先定義下拉列表框為ccombox型,并定義其屬性名,利用addstring函數可以任意添加需要的內容。a排序問題:快速排序的運行時間與劃分是否對稱有關,其最壞情況發(fā)生在劃分過程中產生的兩個區(qū)域分別包含n-1個元素和1個元素的時候。其算法的時間復雜度為O(n2),在最好的情況下每次劃分的基準恰好為中值,可得其算法時間復雜度為O(n㏒n)。算法的實現和理解和代碼實現完全是兩回事,想要完全掌握一種算法,需要動手實踐,用代碼實現,才能理解透徹,真正掌握。b對話框下拉列表:這個項目簡單易懂,輕松實現。
三、疑問與總結:
貨郎擔的問題,我認為窮舉法相對比而言是比較初級的方法,費時耗力,適合在練習時選用,但是在實際問題中不建議采用?唆斔箍柣蛘咂绽锬匪惴ㄇ笕∽钚∩蓸涞姆椒▉斫鉀Q貨郎擔的問題是更適合現實解決問題的。我認為程序可以用switch函數來將函數分成幾個部分更人性化,比如分為解決問題的的選項,輸出結果選項,退出程序選項等。再有就是費用矩陣的值可以從文件中讀取,而結果也可以直接放在指定文件中,這樣在實際應用中比較廣泛。
動態(tài)生成二維數組的程序我認為如果按照規(guī)范性,我的方法是中規(guī)中矩的,畢竟再向下延伸,生成三維的數組,需要三層的指針來實現。但是就程序的簡化程度和計算機處理時間來說,我認為這樣雙層指針的算法有些太占用內存,畢竟要給行和列各分配n個空間。我通過與同學的交流,我發(fā)現可以用1位數組來實現二維的n*n的數組。首先分配n*n的空間,然后通過循環(huán)在一行的數據達到n時自動換行。這樣程序得到了一定的簡化,并且減少了一定的內存使用。我認為這種方法是比較貼合實際的。
四、心得體會:
在計算機軟件專業(yè)中,算法分析與設計是一門非常重要的課程,很多人為它如癡如醉。很多問題的解決,程序的編寫都要依賴它,在軟件還是面向過程的階段,就有程序=算法+數據結構這個公式。算法的學習對于培養(yǎng)一個人的邏輯思維能力是有極大幫助的,它可以培養(yǎng)我們養(yǎng)成思考分析問題,解決問題的能力。
如果一個算法有缺陷,或不適合某個問題,執(zhí)行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。一個算法的優(yōu)劣可以用空間復雜性和時間復雜度來衡量。算法可以使用自然語言、偽代碼、流程圖等多種不同的方法來描述。計算機系統(tǒng)中的操作系統(tǒng)、語言編譯系統(tǒng)、數據庫管理系統(tǒng)以及各種各樣的計算機應用系統(tǒng)中的軟件,都必須使用具體的算法來實現。算法設計與分析是計算機科學與技術的一個核心問題。因此,學習算法無疑會增強自己的競爭力,提高自己的修為,為自己增彩。
【算法設計心得體會】相關文章:
算法教學設計05-18
帝國競爭算法優(yōu)化設計論文07-03
年假的算法?07-11
年假的算法07-11
關于年假的算法07-11
焊工的工資算法07-13
算法的含義的教材講解07-03
養(yǎng)老保險算法07-13
出缺勤工資的算法07-14
求助~關于病假工資的算法07-14