為了便于讀者進(jìn)行系統(tǒng)學(xué)習(xí)、分類整理知識(shí)點(diǎn)及遇到問題時(shí)能夠快速找到求解的方法,本書按照算法策略進(jìn)行劃分,每一章都引入了若干個(gè)經(jīng)典問題。通過問題的分析、計(jì)算模型的建立、算法的設(shè)計(jì)與描述、算法的分析來深入解讀每一種算法策略所能解決的問題范疇及方法。全書共分9章,內(nèi)容包括:算法設(shè)計(jì)基礎(chǔ)、算法效率分析基礎(chǔ)、迭代法、蠻力法、分治策略、回溯與分支界限、貪心算法、動(dòng)態(tài)規(guī)劃、隨機(jī)算法。
本書非常注重教材的可讀性和實(shí)用性,以問題分析→模型設(shè)計(jì)→算法設(shè)計(jì)描述→算法分析為技術(shù)線路,幫助讀者迅速掌握算法設(shè)計(jì)要點(diǎn),規(guī)范算法設(shè)計(jì)、分析及實(shí)現(xiàn)的方法。書中例題的問題分析和模型設(shè)計(jì)模塊用于培養(yǎng)讀者的抽象設(shè)計(jì)能力,算法設(shè)計(jì)模塊用于提高讀者運(yùn)用計(jì)算機(jī)求解問題的能力,算法分析模塊用于幫助讀者運(yùn)行用數(shù)學(xué)工具對(duì)算法進(jìn)行客觀分析。同時(shí),本書編寫時(shí)也考慮到初學(xué)者所面臨的困難,在算法設(shè)計(jì)與描述中,刻意增加了基于源代碼的程序設(shè)計(jì)與實(shí)現(xiàn)環(huán)節(jié),從而全方位地幫助讀者提高算法設(shè)計(jì)與分析實(shí)踐能力和理論水平。
知識(shí)講解清晰,每章有思維導(dǎo)圖引領(lǐng)。有配套的實(shí)驗(yàn)指導(dǎo)書、多媒體課件,提供教材課后習(xí)題答案,案例豐富,與應(yīng)用結(jié)合。針對(duì)初學(xué)者學(xué)習(xí)算法面臨的困難,設(shè)計(jì)了相應(yīng)的環(huán)節(jié),對(duì)初學(xué)者友好,更便于其提高。
工作單位:哈爾濱工業(yè)大學(xué)(威海)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院。
科研情況:作為項(xiàng)目主要負(fù)責(zé)人和參與者承擔(dān)完成各類科研項(xiàng)目10多項(xiàng),其中核高基重大專項(xiàng)項(xiàng)目 1項(xiàng),國家863計(jì)劃子課題1項(xiàng),山東省科技攻關(guān)計(jì)劃項(xiàng) 1項(xiàng),山東省自然科學(xué)基金項(xiàng) 1項(xiàng),山東省自主創(chuàng)新工程1項(xiàng),山東省重大科技攻關(guān)1項(xiàng),其他課題項(xiàng)目2項(xiàng)。發(fā)表科研論文10多篇,其中多篇被EI等主要檢索工具檢索。
出版教材: 《C語言程序設(shè)計(jì)與應(yīng)用》 《C語言程序設(shè)計(jì)與應(yīng)用實(shí)驗(yàn)指導(dǎo)書》 《計(jì)算機(jī)實(shí)用教程》
第 1章 算法設(shè)計(jì)基礎(chǔ) 1
1.1算法的基本概念 2
1.2算法描述的方法 5
1.3算法設(shè)計(jì)的過程 8
1.4算法設(shè)計(jì)工具 12
1.4.1 循環(huán)設(shè)計(jì) 12
1.4.2 遞歸設(shè)計(jì) 16
1.4.3循環(huán)與遞歸的比較 17
1.5基本的數(shù)據(jù)結(jié)構(gòu) 21
1.5.1 線性數(shù)據(jù)結(jié)構(gòu) 21
1.5.2 樹 21
1.5.3 圖 22
本章小結(jié) 24
第 2章 算法效率分析基礎(chǔ) 26
2.1 數(shù)學(xué)基礎(chǔ) 28
2.1.1函數(shù)的漸近的界 28
2.1.2利用極限求函數(shù)的漸近的界 30
2.1.3有用的求和級(jí)數(shù)及推導(dǎo)方法 31
2.1.4 基本效率類型 33
2.2 算法效率分析 33
2.2.1非遞歸形式算法分析 33
2.2.2遞歸形式算法分析 35
本章小結(jié) 39
第3章 迭代法 40
3.1迭代法的設(shè)計(jì)技術(shù) 40
3.2簡單迭代運(yùn)算 40
3.3求解方程的近似算法 47
3.3.1非線性方程 47
3.3.2求線性代數(shù)方程組 51
本章小結(jié) 53
第4章 蠻力法 54
4.1 枚舉法 54
4.2 窮舉查找 59
4.3 圖的搜索 63
4.3.1 深度優(yōu)先查找 63
4.3.2 廣度優(yōu)先查找 65
本章小結(jié) 67
第5章 分治策略 68
5.1 分治法的設(shè)計(jì)技術(shù) 68
5.2 二分查找 69
5.3 大整數(shù)的乘法和Strassen矩陣乘法 70
5.4 棋盤覆蓋 74
5.5 選擇性問題 76
本章小結(jié) 78
第6章 回溯與分支限界 79
6.1 回溯法的設(shè)計(jì)技術(shù) 80
6.1.1 算法思想 80
6.1.2 算法框架 81
6.1.3 回溯算法的適用條件 82
6.2 回溯算法的經(jīng)典例題 83
6.2.1 裝載問題 83
6.2.2 n皇后問題 85
6.2.3 0-1背包問題 86
6.2.4 旅行商問題 88
6.3 分支限界法的設(shè)計(jì)技術(shù) 91
6.4 分支限界的經(jīng)典例題 92
6.4.1 裝載問題 92
6.4.2 背包問題 97
6.4.3 旅行商問題 101
本章小結(jié) 110
第7章 貪心算法 112
7.1 貪心算法的設(shè)計(jì)技術(shù) 112
7.2 用貪心法求問題的解 113
7.3 近似貪心問題 118
本章小結(jié) 119
第8章 動(dòng)態(tài)規(guī)劃 120
8.1 動(dòng)態(tài)規(guī)劃的設(shè)計(jì)技術(shù) 120
8.2 投資分配問題 125
8.3 背包問題 128
8.4 矩陣連乘 132
8.5 最長公共子序列 135
8.6 最大子段和 138
本章小結(jié) 140
第9章 隨機(jī)算法 141
9.1同余的概念 141
9.2 隨機(jī)數(shù) 143
9.3 蒙特卡羅算法 144
9.4 舍伍德算法 149
9.5 拉斯維加斯算法 151
本章小結(jié) 152