本書從人們身邊最常見的整數(shù)講起,逐步深入,介紹了數(shù)論、計數(shù)、圖論、機(jī)器學(xué)習(xí)等領(lǐng)域的一些典型算法及其原理,尤其是算法背后的數(shù)學(xué)原理,可以讓讀者對這些算法有更深入的理解。
本書分為11章,涵蓋的主要內(nèi)容有整數(shù)的素因子分解、輾轉(zhuǎn)相除、更相減損、擴(kuò)展歐幾里得算法和Karastuba算法; 密碼體制和RSA體制的加密原理;遞歸與分治算法、動態(tài)編程技術(shù)、特征方程和特征根;算法復(fù)雜度分析、大O和大Θ的意義;窮舉法、深度優(yōu)先搜索、廣度優(yōu)先搜索、貪心策略;A?搜索算法;遺傳算法;網(wǎng)絡(luò)流、增廣路徑最大流算法;最小二乘法的原理、線性回歸、非線性回歸;基于正態(tài)分布的異常檢測、局部異常因子算法;P/NP問題。
本書內(nèi)容通俗易懂,案例豐富,實(shí)用性強(qiáng),立足于詳細(xì)解釋算法的原理,尤其是算法背后的數(shù)學(xué)原理,適合于有一定 編程基礎(chǔ)和算法基礎(chǔ)的讀者進(jìn)階閱讀,也適合 Python程序員、Java程序員等其他編程愛好者閱讀。
孫博,蘇州工業(yè)園區(qū)高技能領(lǐng)軍人才,擅長人工智能、機(jī)器學(xué)習(xí)、算法和軟件結(jié)構(gòu)設(shè)計等,曾在CSDN等多個知名博客網(wǎng)站發(fā)表多篇技術(shù)文章,深受讀者的喜愛。
第1章重新認(rèn)識整數(shù)(整數(shù)分解)
1.1學(xué)生的代碼和老師的代碼2
1.2整除和余數(shù)3
1.3素數(shù)5
1.4整數(shù)分解8
1.5最大公約數(shù)11
1.6青蛙約會16
1.7最小公倍數(shù)20
1.8哥德巴赫猜想猜的是什么?22
1.9整數(shù)比自然數(shù)更多嗎?23
1.10全體實(shí)數(shù)比±1之間的實(shí)數(shù)更多嗎?23
1.11大整數(shù)的乘法24
1.12小結(jié)29
第2章密碼疑云(數(shù)論)
2.1密碼簡史31
2.2被竊聽與被冒充33
2.3密碼體制34
2.4數(shù)字簽名38
2.5數(shù)字證書40
2.6RSA體制40
2.7攻破心的壁壘49
2.8來自量子計算的挑戰(zhàn)50
2.9小結(jié)51
第3章遞歸的邏輯(計數(shù))
3.1遞歸關(guān)系式54
3.2不斷繁殖的兔子——遞歸關(guān)系模型54
3.3遞歸關(guān)系的基本解法57
3.4遞歸算法61
3.5動態(tài)編程62
3.6遞歸與分治64
3.7打印一棵二叉樹69
3.8分形之美73
3.9米諾斯的迷宮78
3.10小結(jié)87
第4章O和大Θ(算法復(fù)雜度)
4.1算法分析89
4.2運(yùn)行比較法91
4.3數(shù)學(xué)分析法91
4.4大O 96
4.5大Θ101
4.6二分查找有多快?103
4.7跨床大橋能完成嗎?105
4.8冒泡排序真的慢嗎?108
4.9小結(jié)112
第5章搜索的策略(搜索算法)
5.1盲目搜索114
5.2八皇后問題115
5.3貪心策略122
5.4小偷的背包122
5.5騎士旅行126
5.6覲天寶匣上的拼圖134
5.7小結(jié)142
第6章最短路徑(A搜索)
6.1A搜索144
6.2通往基地的捷徑147
6.3再戰(zhàn)覲天寶匣162
6.4小結(jié)170
第7章退而求其次(遺傳算法)
7.1小偷又來了172
7.2遺傳算法172
7.3橢圓中的最大矩形184
7.4宿管員的煩惱189
7.5小結(jié)211
第8章網(wǎng)絡(luò)流(圖論)
8.1基本概念和術(shù)語213
8.2尋找最大流218
8.3補(bǔ)給線上的攻防戰(zhàn)227
8.4姜子牙的糧道232
8.5緩解擁堵的高速公路234
8.6皇家飛行員的匹配236
8.7小結(jié)239
第9章擬合的策略(最小二乘法)
9.1問題的源頭241
9.2最小二乘法242
9.3線性回歸249
9.4非線性問題252
9.5中國人口總量的線性擬合260
9.6正態(tài)分布的擬合曲線264
9.7小結(jié)267
第10章異常檢測(半監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí))
10.1監(jiān)督學(xué)習(xí)不靈了269
10.2基于一元正態(tài)分布的異常檢測270
10.3基于多元正態(tài)分布的異常檢測276
10.4局部異常因子算法285
10.5小結(jié)295
第11章淺談P/NP問題(非確定性問題)
11.1水滸英雄卡的故事297
11.2這些奇怪的名字298
11.3如何面對NP問題301
11.4如果P=NP305
11.5小結(jié)306
附錄
A同余和模運(yùn)算307
B切割圖片的代碼308
C拉格朗日乘子法310
D多元線性回歸的推導(dǎo)過程311
E多元函數(shù)的泰勒展開314
F最大似然原理315