程序員的數學基礎課:從理論到Python實踐 | 被動收入的投資秘訣 - 2024年10月
程序員的數學基礎課:從理論到Python實踐
本書緊貼電腦領域,從程式員的需求出發,精心挑選了程序員真正用得上的數學知識,通過生動的案例來解讀知識中的難點,使程序員更容易對實際問題進行數學建模,進而構建出更優化的演算法和代碼。
本書共分為三大模塊:“基礎思想”篇梳理程式設計中常用的數學概念和思想,既由淺入深地精講資料結構與數學中基礎、核心的數學知識,又闡明數學對程式設計和演算法的真正意義;“概率統計”篇以概率統計中核心的貝葉斯公式為基點,向上講解隨機變數、概率分佈等基礎概念,向下講解樸素貝葉斯,並分析其在生活和程式設計中的實際應用,使讀者真正理解概率統計的本質,跨越概念和應用之間的鴻溝;“線性代數”篇從線性代數中的核心概念向量、矩陣、線性方程入手,逐步深入分析這些概念是如何與電腦融會貫通以解決實際問題的。
除了理論知識的闡述,本書還通過Python語言,分享了通過大量實踐積累下來的寶貴經驗和編碼,使讀者學有所用。本書的內容從概念到應用,再到本質,層層深入,不但注重培養讀者養成良好的數學思維,而且努力使讀者的程式設計技術實現進階,非常適合希望從本質上提升編程品質的中級程序員閱讀和學習。
第一篇 基礎思想
第1章 二進位、餘數和布林代數
1.1 二進位
1.1.1 二進位標記
1.1.2 二進位的位元操作
1.1.3 負數的二進位表示
1.2 餘數
1.2.1 求余和同余定理
1.2.2 雜湊
1.2.3 同位
1.2.4 交叉驗證
1.3 布林代數
1.3.1 邏輯
1.3.2 集合
第2章 反覆運算、數學歸納和遞迴
2.1 反覆運算法
2.1.1 反覆運算法簡介
2.1.2 反覆運算法的應用
2.2 數學歸納法
2.3 遞迴
2.3.1 從數學歸納法到遞迴
2.3.2 分而治之
2.4 反覆運算法、數學歸納法和遞迴的關聯
第3章 排列、組合和動態規劃
3.1 排列
3.2 組合
3.3 動態規劃
3.3.1 編輯距離
3.3.2 狀態轉移
3.3.3 狀態轉移方程和編程實現
3.3.4 動態規劃解決最優組合
第4章 樹和圖
4.1 圖和樹的概念
4.2 樹的常見應用
4.2.1 WordNet中的關聯詞
4.2.2 二叉樹
4.3 樹的深度優先搜索和遍歷
4.3.1 首碼樹的構建和查詢
4.3.2 深度優先的實現
4.4 樹和圖的廣度優先搜索和遍歷
4.4.1 社交網路中的好友問題
4.4.2 實現社交好友
4.4.3 如何最高效地求兩個使用者間的最短路徑
4.4.4 最有效的嵌套型聚合
4.5 圖中的最短路徑
4.5.1 基於廣度優先或深度優先搜索的方法
4.5.2 一個優化的版本:Dijkstra算法
第5章 編程中的數學思維
5.1 數據結構、編程語言和基礎算法
5.1.1 數據結構
5.1.2 編程語句
5.1.3 基礎算法
5.2 算法複雜度分析
5.2.1 複雜度分析的原理和法則
5.2.2 複雜度分析的案例
第二篇概率統計
第6章 概率和統計基礎
6.1 概論和統計對於編程的意義
6.1.1 概率和統計的概念
6.1.2 概率和統計可以做什麼
6.2 隨機變數、概率分佈和期望值
6.2.1 隨機變數
6.2.2 概率分佈
6.2.3 期望值
6.3 聯合概率、條件概率和貝葉斯定理
6.3.1 聯合概率、條件概率和邊緣概率
6.3.2 貝葉斯定理
6.3.3 隨機變數之間的獨立性
第7章 樸素貝葉斯分類
7.1 原始資訊的轉換
7.2 樸素貝葉斯的核心思想
7.3 基於樸素貝葉斯算法的文本分類
7.3.1 文本分類系統的基本框架
7.3.2 自然語言的預處理
7.3.3 樸素貝葉斯模型的構建
7.3.4 樸素貝葉斯模型的預測
7.3.5 樸素貝葉斯分類的實現