新書推薦:
《
你漏财了:9种逆向思维算清人生这本账
》
售價:NT$
254.0
《
我们终将老去:认识生命的第二阶段(比利时的“理查德·道金斯”,一位行为生物学家的老年有用论
》
售價:NT$
418.0
《
谁是窃书之人 日本文坛新锐作家深绿野分著 无限流×悬疑×幻想小说
》
售價:NT$
254.0
《
一个经济杀手的自白 第3版
》
售價:NT$
505.0
《
8秒按压告别疼痛
》
售價:NT$
398.0
《
津巴多时间心理学:挣脱束缚、改写命运的6种时间观
》
售價:NT$
352.0
《
大英博物馆东南亚简史
》
售價:NT$
806.0
《
纯粹·我只要少许
》
售價:NT$
367.0
|
編輯推薦: |
本教材面向理工类非计算机专业,和传统程序设计课程相比,主要注重提高算法和问题求解能力,不注重具体的语言语法,使相关专业学生拥有更为坚实的程序设计技能和算法基础,为培养素质好、专业技术强、信息化水平高的高级工程技术人才做准备。本书是国家精品在线开放课程配套教材。
|
內容簡介: |
本书面向理工类非计算机专业。与传统程序设计教材相比,本书主要注重提高算法和问题求解能力,不注重具体的语言语法,使相关专业学生拥有更为坚实的程序设计技能和算法基础,为培养素质好、专业技术强、信息化水平高的高级工程技术人才做准备。本教材围绕应用环境中实际问题的求解过程来阐述和讲解程序设计思想方法和相关技术知识,向学生展示如何设计和选择合适的数据结构来表示实际问题中的处理对象,如何把一个实际问题转化成一个程序可计算的逻辑模型,以及如何考虑程序运行的效率来满足问题求解对时间的要求等。 本书可作为高等学校理工类非计算机专业算法设计类课程的教材,也可以作为程序设计及算法设计爱好者的自学用书。
|
目錄:
|
第1章绪论1
1.1算法的概念1
1.1.1从计算机的优势和劣势谈起1
1.1.2问题和算法2
1.1.3什么是算法4
1.2算法设计的要求5
1.3算法效率的度量6
1.3.1时间复杂度6
1.3.2空间复杂度7
1.4本课程的总体结构7
1.5相关语言和函数库简介8
1.5.1从C到C 8
1.5.2C 语言的功能改进9
1.5.3命名空间11
1.5.4C 的输入输出13
1.5.5函数重载和函数模板15
1.5.6面向对象初步18
1.5.7string类20
习题21
第2章若干数学问题的算法22
2.1数论相关问题22
2.2多项式四则运算25
2.2.1一元多项式乘法25
2.2.2一元多项式除法28
2.3多项式插值问题28
2.3.1拉格朗日插值法29
2.3.2牛顿插值法31
2.4非线性方程求解33
2.4.1二分法33
2.4.2牛顿迭代法35
2.5线性方程组求解36
2.5.1雅可比迭代法36
2.5.2高斯消去法39
2.6一元线性回归43
习题47
第3章线性结构的妙用48
3.1数据结构基本概念48
3.2线性表概念及应用50
3.2.1线性表基本概念50
3.2.2顺序表概念及实现51
3.2.3顺序表应用: 学生名册管理58
3.2.4链表的概念及实现60
3.2.5单链表应用: 通讯录管理69
3.3堆栈和队列的应用72
3.3.1堆栈的概念及实现72
3.3.2堆栈应用: 表达式求值76
3.3.3队列的概念及实现78
3.3.4队列应用: 整数排序83
3.3.5优先队列的概念及实现85
习题89
第4章哈夫曼编码和图的最短路径91
4.1树和二叉树91
4.1.1树91
4.1.2二叉树93
4.2二叉树的实现与分析94
4.3二叉树的遍历101
4.3.1二叉树的遍历方式101
4.3.2遍历算法的实现102
4.4二叉树的示例105
4.5哈夫曼树109
4.5.1哈夫曼树和哈夫曼编码109
4.5.2构造哈夫曼编码111
4.5.3哈夫曼编码实现111
4.6图和邻接表118
4.6.1图的存储118
4.6.2图的搜索119
4.7图的最短路径124
习题127
第5章马踏棋盘与道路规划129
5.1贪心算法129
5.2活动安排问题130
5.3马踏棋盘问题134
5.4道路规划和最小生成树问题141
5.4.1Prim算法141
5.4.2Kruskal算法146
习题151
第6章动态规划152
6.1动态规划基本概念152
6.1.1挖金矿问题152
6.1.2动态规划算法的基本思想155
6.1.3适用情况155
6.1.4求解基本步骤155
6.201背包问题158
6.2.1最优性原理159
6.2.2递推关系159
6.2.3构造最优解160
6.2.4算法实现160
6.3最长公共子序列问题162
6.3.1最长公共子序列的结构163
6.3.2子问题的递归结构163
6.3.3计算最优值164
6.3.4构造最长公共子序列164
6.3.5算法实现164
6.4最大流问题166
6.4.1流网络166
6.4.2FordFulkerson方法168
6.4.3FordFulkerson方法伪代码170
6.4.4最小费用最大流170
6.4.5动态规划与最大流问题171
习题172
第7章遗传算法175
7.1遗传算法的概念175
7.2遗传算法的设计176
7.3函数最值问题求解178
7.4函数最值问题求解程序实现180
7.5旅行商问题186
习题194
第8章人工神经网络与深度学习195
8.1机器学习195
8.2人工神经网络的概念196
8.3感知器199
8.4感知器算法200
8.5BP算法202
8.6BP算法中正向传播过程及代价函数的编程实现203
8.7BP算法示例208
8.8深度学习216
8.9MNIST 数据集上的手写识别问题222
8.10MNIST 数据集上的手写识别问题实验224
习题226
第9章群体智能算法227
9.1群体智能算法概述227
9.2群体智能算法的定义和特点228
9.3群体智能算法的计算模式229
9.4常见的群体智能算法230
9.5蚁群算法231
9.5.1蚁群算法的生物背景231
9.5.2蚁群算法的原理232
9.5.3蚁群算法的流程234
9.5.4蚁群算法的应用235
9.5.5蚁群算法的某实例编程实现236
9.6粒子群算法244
9.6.1算法概述244
9.6.2算法的模型244
9.6.3算法的基本流程245
9.6.4算法的应用246
9.6.5算法的实例分析247
9.7人工蜂群算法252
9.7.1人工蜂群算法的生物背景252
9.7.2人工蜂群算法的原理253
9.7.3人工蜂群算法的流程255
9.7.4人工蜂群算法的应用256
9.7.5人工蜂群算法的编程实现256
习题264
参考文献265
|
內容試閱:
|
智能算法通识教程信息时代,人和计算机的交互越来越多,编程思维或者说程序思维会成为一项通识教育。理解计算机解决问题的方式和利用计算机解决问题的方法,越来越成为每一个专业的人都必须学习的内容。传统程序设计语言的通识教育是每个人都是编程知识树的主干,每遇到新的问题都可以用已有的编程语言知识消化吸收,进而每一步编程经历的积累都是给自己的知识树添枝增叶。日积月累,程序可以不知不觉地写得更快、更简洁易懂、更少错、更安全,也会更容易学习理解新的编程语言和软件框架。
通识的程序设计教育已经初具雏形,但更进一步的算法通识教育却仍未被普罗大众和业界重视。由于早期算法教育具有较高的门槛,大部分人对智能算法还是比较陌生的。随着近些年信息化社会的不断发展,我们的工作、生活和学习与互联网的结合越来越紧密,而智能算法作为互联网的“普通话”,也正逐渐成为现代人的 技能之一。未来是一个智能化社会,而智能化社会的代表就是我们的身边会围绕越来越多的智能体(Agent),这些智能体将是我们工作、学习和生活的伙伴,而智能算法正是与这些智能体交互的重要手段,所以智能算法教育一定会得到更广泛的普及。
“智能算法通识”课程的主要目的是模拟学生在未来的专业科学研究中实际遇到问题时可能要面对的各种情况。所以,本教材在设计实验和考察方法时,不苛求学生必须从零开始编写一个完整的程序,在实际工作中这样既不实际又毫无必要;而是可以从一个局部程序段,一个第三方程序框架开始,逐步加入自己的代码,步步为营,最终解决自己的问题。
本教材教学内容作为基础课和专业课之间计算机能力培养的桥梁,要求学生必须具备一定的程序设计基础。本教材配套课程从培养学生的算法技能出发,让学生通过对若干适用于大多数专业的通用算法的编程实际练习,在实验中锻炼寻找算法库、使用算法库解决自己专业应用问题的能力。
本教材共9章,主要内容组织如下。
第1章,绪论部分,介绍课程的总体情况,了解算法的相关概念,对课程涉及的一些编程语言细节和函数库进行讲解。
第2章,熟悉数论相关算法,会用数值法求解基本数学问题,如多项式四则运算问题、多项式插值问题、非线性方程求解和线性方程组求解问题等。
第3章,掌握线性表的定义及其运算,掌握顺序表和链表的定义、组织形式、结构特征和类型说明以及在这两种表上实现的插入、删除和查找的算法。掌握栈和队列的定义、特征及在其上所定义的基本运算,以及在两种存储结构上对栈和队列所施加的基本运算的实现。
第4章,掌握树的定义、性质及存储方法。掌握二叉树的链表存储方式、结点结构和类型定义、二叉树的遍历算法以及哈夫曼树的构造方法。掌握图的基本概念及术语,图的两种存储结构(邻接矩阵和邻接表)的表示方法,图的遍历(深度优先搜索遍历和广度优先搜索遍历)算法,最小生成树的构造。
第5章,掌握贪心算法的基本概念,了解贪心算法的性质和优缺点,了解最优解/次优解与计算性能之间的关系,掌握图的最小生成树生成算法、Prim算法和Kruskal算法。
第6章,掌握动态规划的基本概念,了解动态规划算法的基本思想、适用情况以及求解基本步骤;了解最优性原理;掌握典型动态规划问题的解决: 01背包问题和最长公共子序列问题。
第7章,了解遗传算法的概念和设计方法;学会函数最值和旅行商问题的求解。
第8章,了解人工神经网络和深度学习的概念,了解感知器算法和BP算法。
第9章,了解群体智能算法的原理和开发流程。
本教材相关内容已在西安交通大学试用了5年,达到了最初的设计目的,试用效果良好。受篇幅、时间及作者水平等限制,书中不妥之处,恳望广大读者批评指正。
作者2023年4月
|
|