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