-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

數據結構與算法分析(C++版)(第三版)

( 簡體 字)
作者:張銘,劉曉丹 等類別:1. -> 程式設計 -> C++ -> C++
   2. -> 教材 -> 資料結構
   3. -> 程式設計 -> 演算法
譯者:
出版社:電子工業出版社數據結構與算法分析(C++版)(第三版) 3dWoo書號: 36976
詢問書籍請說出此書號!

缺書
NT售價: 295

出版日:10/1/2013
頁數:408
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121209581
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯 者 序
數據結構與算法分析是計算機專業十分重要的一門基礎課, 計算機科學各個領域及各種應用軟件都要使用相關的數據結構和算法。
當面臨一個新的設計問題時, 設計者需要選擇適當的數據結構, 并設計出滿足一定時間和空間限制的有效算法。本書作者把數據結構和算法分析有機地結合在一本教材中, 有助于讀者根據問題的性質選擇合理的數據結構, 并對算法的時間、 空間復雜性進行必要的控制。
本書采用當前流行的面向對象的C++程序設計語言來描述數據結構和算法, 因為C++語言是程序員最廣泛使用的語言。因此, 程序員可以把本書中的許多算法直接應用于將來的實際項目中。盡管數據結構和算法在設計本質上還是很底層的東西, 并不像大型軟件工程項目開發那樣, 對面向對象方法具有直接的依賴性, 因此有人會認為并不需要采用高層次的面向對象技術來描述底層算法。 但是采用C++語言能更好地體現抽象數據類型的概念, 從而更本質地描述數據結構和算法。為了使本書清晰易懂, 作者有意回避了C++的某些重要特性。
本書正文包括五大部分的內容, 第一部分是準備工作, 介紹了一些基本概念和術語, 以及基礎數學知識。在本書的改版中, 作者加強了面向對象的討論, 特別是增加了設計模式的相關內容, 例如享元、 訪問者、 組合和策略等設計模式。設計模式像模板那樣描述了一種解決方案的框架及具體實踐, 又有類似于數據結構的代價和收益, 需要根據不同應用場景做出權衡。
第二部分介紹了最基本的數據結構, 依次為線性表(包括棧和隊列)、 二叉樹和樹。對每種數據結構的講解都從其數學特性入手, 先介紹抽象數據類型, 然后再討論不同的存儲方法, 并且研究不同存儲方法的可能算法。值得贊賞的是, 作者結合算法分析來討論各種存儲方法和算法的利弊, 摒棄那些不適宜的方法, 這樣就調動了讀者的思維, 使其可以從中學到考慮問題的方法。這種“授人以漁”的策略使讀者在今后設計和應用數據結構時能全面地考慮各種因素, 選擇最佳方案。
作為最常用的算法, 排序和檢索歷來是數據結構討論的重點問題。這在第三部分的第7章~第10章中進行了詳盡的討論。排序算法最能體現算法分析的魅力, 它的算法速度要求非常高: 其中內排序主要考慮的是怎樣減少關鍵碼之間的比較次數和記錄交換次數, 以提高排序速度; 而外排序則考慮外存的特性, 盡量減少訪問操作, 以提高排序速度。第7章證明了所有基于比較的排序算法的時間代價是O(nlogn), 這也是排序問題的時間代價。檢索則考慮怎樣提高檢索速度, 這往往與存儲方法有關。書中介紹了幾種高效的數據結構, 如自組織線性表、 散列表、 B樹和B+樹等, 都具有極好的檢索性能。
第四部分介紹了數據結構的應用與一些高級主題, 其中包括圖、 跳躍表、 廣義表和稀疏矩陣等更復雜的線性表結構, 還包括了Trie結構、 AVL樹等復雜樹結構, 以及k-d樹、 PR四分樹等空間數據結構。
本書第三版從第14~17章以較大的篇幅增寫了第五部分, 從而加強算法分析方面的內容。這一部分首先介紹了求和、 遞歸關系分析和均攤分析等算法分析技術, 這些技術對于提高程序員的算法分析能力具有重要作用。然后討論算法和狀態空間下限的概念與實例, 并介紹了對抗性下限證明方法。本書系統地介紹了重要算法模式, 包括動態規劃、 隨機算法和變換, 并介紹了傅里葉變換等數值算法。最后討論了計算復雜性理論中的難解問題, 利用歸約把各種問題的難度聯系起來。
本書的前言及第1~10章由張銘翻譯, 第11~17章由劉曉丹翻譯。另外, 肖之屏、 劉智沖、 方譯萌、 王子琪、 王晟、 盛達魁、 劉金寶、 賀一駿、 桂歡等人也參加了本書的翻譯工作, 在此對他們的辛勤勞動表示感謝。由于水平有限, 難免有不妥之處, 歡迎讀者批評指正。
前 言
人們研究數據結構的目的, 是為了學會編寫效率更高的程序。現在的計算機速度一年比一年快, 為什么還需要高效率的程序呢?這是由于人類解決問題的雄心與能力是同步增長的。現代計算技術在計算能力和存儲容量上的革命, 僅僅提供了解決更復雜問題的有效工具, 而對程序高效率的要求永遠也不會過時。
程序高效率的要求不會也不應該與合理的設計和簡明清晰的編碼相矛盾。高效率程序的設計基于良好的信息組織和優秀的算法, 而不是基于“編程小伎倆”。一名程序員如果沒有掌握設計簡明清晰程序的基本原理, 就不可能編寫出有效的程序。反過來說, 對開發代價和可維護性的考慮不應該作為性能不高的借口。設計中的通用性(generality in design)應該在不犧牲性能的情況下達到, 但前提是設計人員知道如何去衡量性能, 并且把性能作為設計和實現不可分割的一部分。大多數計算機科學系的課程設置都意識到要培養良好的程序設計技能, 首先應該強調基本的軟件工程原理。因此, 一旦程序員學會了設計和實現簡明清晰程序的原理, 下一步就應該學習有效的數據組織和算法, 以提高程序的效率。
途徑: 本書描述了許多表示數據的技術。這些技術包括以下原則:
1. 每一種數據結構和每一個算法都有其時間、 空間的代價和效率。當面臨一個新的設計問題時, 設計者要透徹地掌握權衡時間、 空間代價和算法有效性的方法, 以適應問題的需要。這就需要懂得算法分析原理, 而且還需要了解所使用的物理介質的特性(例如, 當數據存儲在磁盤上與存儲在主存中, 就有不同的考慮)。
2. 與代價和效率有關的是時空權衡。例如, 人們通常增加空間代價來減少運行時間, 或者反之。程序員所面對的時空權衡問題普遍存在于軟件設計和實現的各個階段, 因此這個概念必須牢記于心。
3. 程序員應該充分了解一些現成的方法, 以免做不必要的重復開發工作。因此, 學生們需要了解經常使用的數據結構和相關算法, 以及程序中常見的設計模式。
4. 數據結構服從于應用需求。學生們必須把分析應用需求放在第一位, 然后再尋找一個與實際應用相匹配的數據結構。要做到這一點, 需要應用上述三條原則。
筆者講授數據結構多年, 發現設計在課程中起到了非常重要的作用。本教材的幾個版本中逐步增加了設計模式和接口。本書第一版完全沒有提到設計模式。第二版有一些篇幅講解了幾個設計模式的例子, 并且介紹了字典ADT和比較器類。編寫本書第三版的基本數據結構和算法時, 都直接介紹了一些相關的設計模式。
教學建議: 數據結構和算法設計的書籍往往囿于下面這兩種情形之一: 一種是教材, 一種是百科全書。有的書籍試圖融合這兩種編排, 但通常是二者都沒有組織好。本書是作為教材來編寫的。我相信, 了解如何選擇或設計解決問題的高效數據結構的基本原理是十分重要的, 這比死記硬背書本內容要重要得多。因此, 我在本書中涵蓋了大多數、 但不是全部的標準數據結構。為了闡述一些重要原理, 也包括了某些并非廣泛使用的數據結構。另外, 還介紹了一些相對較新、 但即將得到廣泛應用的數據結構。
在本科教學體系中, 本書適用于低年級(二年級或三年級)的高級數據結構課程或者高年級的算法課程。第三版中加入了很多新的素材。通常, 這本書被用來講授一些超過常規一年級的CS2課程, 也可作為基礎數據結構的介紹。讀者應該已有兩個學期的基本編程經驗, 并具備一些C++基礎技能。對已經熟悉部分內容的讀者會有一些優勢。數據結構的學生如果先學完離散數學課程, 也頗有益處。不過, 第2章還是給出了比較完整的數學預備知識, 這些知識對理解本書的內容還是很有必要的。讀者如果在閱讀中遇到不熟悉的知識, 可以回頭看看相應的章節。
大二學生掌握的基本數據結構和算法分析的背景知識(相對于從傳統CS2課程中獲得的基礎知識)并不太多, 可以對他們詳細地講解第1∼11章的內容, 再從第13章選擇一些專題來講解, 我就是這樣來給二年級學生講課的。背景知識更豐富的學生, 可以先閱讀第1章, 跳過第2章中除參考書目之外的內容, 簡要地瀏覽第3章和第4章, 然后詳細閱讀第5~12章。另外, 教師可以根據程序設計實習的需要, 選擇第13章以后的某些專題內容。高年級的算法課程可以著重講解第11章和第14~17章。
第13章是針對大型程序設計練習而編寫的。我建議所有選修數據結構的學生, 都應該做一些高級樹結構或其他較復雜的動態數據結構的上機實習, 例如第12章中的跳躍表(skip list)或稀疏矩陣。所有這些數據結構都不會比二叉檢索樹更難, 而且學完第5章的學生都有能力來實現它們。
我盡量合理地安排章節順序。教師可以根據需要自由地重新組織內容。讀者掌握了第1~6章后, 后續章節的內容就相對獨立了。顯然, 外排序依賴于內排序和磁盤文件系統。Kruskal最小支撐樹算法使用了6.2節關于并查(UNION/FIND)的算法。9.2節的自組織線性表提到了8.3節討論的緩沖區置換技術。第14章的討論基于本書的例題。17.2節依賴于圖論知識。在一般情況下, 大多數主題都只依賴于同一章中討論的內容。
幾乎每一章都是以“深入學習導讀”一節結束的。它并不是這一章的綜合參考索引, 而是為了通過這些導讀書籍或文章提供給讀者更廣泛的信息和樂趣。在有些情況下我還提供了作為計算機科學家應該知道的重要背景文章。
關于C++: 本書中的所有示例程序都是用C++編寫的, 但是我并不想難倒那些對C++不熟悉的讀者。在努力保持C++優點的同時, 使示例程序盡量簡明、 清晰。C++在本書中只是作為闡釋數據結構的工具。此外, 特別用到了C++隱蔽實現細節的特性, 例如類(class)、 私有類成員(private class member)、 構造函數(constructor)、 析構函數(destructor)。這些特性支持了一個關鍵概念: 體現于抽象數據類型(abstract data type)中的邏輯設計與體現于數據結構中的物理實現的分離。
為了使得本書清晰易懂, 我回避了某些C++的最重要特性。書中有意排除或盡量少使用一些特性, 而這些特性是經驗豐富的C++程序員經常使用的, 例如類的層次(class hierarchy)、 繼承(inheritance)和虛函數(virtual function), 運算符和函數的重載(operator and function overloading)也很少使用。在很多情況下, 更傾向于使用C的原始語義, 而不是C++所提供的一些類似功能。
當然上述C++的特性在實際程序中是合理的程序設計基礎, 但是它們只能掩蓋而不是加強本書所闡述的原理。例如, 對于程序員來說, 類的繼承在避免重復編碼和降低程序錯誤率方面是一個很重要的工具; 但是從教學的標準觀點來看, 類的繼承在若干類中分散了單個邏輯單元的描述, 從而使程序更難理解。因此, 僅當類的繼承對闡述文章的觀點有明顯作用時, 我才使用它(見5.3.1節)。避免代碼重復和減少錯誤是很重要的目標, 請不要把本書中的示例程序直接復制到自己的程序中, 而只是把它們看成是對數據結構原理的闡釋。
一個痛苦的選擇是, 作者要決定在示例代碼中是否使用模板(template)。在編寫本書的第一版時, 我決定不使用模板, 因為考慮到它們的語義對于不熟悉C++語言的人來說掩蓋了代碼的含義。在隨后的幾年中, 使用C++的計算機科學課程急劇地增加了, 因此我假設現在的讀者比以前的讀者更熟悉模板的語義。因此本書在示例代碼中大量使用了模板。
本書中的C++程序提供了有關數據結構原理的真實闡釋, 是對文字闡述的補充。不宜脫離相關文字闡述而孤立地閱讀或使用示例程序, 因為大量的背景信息包含在文字闡述中, 而不是包含在代碼中。代碼是對文字闡述的完善, 而不是相反的作用。這不是一系列具有商業質量的類的實現。如果讀者想尋找一些標準的數據結構的完整實現, 或者要在你的代碼中使用這些數據結構, 那么應該在Internet上尋找。
例如, 這些例子中所做的參數檢查, 比起商業軟件要少得多, 因為這種檢查將降低算法的清晰度。某些參數檢查和約束檢查(例如是否從一個空容器中刪除值)是以調用Assert的形式完成的。Assert的輸入是一個布爾表達式, 一旦這個表達式的值為假(false), 程序就立即終止。函數遇到一個壞參數就終止程序, 這在真實程序中通常是不必要的, 但有益于理解一個數據結構是怎樣工作的。在實際的程序應用中, C++異常處理機制(exception handling features)用來處理一些輸入數據錯誤。然而, Assert提供了一種機制, 既有益于闡明一個數據結構的工作條件, 也有利于采用真正的異常處理機制來代替。請參看附錄中的Assert實現。
在示例程序中, 我嚴格區分了“C++實現”和“偽碼”(pseudocode)。一個標明“C++實現”的示例程序在一個以上的編譯器中被真正編譯過。偽碼的示例通常具有與C++接近的語法, 但是一般包含一行以上更高級的描述。當我發現簡單的、 盡管并不十分精確的描述具有更好的教學效果時, 就使用偽碼。
習題和項目設計: 只靠讀書是不能學會靈活使用數據結構的。一定要編寫實際的程序, 比較不同的數據結構技術來觀察在一種給定的條件下哪一種數據結構更有效。
數據結構課程最重要的教學安排之一, 就是學生應該在什么時候開始學習使用指針和動態存儲分配, 從而編程實現鏈表和樹這樣的數據結構。這也是學生們學習遞歸的時機。在教學體系中, 這是學生學習重大設計(significant design)的第一門課, 因為通常需要使用真實數據結構來引出重大設計練習。最后, 基于內存和基于硬盤的數據訪問的本質區別, 必須要在編程實踐中才能理解。基于以上原因, 一門數據結構課程沒有大量的編程環節是不能成功的。在計算機系, 數據結構是課程計劃中最難的一門編程課程。
學生還需要在解決問題中鍛煉分析能力。本書提供了450個習題和編程項目, 希望讀者能夠好好利用它們。
與作者聯系的方法及相關資料的獲取: 本書難免有一些錯誤, 有些方面還有待進一步研究。非常歡迎讀者指正, 并提出建設性意見。作者在Internet上的E-mail地址是shaffer@vt.edu, 也可以給以下的地址寫信:
Cliff Shaffer
Department of Computer Science
Virginia Tech
Blacksburg, VA 24061
本書的電子版和上課中使用的一些幻燈片材料, 可以從以下網站獲取:

