2018、2019、2020連續三年國際資訊奧林匹亞競賽(IOI)金牌得主
日本天才年輕程式設計師米田優峻
為所有程式設計者而寫的演算法×數學學習全指南
從入門者、進階程式設計師到競賽選手都該具備
一口氣學會「必學經典演算法」+「支撐演算法的必要數學知識」
獲得能真正徹底活用演算法的扎實程式設計力!
「要理解程式設計中演算法與基礎數學之間的密切關係,這本書應該是最適合的了。」
──日本國立資訊學研究所副所長 河原林健一 專業推薦
|要真正理解、活用演算法,就得同步從數學下手——
|第一本同時講解「演算法×數學×競賽題型」的程式必備基礎學習書,讓你事半功倍,一步到位!
現代社會中,從電腦、智慧型手機,再到最前端的AI人工智慧等,無一沒有程式語言的參與。
而在電腦強大的功能與計算能力背後,為了以最有效率的方式運算、解決問題,
「演算法」扮演了關鍵角色,讓我們得以用更少的計算資源來解決各種問題。
因此不論資歷深淺,演算法是所有程式設計者必得萬分熟悉的工具與知識。
而要掌握演算法,背後的數學知識更是關鍵,但坊間的演算法學習資源時常忽略了學習者對於相關數學的掌握。
觀察到此點的本書作者米田優峻,因而撰寫了本書,從演算法和數學同步下手,讓我們能夠真正掌握演算法的精髓。
出生於2002年、現就讀東京大學四年級的米田優峻,在中學一年級時迷上程式設計,
於2018、2019、2020連續三年奪得國際資訊奧林匹亞競賽(IOI)金牌,創下驚人紀錄。
2023年,他再度於國際大學生程式設計競賽(ICPC)獲得全球第九名佳績。
透過本書,他將深入淺出為讀者介紹各種經典演算法,並同時介紹必要的數學知識,幫助讀者扎實理解演算法的原理與提升應用能力。
本書共有三大特色:
1. 使用簡單易懂的圖解和方法,讓初學者也能輕鬆掌握。
2. 提供了200道例題和演練題,幫助讀者鞏固所學知識。
3. 從中學到大學程度的數學知識,僅選取與演算法相關的重要部分進行講解。
不論你是剛接觸演算法學習的程式設計入門者,或者希望在已有的數學與演算法知識基礎上更深入理解,抑或者希望為程式設計競賽做準備,
本書提供具體實用的知識和技巧,為你帶來莫大幫助,在閱讀過程中帶給你無窮樂趣。
作者簡介:
米田優峻
2002 年生。2021 年畢業於筑波大學附屬駒場高中,現就讀東京大學。
他以「E869120」之名活躍於競技程式設計領域,也在日本最大的競技程式設計比賽網站「AtCoder」上獲得了最高等級的紅色稱號。至2020 年為止於國際資訊奧林匹克(IOI)中獲得三次金牌。與演算法研究相關的獲獎紀錄還包括日本學生科學獎、數學自由研究比賽(MATHコン)等。
此外,他也致力於推廣演算法和競技程式設計的活動,如在Qiita 撰寫〈紅階碼者親授,提升競程的指南〉等文章,以及有數千名參加者規模、在AtCoder 進行每天投稿一個新問題的企劃「競技程式設計典型90 題」等。
譯者簡介:
馬毓晴 交通大學電信研究所畢,曾在國際專利事務所擔任工程師,具有處理電機領域之日文專利的經驗。現職為軟體工程師。
目錄
重要網址統整
購書前須知
序言
▍第1章 演算法與數學的密切關聯
1.1 演算法是什麼?
1.2 為什麼演算法需要數學?
1.3 關於本書的結構與學習內容
1.4 本書探討的演算法
1.5 本書探討的數學知識及數學思考
▍第2章 用於演算法的數學基本知識
2.1 數的分類、文字式、二進制
2.2 基本的運算及符號
2.3 各式各樣的函數
2.4 估計計算次數~全搜尋和二元搜尋~
2.5 其他基本的數學知識
專欄1 關於競技程式設計
專欄2 組合的全搜尋
第2章的統整
▍第3章 基本的演算法
3.1 質數判定法
3.2 輾轉相除法
3.3 情況數及演算法
3.4 機率、期望值及演算法
3.5 蒙地卡羅法~統計的思考方法~
3.6 排序與遞迴的思考方法
3.7 動態規劃法~遞迴式的利用~
專欄3 陣列的二元搜尋
第3章的統整
▍第4章 進階的演算法
4.1 用電腦解決圖形問題~計算幾何學~
4.2 階差及累積和
4.3 牛頓法~試著進行數值計算吧~
4.4 埃拉托斯特尼篩法
4.5 使用圖形的演算法
4.6 高效的餘數計算
4.7 矩陣乘方~費波那契數列的快速計算~
專欄4 三角函數
專欄5 梯度下降法
第4章的統整
▍第5章 用以解決問題的數學思考
5.1 為什麼數學思考很重要?
5.2 考慮規律性
5.3 著眼於奇偶
5.4 熟練處理集合
5.5 考慮極限
5.6 分解成小問題
5.7 考慮相加的次數
5.8 考慮上界
5.9 只考慮下一步~貪婪法~
5.10 其他的數學思考
專欄6 A*演算法
第5章的統整
最終確認問題
結語
致謝
推薦書籍
參考文獻
作者簡介
重要網址統整
購書前須知
序言
▍第1章 演算法與數學的密切關聯
1.1 演算法是什麼?
1.2 為什麼演算法需要數學?
1.3 關於本書的結構與學習內容
1.4 本書探討的演算法
1.5 本書探討的數學知識及數學思考
▍第2章 用於演算法的數學基本知識
2.1 數的分類、文字式、二進制
2.2 基本的運算及符號
2.3 各式各樣的函數
2.4 估計計算次數~全搜尋和二元搜尋~
2.5 其他基本的數學知識
專欄1 關於競技程式設計
專欄2 組合的全搜尋
第2章的統整
▍第3章 基本的演算法
3.1 質數判定法
3.2 輾轉相除...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。