內容簡介
不同於以往的編程類書籍,本書將編程和數學有機地結閤在一起,從曆史的角度來分析現代編程的發展曆程,有助於讀者進一步瞭解C++、Java等程序語言。雖然書中含有一些復雜難懂的數學原理,但是通過結閤現代通用編程的實例,使得兩者和諧自然地呈現在讀者眼前。
目錄
譯者序
緻謝
作者簡介
作者附言
第1章 內容提要 1
1.1 編程與數學 1
1.2 從曆史的角度來講解 2
1.3 閱讀準備 3
1.4 各章概述 3
第2章 算法初談 5
2.1 埃及乘法算法 6
2.2 改進該算法 9
2.3 本章要點 12
第3章 古希臘的數論 13
3.1 整數的幾何屬性 13
3.2 篩選素數 15
3.3 實現該算法並優化其代碼 18
3.4 完美數 23
3.5 畢達哥拉斯學派的構想 26
3.6 畢氏構想中的嚴重缺陷 28
3.7 本章要點 31
第4章 歐幾裏得算法 33
4.1 雅典與亞曆山大 33
4.2 歐幾裏得的最大公度量算法 36
4.3 缺乏數學成就的一韆年 40
4.4 奇怪的0 42
4.5 求餘及求商算法 44
4.6 用同一份代碼來實現求餘及求商 47
4.7 對最大公約數算法進行驗證 49
4.8 本章要點 51
第5章 現代數論的興起 52
5.1 梅森素數與費馬素數 52
5.2 費馬小定理 57
5.3 消去 59
5.4 證明費馬小定理 63
5.5 歐拉定理 65
5.6 模運算的應用 69
5.7 本章要點 69
第6章 數學中的抽象 71
6.1 群 71
6.2 幺半群與半群 74
6.3 與群有關的定理 77
6.4 子群及循環群 80
6.5 拉格朗日定理 82
6.6 理論與模型 86
6.7 舉例說明範疇理論與非範疇理論 89
6.8 本章要點 92
第7章 推導泛型算法 94
7.1 厘清算法所應滿足的要求 94
7.2 對模闆參數A提齣要求 95
7.3 對模闆參數N提齣要求 98
7.4 提齣新的要求 100
7.5 將乘法算法改編為冪算法 102
7.6 對運算本身加以泛化 103
7.7 計算斐波那契數 106
7.8 本章要點 109
第8章 更多代數結構 110
8.1 斯蒂文、多項式及最大公約數 110
8.2 哥廷根與德國數學 115
8.3 埃米·諾特與抽象代數的誕生 120
8.4 環 121
8.5 矩陣乘法與半環 124
8.6 半環的運用:社交網絡與最短路徑 125
8.7 歐幾裏得整環 127
8.8 域及其他的代數結構 128
8.9 本章要點 129
第9章 整理數學知識 132
9.1 證明 132
9.2 數學史上的第一個定理 135
9.3 歐幾裏得與公理化方法 137
9.4 與歐氏幾何並立的其他幾何學 139
9.5 希爾伯特的形式化方法 141
9.6 皮亞諾與他的公理 144
9.7 用皮亞諾公理來構建算術體係 147
9.8 本章要點 149
第10章 編程的基本概念 150
10.1 亞裏士多德與抽象 150
10.2 值與類型 152
10.3 concept 153
10.4 迭代器 156
10.5 迭代器的種類、所支持的操作及所具備的特性 157
10.6 區間 160
10.7 綫性搜索 162
10.8 二分搜索 163
10.9 本章要點 167
第11章 置換算法 169
11.1 置換與換位 169
11.2 交換兩個區間內的元素 172
11.3 鏇轉 175
11.4 利用循環來執行鏇轉 178
11.5 倒置 182
11.6 空間復雜度 186
11.7 內存自適應算法 187
11.8 本章要點 188
第12章 再論最大公約數算法 189
12.1 硬件的限製催生齣更為高效的算法 189
12.2 Stein 算法的推廣 192
12.3 貝祖等式 194
12.4 擴展最大公約數算法 198
12.5 最大公約數算法的運用 202
12.6 本章要點 203
第13章 實際運用 204
13.1 密碼學 204
13.2 素數測試 206
13.3 米勒–拉賓素數測試 209
13.4 RSA算法的步驟及原理 211
13.5 本章要點 214
第14章 全書總結 215
延伸閱讀 217
附錄A 記法 222
附錄B 常用的證明辦法 225
附錄C 寫給非 C++ 程序員看的C++ 知識 228
參考文獻 237
中英文詞匯對照錶 241
精彩書摘
《數學與泛型編程:高效編程的奧秘》:
迭代器可以理解為一種能夠在綫性時間內執行綫性搜索的東兩,其關鍵在於後繼(successor)這一概念,其實迭代器可以直接自得皮亞諾公理,因為這個名叫Iterator的concept,實際上就是“一種具備後繼概念的理論”。然而編程中的迭代器並沒有這麼嚴格,因為我們並不要求每一條皮亞諾公理都必須成立。例如在皮亞諾算術中,所有的數都有後繼元素,然而這對於迭代器來說,則未必成立,因為我們有可能已經處在整套數據的末端瞭此外,皮亞諾公理還說:相等的後繼元素所對應的前趨元素也必定相等,這就足說,不允許齣現循環結構。這條要求同樣不適用於編程工作,因為我們可能要用到那種可以鏈接到早前元素並構成循環的數據結構,而且有時恰恰需要用這種結構來高效地進行計算。
除瞭可以移動到後繼位置之外,我們還能對迭代器執行解引用(dereferencing)操作,以便獲取其所指嚮的元素值。解引用對時間復雜度是有要求的,也就是說,它應該是一種快速的(fast)操作纔對,這意味著:其他的數據獲取方式都不如通過迭代器來獲取數據更快。
……
數學與泛型編程:高效編程的奧秘 下載 mobi epub pdf txt 電子書