算法設計與分析

-
【作 者】趙晶
【I S B N 】978-7-5226-1420-5
【責任編輯】趙佳琦
【適用讀者群】本專通用
【出版時間】2023-05-10
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】200
【千字數】320
【印 張】12.5
【定 價】¥36
【叢 書】普通高等教育計算機類專業教材
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書介紹了常見的算法設計方法,主要內容包括算法概述、遞歸、分治法、動態規劃、貪心算法、回溯法和分支限界法。書中介紹各種算法的設計思路、算法復雜性及實例分析,同時在每一章的章首部分增加了學習要點,每一章的章末附有和本章內容相關的習題。
本書適合普通高等學校及高職院校的計算機科學與技術專業、軟件工程專業、數據科學與技術專業、信息與計算科學等專業本科生作為教材使用,也適合從事算法設計的技術人員學習參考。
本書配有電子課件,讀者可以從中國水利水電出版社網站(www.waterpub.com.cn)或萬水書苑網站(www.hzxbc.cn)免費下載。
● 緊扣教學規律,合理設計內容結構。
● 讓讀者掌握現今流行技術的底層算法及復雜度分析。
● 提供電子課件等資源,方便教學。
黨的二十大報告明確提出,教育、科技、人才是全面建設社會主義現代化國家的基礎性、戰略性支撐。必須堅持科技是第一生產力、人才是第一資源、創新是第一動力,深入實施科教興國戰略、人才強國戰略、創新驅動發展戰略,開辟發展新領域新賽道,不斷塑造發展新動能新優勢。要堅持教育優先發展、科技自立自強、人才引領驅動,加快建設教育強國、科技強國、人才強國,堅持為黨育人、為國育才,全面提高人才自主培養質量,著力造就拔尖創新人才,聚天下英才而用之。
在面臨經濟發展轉型、科學技術“卡脖子”等問題的背景下,高等教育的重點是加強基礎學科、新興學科、交叉學科建設,加快建設優勢學科。計算機科學與技術學科緊跟國內外計算機科學與技術前沿,為國家培養計算機科學與技術高層次人才,而計算機科學與技術專業是一個計算機系統與網絡兼顧的計算機學科寬口徑專業,旨在培養具有良好的科學素養、具有自主學習意識和創新意識、科學型和工程型相結合的計算機專業高水平工程技術人才。
“算法設計與分析”是計算機科學與技術專業的核心課程,它將高級語言程序設計、數據結構和計算方法等內容緊密地結合在一起,通過介紹常見的算法設計策略、復雜性分析方法和應用,培養學生分析問題和解決問題的能力,使學生掌握算法設計的基本方法,熟悉算法分析的基本技術,并能熟練運用一些常用算法,為學生開發高效的軟件系統及參加相關領域的研究工作奠定堅實的基礎。
本書將社會上比較流行的、比較先進的部分互聯網技術進行分析,挖掘其底層借鑒的基本算法,讓讀者掌握現今流行技術的底層算法及復雜度分析,提高讀者的學習積極性及主動性,培養讀者積極探索的科學精神。
全書共分7章:
第1章 算法概述。簡單介紹了算法的概念,算法與程序的區別與聯系,算法的時間復雜度和空間復雜度分析。
第2章 遞歸。通過實例介紹了遞歸方程的設計方法,同時給出求解遞歸方程的方法。
第3章 分治法。介紹了分治法的基本思想,并通過二分搜索、棋盤覆蓋、合并排序、快速排序等應用詳細介紹分治法的設計思想、時間復雜度分析。
第4章 動態規劃。先由幾個實例引出動態規劃算法的基本思想及求解過程,然后分析了備忘錄方法與動態規劃算法的異同,并通過最長公共子序列、最大子段和、合唱隊形問題、0-1背包問題詳細介紹動態規劃算法的設計方法、時間復雜度分析。
第5章 貪心算法。通過實例分析了貪心算法的設計思想、基本要素,并通過活動安排問題、背包問題、最優裝載問題、哈夫曼編碼等應用詳細給出貪心策略的設計方法、貪心策略的證明。
第6章 回溯法。本章首先介紹解空間的基本概念,并給出構造解空間的過程分析,然后介紹回溯法的框架,并通過裝載問題、n后問題、0-1背包問題等詳細介紹回溯法的構造過程,最后分析了影響回溯法效率的原因。
第7章 分支限界法。本章首先介紹分支限界法與回溯法的異同,然后通過單源最短路徑、裝載問題、0-1背包問題詳細介紹分支限界法的求解步驟。
本書采用C++語言作為表述手段,書中介紹了各種算法的設計思路、算法復雜性及實例分析,同時在每一章的章首部分增加了學習要點,每一章的章末附有和本章內容相關的習題,并免費提供電子課件。
本書的編寫得到了齊魯工業大學計算機科學與技術學部人才培養提升計劃優秀教材培育項目的支持,同時得到了齊魯工業大學教材建設基金資助,在此表示衷心的感謝。
本書由趙晶任主編,尉秀梅、李愛民、魯芹、姜雪松任副主編,編寫過程中的校對工作由碩士生鄒慶志、胡玉帥、張榮環、高帥、時俊康、豆希夢、吳棟林、曲相宇、秦宥煊、石明、王浩、張雪峰完成,在此表示感謝。
由于編者的知識和寫作水平有限,書稿雖幾經修改,仍難免存在缺點和錯誤,熱忱歡迎同行專家和讀者惠予批評指正,使本書不斷改進,日臻完善。
編 者
2022年6月
1.1 算法與程序 1
1.1.1 算法與程序概述 1
1.1.2 為什么要學習算法? 1
1.1.3 算法的描述方法 2
1.1.4 解決問題的基本步驟 4
1.2 算法的時間復雜度 5
1.2.1 算法設計的例子 5
1.2.2 為什么需要對算法進行復雜度
分析? 8
1.2.3 算法的復雜度分析 9
1.2.4 算法時間復雜度的定義 11
1.2.5 運行時間的上界(O記號) 13
1.2.6 運行時間的下界(Ω記號) 15
1.2.7 運行時間的準確界(Θ記號) 16
1.3 算法的空間復雜度 18
1.4 NP類問題 19
習題 19
第2章 遞歸 21
2.1 遞歸算法 21
2.2 求解遞歸方程 28
2.2.1 迭代法 28
2.2.2 差消法 29
2.2.3 遞歸樹法 30
2.2.4 主定理法 31
習題 34
第3章 分治法 37
3.1 分治法引言 37
3.2 分治法的基本思想 37
3.2.1 基本思想 37
3.2.2 時間復雜度分析 39
3.3 二分搜索 40
3.3.1 尋找假幣 40
3.3.2 二分搜索問題 42
3.4 棋盤覆蓋 44
3.5 合并排序 47
3.6 快速排序 51
3.7 金塊問題 53
3.8 循環賽日程表 56
習題 58
第4章 動態規劃 63
4.1 幾個實例 63
4.1.1 爬樓梯問題 63
4.1.2 國王挖金礦問題 64
4.1.3 矩陣連乘問題 65
4.2 動態規劃算法的基本思想 67
4.2.1 動態規劃算法的特征 67
4.2.2 動態規劃算法求解過程 68
4.3 備忘錄方法 71
4.4 最長公共子序列 71
4.4.1 最長公共子序列問題 71
4.4.2 所有最長公共子序列 76
4.5 最大子段和 79
4.6 合唱隊形問題 83
4.7 0-1背包問題 85
習題 90
第5章 貪心算法 93
5.1 貪心算法引言 93
5.1.1 貪心算法實例 93
5.1.2 貪心算法的設計思想 95
5.2 活動安排問題 96
5.3 貪心算法的基本要素 99
5.4 兩種不同的背包問題 100
5.4.1 0-1背包問題 100
5.4.2 背包問題 101
5.5 最優裝載問題 103
5.6 哈夫曼編碼 104
5.7 單源最短路徑 112
5.8 最小生成樹 118
5.8.1 最小生成樹性質 119
5.8.2 Prim算法 119
5.8.3 Kruskal算法 122
5.9 多機調度問題 123
習題 126
第6章 回溯法 128
6.1 回溯法引言 128
6.2 回溯法的基本思想 129
6.2.1 問題的解空間 129
6.2.2 基本思想 132
6.2.3 構造解空間的過程 133
6.3 回溯法框架 137
6.3.1 遞歸回溯 137
6.3.2 迭代回溯 138
6.3.3 子集樹 138
6.3.4 排列樹 139
6.4 裝載問題 140
6.5 n皇后問題 146
6.6 0-1背包問題 151
6.7 高逐位整除數 157
6.8 圖的m著色問題 159
6.9 回溯法效率分析 163
習題 164
第7章 分支限界法 165
7.1 分支限界法的基本思想 165
7.1.1 分支限界法與回溯法的異同 165
7.1.2 分支限界法求解步驟 166
7.1.3 常見的兩種分支限界法 167
7.2 單源最短路徑問題 178
7.3 裝載問題 181
7.4 0-1背包問題 187
習題 192
參考文獻 194
- 零基礎玩轉國產大模型DeepSeek [徐永冰 張帥 編著]
- 網絡工程師5天修煉(適配第6版考綱) [主編 朱小平 施游]
- 信息系統項目管理師考試32小時通關(適用第4版考綱) [薛大龍]
- 信息系統管理工程師考試32小時通關(適配第2版考綱) [薛大龍 劉偉]
- 土木工程材料檢測實訓 [洪曉江 達則曉麗 錢波]
- 科技信息檢索與論文寫作實用教程 [李振華]
- 傳統山水畫論解讀與實踐 [陳鈉 著]
- Python數據庫編程 [主編 殷樹友 邢 翀]
- 計算機基礎實訓指導 [主編 袁春萍 朱妮]
- 嵌入式人工智能技術應用(數字教材) [主編 胡娜 楊國勇 晏廷榮]
- Vienna整流器技術 [桂存兵 著]
- 變頻器與伺服應用 [陳剛 葉云飛]
- 物聯網工程設計與實踐 [湯琳 李敏]
- 爐邊夜話——深入淺出話AI [汪建 著]
- 電商運營與管理 [鐘肖英 陳瀟]
- Java面向對象程序設計 [主編 姜春磊 陳虹潔]
- 信息技術基礎(Windows 10+WPS Office)(微課版) [主編 石利平 田輝平 謝盛嘉]
- 人工智能應用 [主編 陳 萍 劉培培 陳孟軍]
- 大學生職業發展與就業指導 [主編 劉志堅]
- 高級辦公應用項目教程 [主編 屈晶 趙成麗]
- 微信小程序開發項目實戰(微課版) [主編 黃龍泉 郭峰 朱倩]
- 企業檔案工作實戰寶典百問百答 [華俊 盧秀英 邵甜甜 著]
- 計算機網絡原理及應用 [主編 唐繼勇 葉坤 孫夢娜]
- 大學生創業基礎 [主編 王麗莉 王 楊]
- 船舶輔機 [主編 王連海 于洋 姜淑翠]
- 大學生就業指導 [主編 王麗莉 董宴廷]
- 系統架構設計師章節習題與考點特訓 [主編 薛大龍 鄒月平]
- 高校學生工作探索與實踐 [郭亮 著]
- 大學生情商管理 [方雄 著]
- 2023年長沙市會展業發展報告 [主編 周棟良]