http://www.cs.vt.edu/~shaffer/book.html示例代碼也可以從上面的網站得到。弗吉尼亞技術學院二年級數據結構課程網頁的URL為

http://ei.cs.vt.edu/∼cs3114致謝: 本書得到了許多友人的幫助。我想特別感謝其中的幾位, 他們對本書的出版貢獻最大。對于沒有被提及的朋友, 在此表示歉意。
弗吉尼亞技術學院在1994年秋季的學術休假中使得整個出書的事情成為可能, 我是從那時開始著手準備的。在編寫這本書的第二版時, 系主任Dennis Kafura和Jack Carroll對本書給予了重要的精神支持。Mike Keenan、 Lenny Heath和Jeff Shaffer對本書最初版本的內容提供了有價值的意見。尤其是Lenny Heath多年來一直與我深入地討論算法設計和分析的有關問題, 以及怎樣把二者講授給學生的方法。十分感謝Steve Edwards花了很多時間幫助我幾次重寫了第二版、 第三版的C++代碼和Java代碼, 并與我討論程序設計的原則。Layne Watson提供了有關Mathematica軟件的幫助, Bo Begole、 Philip Isenhour、 Jeff Nielsen和Craig Struble提供了一些技術上的幫助。感謝Bill McQuain、 Mark Abrams和Dennis Kafura回答了一些有關C++和Java的問題。
對于許多評閱了本書手稿的朋友, 本人欠情甚深。這些評閱者是: J.David Bezek (Evansville大學), Douglas Campbell(Brigham Young大學), Karen Davis (Cincinnati大學), Vijay Kumar Garg(Texas-Austin大學), Jim Miller(Kansas大學), Bruce Maxim(Michigan-Dearborn大學), Jeff Parker(Agile Networks/Harvard), Dana Richards(George Mason大學), Jack Tan(Houston大學)和Lixin Tao(Concordia大學)。要不是他們的熱心幫助, 本書會出現更多技術上的錯誤, 內容也將更加淺顯。
關于這本第二版的出版, 我想感謝下列評閱者: Gurdip Singh(Kansas州立大學), Peter Allen (Columbia大學), Robin Hill (Wyoming大學), Norman Jacobson (California-Irvine大學), Ben Keller (弗吉尼亞技術學院)和Ken Bosworth (Idaho州立大學)。另外, 我要感謝Neil Stewart和Frank J.Thesen對改進本書提出的意見和建議。
第三版的評閱者包括Randall Lechlitner(Houstin大學, Clear Lake)和Brian C. Hipp(York技術學院)。感謝他們的建議。
Prentice Hall是本書第一版和第二版的出版方。沒有出版社眾多朋友的幫助, 不可能有本書的出版, 因為作者不可能自己印出書來。因此, 幾年來我要感謝Kate Hargett、 Petra Rector、 Laura Steele和Alan Apt這幾位編輯。感謝本書第二版的責任編輯Irwin Zucker, 還有本書C++版的責任編輯Kathleen Caren和Java版的責任編輯Ed DeFelippis, 他們在本書接近出版的最忙亂的日子里, 保持各個方面運作良好。感謝Bill Zobrist和Bruce Gregory使我著手此事。感謝Prentice Hall的Truly Donovan、 Linda Behrens和Phyllis Bregman在本書出版過程中給予的幫助。感謝Tracy Dunkelberger在交回版權給我時提供的幫助。可能還有許多沒有被提及的Prentice Hall出版社的朋友, 他們也默默地提供了幫助。
本人非常感謝Dover出版社的Shelley Kronzek在第三版的出版過程中付出的一切。第三版中有許多擴展, 包括Java和C++代碼, 以及一些改正。我相信這是迄今為止最好的一版。但是不知道學生會不會希望有一本免費的在線教材, 還是低價的印刷版本。最終, 我相信兩個版本會提供更多的選擇。編輯James Miller和設計經理Marie Zaczkiewicz為確保本書的高質量出版付出了辛勤的工作。
我十分感激Hanan Samet傳授給我有關數據結構的知識。我從他那里學到了許多原理與知識, 當然本書中可能出現的錯誤并不是他的責任。感謝我的妻子Terry對我的愛與支持, 還有兩個女兒Irena和Kate帶給我的歡樂, 可以讓我從艱苦的工作中解脫出來。最后, 也是最重要的, 感謝這些年來選修數據結構的學生, 是他們使我知道了在數據結構課程中什么是重要的而什么應該忽略, 許多深入的問題也是他們提供的。這本書獻給他們。
內容簡介:

