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