演算法不只是知識,更該是解決問題的手段──
從理解演算法的設計技法、資料結構、圖演算法到解決問題,
透過大量圖解、程式競賽例題與實際案例,
告訴你如何真正學會並應用演算法,具體解決現實生活中的難題!
「『會寫演算法』跟『獲得高效率的成果』這兩件事有很大的落差。
該怎麼做才能獲得效率良好的結果──亦即該採用什麼樣的演算法比較好?
對於這些問題點,本書作了範圍寬廣又清楚明瞭的解說。
而且本書是針對演算法初學者,用能夠引發對演算法興趣的方式撰寫。
如果想要向成為演算法高手踏出第一步,那麼本書是最適合不過的了。」
──日本國立資訊學研究所副所長 河原林健一 專業推薦
不論你是想要成為一名程式設計/軟體工程師,或是必須在大學課程獲取學分,或是想在程式設計競賽中獲勝,都會需要學習演算法的基礎知識。
即使「人工智慧」、「量子電腦」等新科技不斷發展,任何涉及軟體工程或電腦科學的技術人士,都必須理解本書中的演算法基礎知識。
與日新月異變化快速的領域不同,演算法的基礎知識可謂「終身受用」,不管要從事什麼樣的領域,都能成為你的優勢與靠山。
此外,演算法的力量不僅止於單純的知識,它對程式設計也有直接的幫助。
如果能把演算法變成自己的工具,自行選擇合適的演算法,甚至自己設計需要的演算法,你能解決問題的範圍就可以大為擴展。
此外,基本的演算法和資料結構,還能提供程式語言的功能和標準函式庫等。
透過了解它們的機制與原理,就更能掌握操作的特性及提高速度。
由程式競賽經驗豐富的兩位作者所撰寫的本書,目標是希望幫助讀者「把演算法變成自己的工具」。
除了介紹著名的演算法,為你打下扎實的重要基礎外,更將重點放在演算法的應用和設計上,教你如何利用演算法的力量找出方法、解決問題。
本書不僅是入門書,也是一本收錄程式設計比賽網站AtCoder眾多例題、精進C++編碼技巧的實用書,滿載資訊科學學習者受用的內容。
▍從認識演算法、設計技法、實際應用到參加競賽,一本帶你確實精進程式設計力的絕佳指南
本書共有18章,主要可分為「演算法設計技法」、「資料結構」、「圖演算法」三大主題,
循序漸進認識演算法、演算法的設計技法、資料結構、圖(graph),最後解說P與NP相關主題及難以設計出能有效求解演算法的難題該如何應對。
首先,在第1和第2章,作者概述了演算法和計算複雜度。
接下來,第3至第7章將是本書的主要部分,詳細解釋「演算法設計技法」。
過往許多演算法相關書籍僅在後半部分簡單介紹,但本書希望訓練讀者能夠實際應用這些設計法來解決現實世界的問題,
因此會在前半部分即詳細解釋這些設計技法,並在後半部分示範如何實際應用。
在第8至第11章,作者將針對「資料結構」進行解說,這在要有效實現設計出的演算法時非常重要。
此外,透過學習資料結構,你將能夠改進演算法的計算複雜度,
並且理解像C++和Python等程式語言中提供的標準函式庫的運作方式,以便有效應用。
在第12章,作者將討論排序演算法,接著在第13至第16章中解釋圖演算法。
圖是一個非常強大的數學工具,許多問題可以通過將其化為圖問題來更清晰地處理。
此外,在設計圖演算法時,將會運用前面學到的設計技法和資料結構。
最後,在第17章,作者將解釋有關P和NP的話題,並理解世界上仍存在許多「難以設計出有效的演算法以解決的難題」。
第18章中,作者將統整如何應對這些難題的方法。
除了搭配豐富圖解的以上主要內容外,每章末更附有各種不同難易度的練習題,
幫助讀者確認是否理解章節內容,以及是否能夠運用學習到的概念實際解決難題。
其中更包括AtCoder程式設計競賽的精華考古題,
更幫助想參加各種程式設計競賽的你,進一步開發自我潛能,增進程式設計能力,在賽場上奪得佳績。