演算法生存指南

李耕銘、張凱鈞 編著

  • 演算法生存指南-preview-1
  • 演算法生存指南-preview-2
  • 演算法生存指南-preview-3
  • 演算法生存指南-preview-4
  • 演算法生存指南-preview-5
  • 演算法生存指南-preview-6
  • 演算法生存指南-preview-7
  • 演算法生存指南-preview-8
  • 演算法生存指南-preview-9
  • 演算法生存指南-preview-10
  • 演算法生存指南-preview-11
  • 演算法生存指南-preview-12
  • 演算法生存指南-preview-13
  • 演算法生存指南-preview-14
  • 演算法生存指南-preview-15
演算法生存指南-preview-1

買這商品的人也買了...

相關主題

商品描述

「What I cannot create, I do not understand.」 - Richard Feynman

最實用演算法指南,讓你在隨機森林裡也不迷航。

本書挑選出最實用、出現頻率最高的演算法及相關例題,並以C++實作,透過實作來了解每一種演算法的流程,同時每章節後皆附上 LeetCode 或 APCS考古題與線上批改系統連結供讀者練習。

 

本書適合…

修習資料結構與演算法之學生
準備APCS或程式競試的學生
準備面試或轉職成為軟體工程師的你

 

本書特色

挑選出最實用且出現頻率最高的演算法,並附上每個演算法的步驟圖解與實作程式碼
每章節後皆附上LeetCode APCS考古題與線上批改系統連結供讀者練習
仿照大學教材與進度編排,可做為大學課程的輔助或先修教材
講解常見的C++ STL 用法及操作原理,熟悉 C++ STL的使用能夠使你在程式競賽或面試中脫穎而出
程式競賽中常見的技巧或相關注意事項

 

電子資源

https://github.com/lkm543/Algorithm

作者簡介

作者介紹
李耕銘
電機所畢業後目前不務正業地在台大資工訓練班擔任講師,平時喜歡教學、寫文章、研究基礎科學,現在養了五隻貓,努力過每一天掙罐頭錢。
本書也是作者在資工訓練班開設演算法課程的參考教材。
bit.ly/3L2xOqI
Email:lkm543@gmail.com

編者介紹
張凱鈞
本來是商業顧問,因為覺得每天都在說一樣的話所以轉而研究自然語言處理。
願望是做一個很棒的系統陪大家聊天、幫助大家工作、守護世界和平。

目錄大綱

01 資料結構與演算法入門

1-1 資料結構與演算法簡介
1-2 效能還與哪些因素有關
1-3 Take Home Message
 

02 複雜度估算 Complexity

2-1 複雜度簡介
2-2 複雜度的估計法
2-3 Big-O 的運算證明
2-4 極限的表達方式
2-5 複雜度的其他符號
2-6 遞迴的複雜度計算
習題
 

03 P 與 NP 問題

3-1 演算法問題的分類
3-2 問題的難度
3-3 歸約與NP-hard
3-4 NP-complete(NPC)
習題
 

04 排序 Sort

4-1 排序簡介
4-2 插入排序法 Insertion Sort
4-3 謝爾排序法 Shell Sort 
4-4 選擇排序法 Selection Sort
4-5 冒泡排序法 Bubble Sort
4-6 合併排序法 Merge Sort
4-7 堆積排序法 Heap Sor
4-8 快速排序法 Quick Sort 
4-9 C++ STL 中的排序
4-10 實戰練習
4-11 (補充) C++ STL 的內觀排序法
習題
 

05 搜尋 Search

5-1 搜尋簡介
5-2 循序搜尋 
5-3 二分搜尋法
5-4 插補搜尋
5-5 黃金切割搜尋
5-6 費氏搜尋
5-7 雜湊搜尋
5-8 搜尋總結
5-9 實戰練習
習題
 

06 分治法Divide and Conquer

6-1 分治法 Divide and Conquer 簡介
6-2 河內塔
6-3 合併排序與快速排序 
6-4 最大子數列問題
6-5 矩陣相乘
6-6 選擇問題
6-7 支配理論
6-8 實戰練習 
習題
 

07 貪婪演算法 Greedy Algorithm

7-1 貪婪演算法簡介
7-2 找錢問題
7-3 中途休息
7-4 活動選擇問題 
7-5 背包問題 Knapsack Problem
7-6 工作排程
7-7 實戰練習
習題
 

08 動態規劃 Dynamic Programming

8-1 動態規劃簡介
8-2 動態規劃解析
8-3 找錢問題
8-4 最大子數列
8-5 活動選擇問題
8-6 郵票問題
8-7 木頭切割問題
8-8 背包問題
8-9 矩陣鏈乘
8-10 最長遞增子序列 (Longest
Increasing Subsequence, LIS)
8-11 最長共同子序列( Longest
Common Subsequence, LCS)
8-12 實戰練習
8-13 小結
習題
 

09 圖論 Graph

9-1 「圖」的定義
9-2 圖的表示方式 
9-3 圖的分類
9-4 AOV 網路、AOE 網路與拓樸
排序
9-5 實戰練習
習題
 

10 廣度優先搜尋Breadth-First Search

10-1 圖的搜尋
10-2 廣度優先搜尋的實作
10-3 計算連通元件個數
10-4 窮舉所有情形
10-5 最短路徑
10-6 環的判別
10-7 實戰練習
習題


11 深度優先搜尋Depth-First Search

11-1 深度優先搜尋簡介與實作
11-2 拓樸排序
11-3 強連通元件
11-4 N 皇后問題
11-5 實戰練習
習題


12 最小生成樹 Minimal Spanning Tree

12-1 最小生成樹定義與原理
12-2 集合的搜尋與合併
12-3 Kruskal 演算法
12-4 Prim 演算法
習題
 

13 網路流 Flow Network

13-1 網路流問題簡介
13-2 網路流問題的演算法
13-3 Ford-Fulkerson 方法
13-4 Edmonds-Karp Algorithm
13-5 二分圖最大匹配
習題
 

14 最短路徑Shortest Path

14-1 最短路徑問題簡介
14-2 Bellman-Ford Algorithm
14-3 SPFA (Shortest Path Faster
Algorithm)
14-4 DAG Algorithm
14-5 Dijkstra's Algorithm
14-6 Floyd-Warshall Algorithm
14-7 最短路徑問題總結
習題