本書采用程序員最廣泛采用的面向對象C++語言來描述數據結構和算法,并把數據結構原理和算法分析技術有機地結合在一起,系統介紹了各種類型的數據結構及排序、檢索的各種方法。作者非常注意對每一種數據結構的不同存儲方法及有關算法進行分析比較。書中還引入了一些比較高級的數據結構與先進的算法分析技術,并介紹了可計算性理論的一般知識。書中分別給出了C++實現方法和偽碼實現方法,便于讀者根據情況選擇。本書作者維護的網站上可下載相關代碼、編程項目和輔助練習資料。

目錄:

第一部分 預 備 知 識
第1章 數據結構和算法
1.1 數據結構的原則
1.2 抽象數據類型和數據結構
1.3 設計模式
1.4 問題、 算法和程序
1.5 深入學習導讀
1.6 習題
第2章 數學預備知識
2.1 集合和關系
2.2 常用數學術語
2.3 對數
2.4 級數求和與遞歸
2.5 遞歸
2.6 數學證明方法
2.7 估計
2.8 深入學習導讀
2.9 習題
第3章 算法分析
3.1 概述
3.2 最佳、 最差和平均情況
3.3 換一臺更快的計算機, 還是換一種更快的算法
3.4 漸近分析
3.5 程序運行時間的計算
3.6 問題的分析
3.7 容易混淆的概念
3.8 多參數問題
3.9 空間代價
3.10加速你的程序
3.11實證分析
3.12深入學習導讀
3.13習題
3.14項目設計
第二部分 基本數據結構
第4章 線性表、 棧和隊列
4.1 線性表
4.2 棧
4.3 隊列
4.4 字典
4.5 深入學習導讀
4.6 習題
4.7 項目設計
第5章 二叉樹
5.1 定義及主要特性
5.2 遍歷二叉樹
5.3 二叉樹的實現
5.4 二叉檢索樹
5.5 堆與優先隊列
5.6 Huffman編碼樹
5.7 深入學習導讀
5.8 習題
5.9 項目設計
第6章 樹
6.1 樹的定義與術語
6.2 父指針表示法
6.3 樹的實現
6.4 K叉樹
6.5 樹的順序表示法
6.6 深入學習導讀
6.7 習題
6.8 項目設計
第三部分 排序與檢索
第7章 內排序
7.1 排序術語及記號
7.2 三種代價為Θ(n2)的排序算法
7.3 Shell排序
7.4 歸并排序
7.5 快速排序
7.6 堆排序
7.7 分配排序和基數排序
7.8 對各種排序算法的實驗比較
7.9 排序問題的下限
7.10深入學習導讀
7.11習題
7.12項目設計
第8章 文件管理和外排序
8.1 主存儲器和輔助存儲器
8.2 磁盤
8.3 緩沖區和緩沖池
8.4 程序員的文件視圖
8.5 外排序
8.6 深入學習導讀
8.7 習題
8.8 項目設計
第9章 檢索
9.1 檢索未排序和已排序的數組
9.2 自組織線性表
9.3 集合檢索
9.4 散列方法
9.5 深入學習導讀
9.6 習題
9.7 項目設計
第10章 索引技術
10.1 線性索引
10.2 ISAM
10.3 基于樹的索引
10.4 2-3樹
10.5 B樹
10.6 深入學習導讀
10.7 習題
10.8 項目設計
第四部分 高級數據結構
第11章 圖
11.1 術語和表示法
11.2 圖的實現
11.3 圖的遍歷
11.4 最短路徑問題
11.5 最小支撐樹
11.6 深入學習導讀
11.7 習題
11.8 項目設計
第12章 線性表和數組高級技術
12.1 廣義表
12.2 矩陣的表示方法
12.3 存儲管理
12.4 深入學習導讀
12.5 習題
12.6 項目設計
第13章 高級樹結構
13.1 Trie結構
13.2 平衡樹
13.3 空間數據結構
13.4 深入學習導讀
13.5 習題
13.6 項目設計
第五部分 算 法 理 論
第14章 分析技術
14.1 求和技術
14.2 遞歸關系
14.3 均攤分析
14.4 深入學習導讀
14.5 習題
14.6 項目設計
第15章 下限
15.1 下限證明介紹
15.2 線性表檢索的下限
15.3 查找最大值
15.4 對抗性下限證明
15.5 狀態空間下限證明
15.6 找到第i大元素
15.7 優化排序
15.8 深入學習導讀
15.9 習題
15.10 項目設計
第16章 算法模式
16.1 動態規劃
16.2 隨機算法
16.3 數值算法
16.4 深入學習導讀
16.5 習題
16.6 項目設計
第17章 計算的限制
17.1 歸約
17.2 難解問題
17.3 不可解問題
17.4 深入學習導讀
17.5 習題
17.6 項目設計
第六部分 附 錄
附錄A 實用函數
參考文獻
詞匯表
序: