范文為教學(xué)中作為模范的文章,也常常用來指寫作的模板。常常用于文秘寫作的參考,也可以作為演講材料編寫前的參考。那么我們?cè)撊绾螌懸黄^為完美的范文呢?這里我整理了一些優(yōu)秀的范文,希望對(duì)大家有所幫助,下面我們就來了解一下吧。
數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析論文篇一
070401301507計(jì)本(3)班張浩
本學(xué)期開設(shè)的《數(shù)據(jù)結(jié)構(gòu)與算法》課程已經(jīng)告一段落,現(xiàn)就其知識(shí)點(diǎn)及其掌握情況、學(xué)習(xí)體會(huì)以及對(duì)該門課程的教學(xué)建議等方面進(jìn)行學(xué)習(xí)總結(jié)。
一、《數(shù)據(jù)結(jié)構(gòu)與算法》知識(shí)點(diǎn)
在課本的第一章便交代了該學(xué)科的相關(guān)概念,如數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)類型以及數(shù)據(jù)結(jié)構(gòu)的定義。其中,數(shù)據(jù)結(jié)構(gòu)包括邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和運(yùn)算集合。邏輯結(jié)構(gòu)分為四類:集合型、線性、樹形和圖形結(jié)構(gòu),數(shù)據(jù)元素的存儲(chǔ)結(jié)構(gòu)分為:順序存儲(chǔ)、鏈接存儲(chǔ)、索引存儲(chǔ)和散列存儲(chǔ)四類。緊接著介紹了一些常用的數(shù)據(jù)運(yùn)算。最后著重介紹算法性能分析,包括算法的時(shí)間性能分析以及算法的空間性能分析。
第二章具體地介紹了順序表的概念、基本運(yùn)算及其應(yīng)用?;具\(yùn)算有:初始化表、求表長、排序、元素的查找、插入及刪除等。元素查找方法有:簡單順序查找、二分查找和分塊查找。排序方法有:直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序及歸并排序等。最后介紹了順序串的概念,重點(diǎn)在于串的模式匹配。
鏈表中數(shù)據(jù)元素的存儲(chǔ)不一定是連續(xù)的,還可以占用任意的、不連續(xù)的物理存儲(chǔ)區(qū)域。與順序表相比,鏈表的插入、刪除不需要移動(dòng)元素,給算法的效率帶來較大的提高。鏈表這一章中介紹了鏈表的節(jié)點(diǎn)結(jié)構(gòu)、靜態(tài)與動(dòng)態(tài)鏈表的概念、鏈表的基本運(yùn)算(如求表長、插入、查找、刪除等)、單鏈表的建立(頭插法和尾插法)以及雙向循環(huán)鏈表的定義、結(jié)構(gòu)、功能和基本算法。
堆棧與隊(duì)列是兩種運(yùn)算受限制的線性結(jié)構(gòu)。其基本運(yùn)算方法與順序表和鏈表運(yùn)算方法基本相同,不同的是堆棧須遵循“先進(jìn)后出”的規(guī)則,對(duì)堆棧的操作只能在棧頂進(jìn)行;而隊(duì)列要遵循“先進(jìn)先出”的規(guī)則,教材中列出了兩種結(jié)構(gòu)的相應(yīng)算法,如入棧、出棧、入隊(duì)、出隊(duì)等。在介紹隊(duì)列時(shí),提出了循環(huán)隊(duì)列的概念,以避免“假溢出”的現(xiàn)象。
第六章介紹了特殊矩陣和廣義表的概念與應(yīng)用。其中,特殊矩陣包括對(duì)稱矩陣、三角矩陣、對(duì)角矩陣和稀疏矩陣,書中分別詳細(xì)介紹了它們的存儲(chǔ)結(jié)構(gòu)。稀疏矩陣的應(yīng)用包括轉(zhuǎn)置和加法運(yùn)算等。最后介紹了廣義表的相關(guān)概念及存儲(chǔ)結(jié)構(gòu),關(guān)于它的應(yīng)用,課本中舉了m元多項(xiàng)式的表示問題。
第七章二叉樹的知識(shí)是重點(diǎn)內(nèi)容。在介紹有關(guān)概念時(shí),提到了二叉樹的性質(zhì)以及兩種特殊的二叉樹:完全二叉樹和滿二叉樹。接著介紹二叉樹的順序存儲(chǔ)和鏈接存儲(chǔ)以及生成算法。重點(diǎn)介紹二叉樹的遍歷算法(遞歸算法、先序、中序和后序遍歷非遞歸算法)和線索二叉樹。二叉樹的應(yīng)用:基本算法、哈弗曼樹、二叉排序樹和堆排序。
樹與二叉樹是不同的概念。教材介紹了樹和森林的概念、遍歷和存儲(chǔ)結(jié)構(gòu),還有樹、森林和二叉樹的相互關(guān)系,樹或森林怎樣轉(zhuǎn)化成二叉樹,二叉樹又如何轉(zhuǎn)換為樹和森林等算法。散列結(jié)構(gòu)是一種查找效率很高的一種數(shù)據(jù)結(jié)構(gòu)。本章的主要知識(shí)點(diǎn)有:散列結(jié)構(gòu)的概念及其存儲(chǔ)結(jié)構(gòu)、散列函數(shù)、兩種沖突處理方法、線性探測散列和鏈地址散列的基本算法以及散列結(jié)構(gòu)的查找性能分析。
最后一章介紹了圖的概念及其應(yīng)用,是本書的難點(diǎn)。圖的存儲(chǔ)結(jié)構(gòu)的知識(shí)點(diǎn)有:鄰接矩陣、鄰接表、逆鄰接表、十字鏈表和鄰接多重表。圖的遍歷包括圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷。其余知識(shí)點(diǎn)有:有向圖、連通圖、生成樹和森林、最短路徑問題和有向無環(huán)圖及其應(yīng)用。有向無環(huán)圖重點(diǎn)理解aov網(wǎng)和拓?fù)渑判蚣捌渌惴ā?/p>
二、對(duì)各知識(shí)點(diǎn)的掌握情況
總體來看,對(duì)教材中的知識(shí)點(diǎn)理解較為完善,但各個(gè)章節(jié)均出現(xiàn)有個(gè)別知識(shí)點(diǎn)較為陌生的現(xiàn)象?,F(xiàn)將各個(gè)章節(jié)出現(xiàn)的知識(shí)點(diǎn)理解情況列舉如下。
第一章中我對(duì)數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)的概念理解較為透徹,熟悉數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)。而對(duì)算法的時(shí)間、空間性能分析較為模糊,尤其是空間性能分析需要加強(qiáng)。
第二章,順序表的概念、生成算法理解較為清晰,并且熟悉簡單順序查找和二分查找,對(duì)分塊查找較為含糊;排序問題中,由于冒泡排序在大一c語言課上已經(jīng)學(xué)習(xí)過,再來學(xué)習(xí)感覺很輕松。對(duì)插入排序和選擇排序理解良好,但是,在實(shí)際運(yùn)用中仍然出現(xiàn)明顯不熟練的現(xiàn)象。由于在歸并排序?qū)W習(xí)中感覺較吃力,現(xiàn)在對(duì)這種排序方法仍然非常模糊,所以需要花較多的時(shí)間來補(bǔ)習(xí)。此外串的模式匹配也是較難理解的一個(gè)地方。
鏈表這一章中,除對(duì)雙向循環(huán)鏈表這一知識(shí)點(diǎn)理解困難之外,其他的知識(shí)點(diǎn)像單鏈表的建立和基本算法等都較為熟悉。
接下來的有關(guān)堆棧以及隊(duì)列的知識(shí)點(diǎn)比較少,除有關(guān)算法較為特殊以外,其余算法都是先前學(xué)過的順序表和鏈表的知識(shí),加上思想上較為重視,因此這部分內(nèi)容是我對(duì)全書掌握最好的一部分。不足之處仍然表現(xiàn)在算法的性能分析上。
在學(xué)習(xí)第六章時(shí)感覺較為吃力的部分在于矩陣的應(yīng)用上,尤其對(duì)矩陣轉(zhuǎn)置算法的c語言描述不太理解。稀疏矩陣相加算法中,用三元組表實(shí)現(xiàn)比較容易理解,對(duì)十字鏈表進(jìn)行矩陣相加的方法較為陌生。
第七章是全書的重點(diǎn),卻也有一些內(nèi)容沒有完全理解。在第一節(jié)基本概念中,二叉樹的性質(zhì)容易懂卻很難記憶。對(duì)二叉樹的存儲(chǔ)結(jié)構(gòu)和遍歷算法這部分內(nèi)容掌握較好,能夠熟練運(yùn)用,而對(duì)于二叉樹應(yīng)用中的哈弗曼樹卻比較陌生。
第八章內(nèi)容較少,牽涉到所學(xué)的隊(duì)列的有關(guān)內(nèi)容,總體來說理解上沒有什么困難,問題依舊出現(xiàn)在算法的性能分析上。
散列結(jié)構(gòu)這一章理解比較完善的知識(shí)點(diǎn)有:基本概念和存儲(chǔ)結(jié)構(gòu)。散列函數(shù)中直接定址法和除留余數(shù)法學(xué)得比較扎實(shí),對(duì)數(shù)字分析法等方法則感覺較為陌生。對(duì)兩種沖突處理的算法思想的理解良好,問題在于用c語言描述上。
最后一章,圖及其應(yīng)用中,圖的定義、基本運(yùn)算如圖的生成等起初理解有困難,但隨著學(xué)習(xí)深入,對(duì)它的概念也逐步明朗起來。鄰接矩陣、鄰接表和逆鄰接表掌握較好,而對(duì)十字鏈表和鄰接多重表則較為陌生。感覺理解較為吃力的內(nèi)容還有圖的遍歷(包括深度和廣度優(yōu)先遍歷),最小生成樹問題也是比較陌生的知識(shí)點(diǎn)。最短路徑和aov網(wǎng)學(xué)習(xí)起來感覺比較輕松,而對(duì)于c語言描述卻又不大明白。
三、學(xué)習(xí)體會(huì)
在學(xué)習(xí)伊始,老師就明確提出它不是一種計(jì)算機(jī)語言,不會(huì)介紹新的關(guān)鍵詞,而是通過學(xué)習(xí)可以設(shè)計(jì)出良好的算法,高效地組織數(shù)據(jù)。一個(gè)程序無論采用何種語言,其基本算法思想不會(huì)改變。聯(lián)系到在大一和大二上學(xué)期學(xué)習(xí)的c和c++語言,我深刻認(rèn)識(shí)到了這一點(diǎn)?!败浖_發(fā)好比寫作文,計(jì)算機(jī)語言提供了許多華麗的辭藻,而數(shù)據(jù)結(jié)構(gòu)則考慮如何將這些辭藻組織成一篇優(yōu)秀的文章來?!痹趯W(xué)習(xí)這門課中,要熟悉對(duì)算法思想的一些描述手段,包括文字描述、圖形描述和計(jì)算機(jī)語言描述等。因此,計(jì)算機(jī)語言基礎(chǔ)是必須的,因?yàn)樗峁┝艘环N重要的算法思想描述手段——機(jī)器可識(shí)別的描述。
自己的程序中再加以必要的連接以完成程序的編寫。針對(duì)這一情況,我會(huì)嚴(yán)格要求自己,熟練掌握算法思想,盡量獨(dú)立完成程序的編寫與修改工作,只有這樣,才能夠提高運(yùn)用知識(shí),解決問題的能力。
1、建議在上課過程中加大隨堂練習(xí)的分量,以便學(xué)生能當(dāng)堂消化課堂上學(xué)習(xí)的知識(shí),也便于及時(shí)了解學(xué)生對(duì)知識(shí)點(diǎn)的掌握情況,同時(shí)有助于學(xué)生保持良好的精神狀態(tài)。
2、建議在課時(shí)允許的情況下,增加習(xí)題課的分量,通過課堂的習(xí)題講解,加深對(duì)知識(shí)點(diǎn)的掌握,同時(shí)對(duì)各知識(shí)點(diǎn)的運(yùn)用有一個(gè)更為直觀和具體的認(rèn)識(shí)。
以上便是我對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》這門課的學(xué)習(xí)總結(jié),我會(huì)抓緊時(shí)間將沒有吃透的知識(shí)點(diǎn)補(bǔ)齊。今后我仍然會(huì)繼續(xù)學(xué)習(xí),克服學(xué)習(xí)中遇到的難關(guān),在打牢基礎(chǔ)的前提下向更深入的層面邁進(jìn)!
數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析論文篇二
數(shù)據(jù)結(jié)構(gòu)與算法(data structures)
計(jì)算機(jī)技術(shù)已成為現(xiàn)代化發(fā)展的重要支柱和標(biāo)志,并逐步滲透到人類生活的各個(gè)領(lǐng)域。隨著計(jì)算機(jī)硬件的發(fā)展,對(duì)計(jì)算機(jī)軟件的發(fā)展也提出了越來越高的要求。由于軟件的核心是算法,而算法實(shí)際上是對(duì)加工數(shù)據(jù)過程的描述,所以研究數(shù)據(jù)結(jié)構(gòu)對(duì)提高編程能力和設(shè)計(jì)高性能的算法是至關(guān)重要的。
非數(shù)值計(jì)算問題的數(shù)學(xué)模型不再是傳統(tǒng)的數(shù)學(xué)方程問題,而是諸如表、樹、圖之類的數(shù)據(jù)結(jié)構(gòu)。因此,簡單地說,數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題的學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和算法。
一、教學(xué)目的與要求---了解數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu);
教學(xué)要求在每章教學(xué)內(nèi)容給出,大體上為三個(gè)層次:了解、掌握和熟練掌握。他們的含義大致為:了解是正確理解概念,掌握是學(xué)會(huì)所學(xué)知識(shí),熟練掌握就是運(yùn)用所學(xué)知識(shí)解決實(shí)際問題。
教學(xué)目的為:了解算法對(duì)于程序設(shè)計(jì)的重要性 ; 學(xué)習(xí)掌握基本數(shù)據(jù)結(jié)構(gòu)的描述與實(shí)現(xiàn)方法,熟練掌握典型數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用算法的設(shè)計(jì)。了解算法分析方法。
二、教學(xué)重點(diǎn)與難點(diǎn)--數(shù)據(jù)結(jié)構(gòu)中基本概念和術(shù)語,算法描述和分析方法。
1、鏈表插入、刪除運(yùn)算的算法。算法時(shí)間復(fù)雜度
2、后綴表達(dá)式的算法,數(shù)制的換算
利用本章的基本知識(shí)設(shè)計(jì)相關(guān)的應(yīng)用問題
3、循環(huán)隊(duì)列的特點(diǎn)及判斷溢出的條件
利用隊(duì)列的特點(diǎn)設(shè)計(jì)相關(guān)的應(yīng)用問題
4、串的模式匹配運(yùn)算算法
5、二叉樹遍歷算法的設(shè)計(jì)
利用二叉樹遍歷算法,解決簡單應(yīng)用問題 哈夫曼樹的算法
6、圖的遍歷
最小生成樹
最短路徑
7、二叉排序樹查找
平衡樹二叉樹
8、堆排序
快速排序 歸并排序
四、教學(xué)內(nèi)容、目標(biāo)與學(xué)時(shí)分配
教學(xué)內(nèi)容 教學(xué)目標(biāo) 課時(shí)分配
1、緒論
數(shù)據(jù)結(jié)構(gòu)的內(nèi)容
邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)
算法和算法分析
2、線性表
線性表的定義與運(yùn)算
線性表的順序存儲(chǔ)
線性表的鏈?zhǔn)酱鎯?chǔ)
3、棧
棧的定義與運(yùn)算
棧存儲(chǔ)和實(shí)現(xiàn)
棧的應(yīng)用舉例
4、隊(duì)列
隊(duì)列的定義與基本運(yùn)算
隊(duì)列的存儲(chǔ)與實(shí)現(xiàn)
隊(duì)列的應(yīng)用舉例
5、串
串的定義與基本運(yùn)算
串的表示與實(shí)現(xiàn)
串的基本運(yùn)算
6、樹和二叉樹
樹的定義和術(shù)語
二叉樹樹的基本概念和術(shù)語 遍歷二叉數(shù)和線索二叉樹
二叉樹的轉(zhuǎn)換
二叉樹的應(yīng)用
哈夫曼樹及其應(yīng)用
7、圖
圖的定義和術(shù)語
圖的存儲(chǔ)結(jié)構(gòu)
圖的遍歷算法
圖的連通性
8、查找
查找的基本概念與靜態(tài)查找 動(dòng)態(tài)查找
哈希表
了解
了解
掌握
熟練掌握順序表存儲(chǔ)地址的計(jì)算
掌握棧的定義與運(yùn)算
掌握棧的存儲(chǔ)與實(shí)現(xiàn)
熟練掌握棧的各種實(shí)際應(yīng)用
掌握隊(duì)列的定義與基本運(yùn)算
熟練掌握隊(duì)列的存儲(chǔ)與實(shí)現(xiàn)
掌握循環(huán)隊(duì)列的特征和基本運(yùn)算
了解串的邏輯結(jié)構(gòu)
掌握串的存儲(chǔ)結(jié)構(gòu)
熟練掌握串的基本運(yùn)算
了解
了解二叉樹
熟練掌握二叉樹定義和存儲(chǔ)結(jié)構(gòu)
了解二叉樹的遍歷算法
掌握
掌握哈夫曼的建立及編碼
了解
了解
熟練掌握
熟練掌握
了解
熟練掌握
了解哈希表與哈希方法
4學(xué)時(shí)
1學(xué)時(shí)
1學(xué)時(shí)
2學(xué)時(shí)
8學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
4學(xué)時(shí)
8學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
4學(xué)時(shí)
6學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
6學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
12學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
8學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
8學(xué)時(shí)
4學(xué)時(shí)
2學(xué)時(shí)
2學(xué)時(shí)
9、排序
12學(xué)時(shí) 插入排序
熟練掌握基本思想
3學(xué)時(shí) 快速排序
了解各種內(nèi)部排序方法和特點(diǎn)
3學(xué)時(shí) 選擇排序
掌握
2學(xué)時(shí) 各種排序方法比較
掌握
2學(xué)時(shí)
實(shí)驗(yàn)內(nèi)容 實(shí)驗(yàn)?zāi)繕?biāo) 課時(shí)分配 算法編程實(shí)驗(yàn):
1、用指針方式編寫程序 復(fù)習(xí)c(c++)語言指針、結(jié)構(gòu)體等的用法
2、對(duì)單鏈表進(jìn)行遍歷
鏈表的描述與操作實(shí)現(xiàn)
3、棧及其操作
描述方法及操作
4、編寫串子系統(tǒng)1 串的特點(diǎn)及順序定長存儲(chǔ)、操作、查找
5、編寫串子系統(tǒng) 2 串的特點(diǎn)及順序定長存儲(chǔ)、操作、查找
6、編寫樹子系統(tǒng)1 二叉樹的特點(diǎn)及存儲(chǔ)方式、創(chuàng)建、顯示、遍歷等
7、編寫樹子系統(tǒng)2 二叉樹的特點(diǎn)及存儲(chǔ)方式、創(chuàng)建、顯示、遍歷等
8、圖子系統(tǒng)
圖的鄰接矩陣的存儲(chǔ)、遍歷、廣度/深度優(yōu)先搜索
9、查找子系統(tǒng)
理解查找基本算法、平均查找長度、靜態(tài)、動(dòng)態(tài)查找等
五、考試范圍與題型
1、考試范圍與分?jǐn)?shù)比例
1)緒論
12% 2)線性表
17% 3)棧
7% 4)隊(duì)列
6% 5)串
4% 6)樹和二叉樹
14% 7)圖
15% 8)查找
4% 9)排序
21%
2、考試題型與分?jǐn)?shù)比例
1)名詞解釋
18% 2)判斷對(duì)錯(cuò)
16% 3)填空
16% 4)單項(xiàng)選擇
18% 5)應(yīng)用
32%
六、教材與參考資料
1、教材: 實(shí)用數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)(譚浩強(qiáng))中國鐵道出版社
2、參考資料: 數(shù)據(jù)結(jié)構(gòu)(嚴(yán)蔚敏)清華大學(xué)出版社
數(shù)據(jù)結(jié)構(gòu)實(shí)用教程(徐孝凱)清華大學(xué)出版社
(撰寫人:
,審核人: 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí) 2學(xué)時(shí))
數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析論文篇三
陳康蔭080401200708級(jí)計(jì)科系計(jì)本(2)班
1、程序的編寫中的語法錯(cuò)誤及修改
因?yàn)槲以诮鉀Q二元多項(xiàng)式問題中,使用了鏈表的方式建立的二元多項(xiàng)式,所以程序的空間是動(dòng)態(tài)的生成的,而且鏈表可以靈活地添加或刪除結(jié)點(diǎn),所以使得程序得到簡化。但是出現(xiàn)的語法問題主要在于子函數(shù)和變量的定義,降序排序,關(guān)鍵字和函數(shù)名稱的書寫,以及一些庫函數(shù)的規(guī)范使用,這些問題均可以根據(jù)編譯器的警告提示,對(duì)應(yīng)的將其解決。
2、程序的設(shè)計(jì)中的邏輯問題及其調(diào)整
我在設(shè)計(jì)程序的過程中遇到許多問題,首先在選擇數(shù)據(jù)結(jié)構(gòu)的時(shí)候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關(guān)鍵字的情況下,在一種關(guān)鍵字確定了順序以后,在第一關(guān)鍵字相同的時(shí)候,按某種順序?qū)Φ诙P(guān)鍵字進(jìn)行排序。在此程序中共涉及到3個(gè)量數(shù),即:系數(shù),x的指數(shù)和y的指數(shù),而關(guān)鍵字排是按x的指數(shù)和y的指數(shù)來看,由于要求是降冪排序且含有2個(gè)關(guān)鍵字,所以我先選擇x的指數(shù)作為第一關(guān)鍵字,先按x的降序來排序,當(dāng)x的指數(shù)相同時(shí),再以y為關(guān)鍵字,按照y的指數(shù)大小來進(jìn)行降序排列。
另外,我在加法函數(shù)的編寫過程中也遇到了大量的問題,由于要同時(shí)比較多個(gè)關(guān)鍵字,而且設(shè)計(jì)中涉及了數(shù)組和鏈表的綜合運(yùn)用,導(dǎo)致反復(fù)修改了很長的時(shí)間才完成了一個(gè)加法的設(shè)計(jì)。但是,現(xiàn)在仍然有一個(gè)問題存在:若以0為系數(shù)的項(xiàng)是首項(xiàng)則顯示含有此項(xiàng),但是運(yùn)算后則自動(dòng)消除此項(xiàng),這樣是正確的。但是當(dāng)其不是首項(xiàng)的時(shí)候,加法函數(shù)在顯示的時(shí)候有0為系數(shù)的項(xiàng)時(shí),0前邊不顯示符號(hào),當(dāng)然,這樣也可以理解成當(dāng)系數(shù)為0時(shí),忽略這一項(xiàng)。這也是本程序中一個(gè)不完美的地方。
我在設(shè)計(jì)減法函數(shù)的時(shí)候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細(xì)研究算法,后來發(fā)現(xiàn)由于前邊的加法函數(shù)完全適用于減法,只不過是將二元多項(xiàng)式b的所有項(xiàng)取負(fù)再用加法函數(shù)即可,可見算法的重要性不低于程序本身。
3、程序的調(diào)試中的經(jīng)驗(yàn)及體會(huì)
我在調(diào)試過程中,發(fā)生了許多小細(xì)節(jié)上的問題,它們提醒了自己在以后編程的時(shí)候要注意細(xì)節(jié),即使是一個(gè)括號(hào)的遺漏或者一個(gè)字符的誤寫都會(huì)造成大量的錯(cuò)誤,浪費(fèi)許多時(shí)間去尋找并修改,總結(jié)的教訓(xùn)就是寫程序的時(shí)候,一定要仔細(xì)、認(rèn)真、專注。
我還有一個(gè)很深的體會(huì)就是格式和注釋,由于平時(shí)不注意格式和注釋這方面的要求,導(dǎo)致有的時(shí)候在檢查和調(diào)試的時(shí)候很不方便。有的時(shí)候甚至剛剛完成一部分的編輯,結(jié)果一不注意,就忘記了這一部分程序的功能。修改的時(shí)候也有不小心誤刪的情況出現(xiàn)。如果注意格式風(fēng)格,并且養(yǎng)成隨手加注釋的習(xí)慣,就能減少這些不必要的反復(fù)和波折。還有一點(diǎn),就是在修改的時(shí)候,要注意修改前后的不同點(diǎn)在哪里,改后調(diào)試結(jié)果要在原有的基礎(chǔ)上更加精確。
數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析論文篇四
《數(shù)據(jù)結(jié)構(gòu)與算法》課程設(shè)計(jì)教學(xué)大綱(data structures & algorithms)
一、基本信息
二、教學(xué)目的
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)不僅是數(shù)據(jù)結(jié)構(gòu)與算法課程的實(shí)踐教學(xué)環(huán)節(jié),而且是一門綜合性實(shí)驗(yàn)項(xiàng)目。通過這個(gè)實(shí)驗(yàn),培養(yǎng)學(xué)生綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)基本知識(shí)和程序設(shè)計(jì)基本知識(shí),解決實(shí)際問題,提高程序設(shè)計(jì)的能力和團(tuán)隊(duì)協(xié)作精神。
本課程設(shè)計(jì)的目的就是要達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,使同學(xué)們能夠根據(jù)數(shù)據(jù)對(duì)象的特性,學(xué)會(huì)數(shù)據(jù)組織的方法,能把現(xiàn)實(shí)世界中的實(shí)際問題在計(jì)算機(jī)內(nèi)部表示出來,并培養(yǎng)基本的、良好的程序設(shè)計(jì)技能。
1.學(xué)生通過實(shí)踐掌握線性表、樹、圖等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)及算法實(shí)現(xiàn); 2.培養(yǎng)學(xué)生利用數(shù)據(jù)結(jié)構(gòu)知識(shí)解決實(shí)際問題的能力;3.使學(xué)生初步具備查閱資料、分析設(shè)計(jì)、上機(jī)實(shí)現(xiàn)和書寫科技 報(bào)告的能力。
三、基本要求
1.指導(dǎo)教師要在選題、設(shè)計(jì)、上機(jī)實(shí)現(xiàn)等諸環(huán)節(jié)上投入精力,加強(qiáng)指導(dǎo)、討論和答疑的力度。尤其在選題上,要充分考慮學(xué)生目前所具有的知識(shí)水平、掌握的開發(fā)工具、以及綜合設(shè)計(jì)能力的現(xiàn)狀,使題目取材合理、大小適中、難易適度,使學(xué)生在完成設(shè)計(jì)工作后,能有所收獲。2.參加課程設(shè)計(jì)的學(xué)生要珍惜機(jī)會(huì)、勤奮工作、勇于創(chuàng)新、勇于探索、勇于實(shí)踐,虛心向指導(dǎo)教師請(qǐng)教,向同學(xué)學(xué)習(xí),獨(dú)立完成設(shè)計(jì)任務(wù)。
3.學(xué)生需保質(zhì)、保量、保時(shí)間進(jìn)度地提交規(guī)范的課程設(shè)計(jì)報(bào)告,審查由指導(dǎo)教師負(fù)責(zé)。
四、教學(xué)內(nèi)容
1.主要內(nèi)容:應(yīng)用所掌握的線性表、樹、圖等數(shù)據(jù)結(jié)構(gòu)知識(shí)解決實(shí)際問題。2.軟件開發(fā)工具:c/c++、java。
3.課程設(shè)計(jì)題目:指導(dǎo)教師擬定(參考題目見附錄1)
4.具體步驟:指導(dǎo)教師擬定設(shè)計(jì)題目,學(xué)生研究具體問題、進(jìn)行需求分析、選擇合適的數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)算法、編寫并調(diào)試代碼、書寫文檔材料、提交設(shè)計(jì)報(bào)告,最后,由指導(dǎo)教師驗(yàn)收并評(píng)定成績。
5.設(shè)計(jì)內(nèi)容及時(shí)間安排:第1-3天,選定題目,明確題目要求、確定數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)算法,并分析算法復(fù)雜度;第4-8天,編寫程序、調(diào)試程序、測試程序;第9-10天,撰寫設(shè)計(jì)報(bào)告,準(zhǔn)備答辯(上機(jī)演示,回答教師提問)。6.設(shè)計(jì)報(bào)告書寫要求:按照軟件開發(fā)規(guī)范的要求書寫設(shè)計(jì)報(bào)告(參見附錄三報(bào)告書寫格式);要求報(bào)告層次結(jié)構(gòu)清晰、圖表完整、語言通順、字跡工整。7.驗(yàn)收要求:1)運(yùn)行所設(shè)計(jì)的程序;2)回答有關(guān)問題;3)提交課程設(shè)計(jì)報(bào)告(打印或手寫在實(shí)習(xí)報(bào)告冊(cè)上);4)提交軟盤(源程序)。(鼓勵(lì)學(xué)生創(chuàng)新。對(duì)內(nèi)容有創(chuàng)新者,成績?cè)u(píng)定將適當(dāng)提高)。
五、考核方法
學(xué)習(xí)成績的評(píng)定方式:考查。
課程設(shè)計(jì)成績?cè)u(píng)定 =平時(shí)出勤(20%)+設(shè)計(jì)報(bào)告(40%)+答辯(40%)通過設(shè)計(jì)答辯方式,并結(jié)合學(xué)生的動(dòng)手能力,獨(dú)立分析解決問題的能力和創(chuàng)新精神,總結(jié)報(bào)告和答辯水平以及學(xué)習(xí)態(tài)度綜合考評(píng)。成績分為優(yōu)、良、中、及格和不及格五等。
六、教材與參考資料 1.建議教材:
2.建議參考書目:
附錄一
參考題目(可分若干組,每個(gè)學(xué)生選擇其中一個(gè)題目)
1.商廈家電庫存管理 2.排序算法的時(shí)間比較
19.計(jì)算機(jī)輔助考核系統(tǒng) 20.學(xué)籍管理系統(tǒng)
注:學(xué)生可以自選題目或選擇指導(dǎo)老師擬定的題目。
附錄二
開發(fā)步驟
1.分析題目的要求、目的; 2.選擇適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu);
3.抽象數(shù)據(jù)類型的設(shè)計(jì); 4.抽象數(shù)據(jù)類型的實(shí)現(xiàn); 5.編寫代碼、上機(jī)調(diào)試; 6.總結(jié)驗(yàn)收、評(píng)價(jià)。
附錄三 報(bào)告書寫格式
1.問題描述
題目內(nèi)容、基本要求 2.需求分析
軟件的基本功能、輸入/輸出形式、測試數(shù)據(jù)要求 3.概要設(shè)計(jì)
所需的adt及作用、主程序流程及模塊調(diào)用關(guān)系 4.詳細(xì)設(shè)計(jì)
簡要說明程序運(yùn)行操作步驟 7.測試結(jié)果
8.課程設(shè)計(jì)心得體會(huì)
數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析論文篇五
談到計(jì)算機(jī)方面的專業(yè)課程,我覺得數(shù)據(jù)結(jié)構(gòu)算是一門必不可少的課了,它是計(jì)算機(jī)從業(yè)和研究人員了解、開發(fā)及最大程度的利用計(jì)算機(jī)硬件的一種工具。數(shù)據(jù)結(jié)構(gòu)與算法分析是兩門緊密聯(lián)系的課程,算法要靠好的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn),二者的關(guān)系是密不可分的,談到算法不得不講數(shù)據(jù)結(jié)構(gòu),談數(shù)據(jù)結(jié)構(gòu)也不可避免的要了解算法,好的算法一定有一個(gè)好的數(shù)據(jù)結(jié)構(gòu),很多算法實(shí)際上是對(duì)某種數(shù)據(jù)結(jié)構(gòu)實(shí)行的一種變換,研究算法也就是研究在實(shí)行變換過程中數(shù)據(jù)的動(dòng)態(tài)性質(zhì)。這兩門課程分別是我在大二和研一的時(shí)候?qū)W的,因?yàn)樗鼈兠芮械穆?lián)系,這里將其放在一起總結(jié)如下。
什么是數(shù)據(jù)結(jié)構(gòu)呢?研究數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)(物理結(jié)構(gòu))以及它們之間的關(guān)系,且為該結(jié)構(gòu)定義相應(yīng)的運(yùn)算設(shè)計(jì)相應(yīng)的算法。這里的數(shù)據(jù)是指可輸入到計(jì)算機(jī)能被程序處理的符號(hào)的集合。其中,數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)之間邏輯關(guān)系的描述,邏輯結(jié)構(gòu)的分類有線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖結(jié)構(gòu)。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指數(shù)據(jù)在計(jì)算機(jī)中存儲(chǔ)結(jié)構(gòu),也稱為物理結(jié)構(gòu),它有4類基本的存儲(chǔ)映射方法:1.順序的方法;2.鏈接的方法;3.索引的方法;4.散列的方法。在程序設(shè)計(jì)語言中,數(shù)據(jù)結(jié)構(gòu)直接反映在數(shù)據(jù)類型上,比如一個(gè)整型變量就是一個(gè)節(jié)點(diǎn),根據(jù)類型給他分配內(nèi)存單元。抽象數(shù)據(jù)類型:一組值以及在這些值上定義的操作集合,它是描述數(shù)據(jù)結(jié)構(gòu)的一種理論工具,其特點(diǎn)是把數(shù)據(jù)結(jié)構(gòu)作為獨(dú)立于應(yīng)用程序的一種抽象代數(shù)結(jié)構(gòu)。
線性表結(jié)構(gòu):由一系列元素組成的有序的序列,除了第一個(gè)元素和最后一個(gè)元素外,每個(gè)元素都只有一個(gè)直接前趨和直接后繼,元素的個(gè)數(shù)稱為線性表的長度。它的存儲(chǔ)方式有順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。順序存儲(chǔ)方式它的優(yōu)點(diǎn)是存儲(chǔ)單元是連續(xù)的,適合快速訪問元素內(nèi)容,鏈表的特點(diǎn)是動(dòng)態(tài)申請(qǐng)內(nèi)存空間,并通過指針來鏈接結(jié)點(diǎn),按照線性表的前驅(qū)關(guān)系把一個(gè)個(gè)結(jié)點(diǎn)鏈接起來,這樣可以動(dòng)態(tài)地根據(jù)需要分配內(nèi)存空間,經(jīng)常用于插入新結(jié)點(diǎn)或刪除節(jié)點(diǎn)的需要,鏈表還可以根據(jù)結(jié)點(diǎn)中指針個(gè)數(shù)分為單鏈表、雙鏈表、循環(huán)鏈表等。在線性表結(jié)構(gòu)中有兩類特別的線性表:棧和隊(duì)列。棧是一種限制訪問端口的線性表,常稱為后進(jìn)先出表。正是這種特殊的性質(zhì)使得棧的用途非常廣泛,比如在計(jì)算表達(dá)式的值時(shí)處理運(yùn)算符的先后次序,另外一個(gè)大的用處就是遞歸了,hanoi 塔就是最典型的用了遞歸的思想,在算法中,也有很多運(yùn)用遞歸思想的例子。隊(duì)列也屬于限制訪問點(diǎn)的線性表,它的特點(diǎn)就是加入和刪除元素都只能在隊(duì)列的一端進(jìn)行,即隊(duì)列首出,隊(duì)列尾進(jìn),最大的特點(diǎn)是先來先服務(wù),先進(jìn)先出。因?yàn)檫@個(gè)特點(diǎn),隊(duì)列常被用作消息緩沖器。
在算法設(shè)計(jì)中,順序表主要用于檢索,而利用棧中的遞歸思想在算法中則應(yīng)用非常廣泛,如遞歸排序,分治算法等。
樹結(jié)構(gòu):是一種非常重要的非線性數(shù)據(jù)結(jié)構(gòu),它是由一個(gè)根結(jié)點(diǎn)和若干葉結(jié)點(diǎn)組成的樹狀結(jié)構(gòu),除了根結(jié)點(diǎn)每個(gè)結(jié)點(diǎn)只能有一個(gè)父節(jié)點(diǎn),可以有若干子結(jié)點(diǎn),若干個(gè)樹結(jié)構(gòu)還可以構(gòu)成森林,樹的存儲(chǔ)結(jié)構(gòu)也分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ),最典型的是左孩子右兄弟法。在樹結(jié)構(gòu)中比較重要的算法就是周游(遍歷)樹,有先根次序、后根次序以及中根次序。樹結(jié)構(gòu)中有幾類非常重要的特殊樹結(jié)構(gòu),如二叉樹,b樹,b+樹等,其中,二叉樹應(yīng)用最為廣泛。
二叉樹:是指每個(gè)結(jié)點(diǎn)最多有兩個(gè)子結(jié)點(diǎn)的樹結(jié)構(gòu),具體細(xì)分,根據(jù)葉子結(jié)點(diǎn)的特性可分為滿二叉樹、完全二叉樹等。二叉樹的遍歷也分為深度優(yōu)先和廣度優(yōu)先。另外,二叉樹有幾條非常重要的性質(zhì),這也使得它的應(yīng)用非常廣泛。
在算法設(shè)計(jì)中,典型的利用樹的深度優(yōu)先遍歷的算法是回溯法,而典型的廣度優(yōu)先搜索算法是分枝定界法。
圖結(jié)構(gòu):不限制前驅(qū)的個(gè)數(shù),亦不限制后繼的個(gè)數(shù),反映一種網(wǎng)狀關(guān)系。
通常用g=(v,e)代表一個(gè)圖,其中v是頂點(diǎn)集,e是邊集。圖分為有向圖和無向圖,圖的存儲(chǔ)方式有鄰接表和鄰接矩陣法。和樹類似的,圖中也需要周游,同樣有深度優(yōu)先搜索和廣度優(yōu)先搜索,而比樹的周游要更復(fù)雜,也更重要。在這一塊中,有兩種比較典型的求最短路徑和最小支撐樹的算法需要注意,它們分別是dijkstra算法和prim算法。另外需要注意的是圖的連通性。
在算法設(shè)計(jì)中,典型的用到圖論的算法有貪心算法和動(dòng)態(tài)規(guī)劃算法。
(1)輸入:有零個(gè)或多個(gè)由外部提供的量作為算法的輸入。(2)輸出:算法產(chǎn)生至少一個(gè)量作為輸出。
(3)確定性:組成算法的每條指令是清晰的,無歧義的。(4)有限性:算法中每條指令的執(zhí)行次數(shù)是有限的,執(zhí)行每條指令的時(shí)間也是有限的。
我們研究一個(gè)算法或者評(píng)價(jià)一個(gè)算法主要是通過估計(jì)該算法的復(fù)雜性,包括時(shí)間復(fù)雜性和空間復(fù)雜性??臻g復(fù)雜性是指使用該算法的程序在運(yùn)行時(shí)需要占用多少內(nèi)存空間,具體包括指令空間、數(shù)據(jù)空間和環(huán)境??臻g。時(shí)間復(fù)雜性是指執(zhí)行該程序所需要的時(shí)間量級(jí),通常是估算的時(shí)間,包括編譯時(shí)間和運(yùn)行時(shí)間。同時(shí)評(píng)價(jià)一個(gè)算法的好壞還要看其時(shí)間復(fù)雜性和空間復(fù)雜性隨著輸入規(guī)模的增長趨勢,一般能接受的最好是線性增長。在算法設(shè)計(jì)這本書中,每介紹一個(gè)算法都會(huì)分析其算法復(fù)雜度,由此可看出它的重要性。
首先,從遞歸的分治算法開始。分治算法的基本思想是將一個(gè)規(guī)模為n的問題分解為k個(gè)規(guī)模較小的子問題,這些子問題互相獨(dú)立且與原問題相同。遞歸的解這些子問題,然后將各個(gè)子問題的解合并得到原問題的解。該算法的主要應(yīng)用有大整數(shù)乘法,矩陣乘法、合并排序等??梢源蟠蠼档退惴ǖ臅r(shí)間復(fù)雜度,但使用遞歸??赡茉黾映绦虻目臻g規(guī)模。
(1)找出最優(yōu)解的性質(zhì),并刻畫其結(jié)構(gòu)特征。(2)遞歸的定義最優(yōu)值。
(3)以自底向上的方式計(jì)算出最優(yōu)值。
(4)根據(jù)計(jì)算最優(yōu)值時(shí)得到的信息,構(gòu)造最優(yōu)解。
動(dòng)態(tài)規(guī)劃算法的基本要素是最優(yōu)子結(jié)構(gòu)性質(zhì)和子問題重疊性質(zhì)。
最優(yōu)子結(jié)構(gòu)性質(zhì)。如果問題的最優(yōu)解所包含的子問題的解也是最優(yōu)的,我們就稱該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)(即滿足最優(yōu)化原理)。最優(yōu)子結(jié)構(gòu)性質(zhì)為動(dòng)態(tài)規(guī)劃算法解決問題提供了重要線索。
子問題重疊性質(zhì)。子問題重疊性質(zhì)是指在用遞歸演算法自頂向下對(duì)問題進(jìn)行求解時(shí),每次產(chǎn)生的子問題并不總是新問題,有些子問題會(huì)被重復(fù)計(jì)算多次。動(dòng)態(tài)規(guī)劃算法正是利用了這種子問題的重疊性質(zhì),對(duì)每一個(gè)子問題只計(jì)算一次,然后將其計(jì)算結(jié)果保存在一個(gè)表格中,當(dāng)再次需要計(jì)算已經(jīng)計(jì)算過的子問題時(shí),只是在表格中簡單地查看一下結(jié)果,從而獲得較高的效率。
另外一點(diǎn)要素是備忘錄方法,它作為動(dòng)態(tài)規(guī)劃算法的變形,用表格保存已解決問題的答案,在下次需要解此子問題時(shí),只要簡單查看子問題的解答,而不必重新計(jì)算。與動(dòng)態(tài)規(guī)劃不同的是備忘錄方法的遞歸是自頂向下的,而動(dòng)態(tài)規(guī)劃則是自底向上的。
動(dòng)態(tài)規(guī)劃算法設(shè)計(jì)策略典型的應(yīng)用案例有:矩陣連乘、最大字段和、流水作業(yè)調(diào)度等。有時(shí)滿足動(dòng)態(tài)規(guī)劃條件的問題可以有更好的算法,比如貪心算法。貪心算法即總是做出在當(dāng)前看來是最好的選擇。也就是說貪心算法并不從整體最優(yōu)上加以考慮,它所做的總是做出的選擇只是在某種意義上的局部最優(yōu)。這種啟發(fā)式的策略并不能總是奏效,然而對(duì)某些特定的問題確能達(dá)到預(yù)期目的。比如活動(dòng)安排的例子。
貪心算法的基本要素主要有貪心選擇性質(zhì)和最優(yōu)子結(jié)構(gòu)性質(zhì)。所謂貪心選擇性質(zhì)是指所求問題的整體最優(yōu)解可以通過一系列局部最優(yōu)的選擇,即貪心選擇來達(dá)到。這是貪心算法與動(dòng)態(tài)規(guī)劃的主要區(qū)別,它們的共同點(diǎn)是都要求問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。
貪心算法的典型案列是:活動(dòng)安排、最優(yōu)裝載問題、最短路徑和最優(yōu)生成樹問題?;厮莘ê头种Χń绶ǎ夯厮莘ㄓ小巴ㄓ玫慕忸}法”之稱。用它可以系統(tǒng)的搜索一個(gè)問題的所有解或任一解。它在問題的解空間樹中,按深度優(yōu)先策略,從根節(jié)點(diǎn)出發(fā)搜索解空間樹。其算法框架包含遞歸回溯和迭代回溯,兩個(gè)特別的解空間樹為子集樹和排列樹。典型的回溯法的案例有:批處理作業(yè)調(diào)度、圖的m著色、旅行售貨員問題、0-1背包問題等。
分枝定界法類似于回溯法,也是在問題的解空間上搜索問題解的算法。一般情況下,分治定界法與回溯法的求解目標(biāo)不同?;厮莘ǖ那蠼饽繕?biāo)是找出解空間中滿足約束條件的所有 的解,而分枝定界法的求解目標(biāo)則是找出滿足約束條件的一個(gè)解,或是滿足約束條件的解中找出使某一目標(biāo)函數(shù)值達(dá)到極大或極小的解,即在某種意義下的最優(yōu)解。由于求解目標(biāo)不同,導(dǎo)致分支定界法與回溯法對(duì)解空間的搜索方式也不相同?;厮莘ㄒ陨疃葍?yōu)先的方式搜索解空間,而分枝定界法則以廣度優(yōu)先或以最小耗費(fèi)優(yōu)先的方式搜索解空間。
另外,在算法分析中一定要提的是np問題。首先需要介紹p(polynomial,多項(xiàng)式)問題.p問題是可以在多項(xiàng)式時(shí)間內(nèi)被確定機(jī)(通常意義的計(jì)算機(jī))解決的問題。np(non-deterministic polynomial, 非確定多項(xiàng)式)問題,是指可以在多項(xiàng)式時(shí)間內(nèi)被非確定機(jī)(他可以猜,他總是能猜到最能滿足你需要的那種選擇,如果你讓他解決n皇后問題,他只要猜n次就能完成----每次都是那么幸運(yùn))解決的問題.這里有一個(gè)著名的問題----千禧難題之首,是說p問題是否等于np問題,也即是否所有在非確定機(jī)上多項(xiàng)式可解的問題都能在確定機(jī)上用多項(xiàng)式時(shí)間求解。
np完全(np complete,npc)問題是指這樣一類np問題,所有的np問題都可以用多項(xiàng)式時(shí)間劃歸到他們中的一個(gè)。所以顯然np完全的問題具有如下性質(zhì):它可以在多項(xiàng)式時(shí)間內(nèi)求解,當(dāng)且僅當(dāng)所有的其他的np-完全問題也可以在多項(xiàng)式時(shí)間內(nèi)求解。這樣一來,只要我們找到一個(gè)npc問題的多項(xiàng)式解,所有的np問題都可以多項(xiàng)式時(shí)間內(nèi)劃歸成這個(gè)npc問題,再用多項(xiàng)式時(shí)間解決,這樣np就等于p了。
小結(jié)一下,在算法設(shè)計(jì)這么課中學(xué)了這么幾大類典型的算法,里面也涉及到具體的應(yīng)用案例,但我覺得學(xué)算法的目的遠(yuǎn)不是學(xué)會(huì)這幾種固定的特殊問題的解法而已,事實(shí)上領(lǐng)會(huì)這些巧妙算法背后的思想然后學(xué)會(huì)遷移到其他新的問題中去才是領(lǐng)會(huì)了算法設(shè)計(jì)的精髓。
【本文地址:http://aiweibaby.com/zuowen/3455921.html】