计算复杂性——第九章

本章主要证明某些问题的确是难解的

1.空间层次定理

1. 空间可构造
空间可构造函数 f f f:如果存在一个图灵机M,使对M输入任何字W时,其总停机,且停机时纸带上至多有f(n)个单元非空,同时在整个计算过程中没有用到f(n)之外的其他单元。 f f f至少是O(logn)级别的,可以是 l o g 2 ( n ) , n l o g 2 ( n ) , n 2 log_2(n),nlog_2(n),n^2 log2(n),nlog2(n),n2.

在这里插入图片描述
在这里插入图片描述
输入 n n n个1,在 O ( f ( n ) ) O(f(n)) O(f(n))空间内,计算出 f ( n ) f(n) f(n)的结果,以二进制表示在输出带子上。 n 2 n^2 n2的话可能需要三个 O ( n ) O(n) O(n)的空间做自乘运算。

2. 空间层次定理
对于任何空间可构造函数 f f f,存在一个语言(问题)A,可以在 O ( f ( n ) ) O(f(n)) O(f(n))空间复杂度内判定,却不能在 o ( f ( n ) ) o(f(n)) o(f(n))空间复杂度内判定。
在这里插入图片描述
通俗的讲,在空间可构造的前提下,空间越大,可以解决更多的问题。
另一种叙述方式:
在这里插入图片描述
3. 重要结论
在这里插入图片描述
由萨维奇定理, P S P A C E = N P S P A C E PSPACE = NPSPACE PSPACE=NPSPACE,因此我们只需要证明 N L ⊊ N P S P A C E NL\subsetneq NPSPACE NLNPSPACE即可。又对数空间是严格小于多项式空间的,由空间层次定理, N L ⊊ P S P A C E NL\subsetneq PSPACE NLPSPACE

2. 时间层次定理

1. 时间可构造
输入 n n n个1,在 O ( t ( n ) ) O(t(n)) O(t(n))空间内,计算出 t ( n ) t(n) t(n)的结果,以二进制表示在输出带子上。即对于输入 n n n,输出 t ( n ) t(n) t(n),至多执行 t ( n ) t(n) t(n)步。至少为 n l o g n nlogn nlogn的所有常见函数都是时间可构造的。

2. 时间层次定理
对于任何空间可构造函数 f f f,存在一个语言(问题)A,可以在 O ( t ( n ) ) O(t(n)) O(t(n))空间复杂度内判定,却不能在 o ( t ( n ) / l o g ( t ( n ) ) ) o(t(n)/log(t(n))) o(t(n)/log(t(n)))空间复杂度内判定。可能存在更紧的界,但是目前我们无法证明。

要严格的小于下界,才能够说明真包含关系。
在这里插入图片描述
相当于除以多项式,给出了一个更松的下界,因此结论成立。
在这里插入图片描述

3. E X P S P A C E EXPSPACE EXPSPACE完全

  1. 广义(可以带求幂操作)正则表达式等效问题( E Q R E X ↑ EQ_{REX\uparrow} EQREX
    由于是 E X P S P A C E EXPSPACE EXPSPACE完全的,在 E X P S P A C E EXPSPACE EXPSPACE中最难的问题,因此不能再多项式时间判定,也不能在多项式空间判定(空间层次定理),只能在指数空间内判定。

Note: 正则表达式等效问题( E Q R E X ∈ P S P A C E EQ_{REX} \in PSPACE EQREXPSPACE
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2. 判定一个语言是 E X P S P A C E EXPSPACE EXPSPACE完全的
在这里插入图片描述

4. 相对化

可以使用对角化方法证明 E Q R E X ↑ EQ_{REX\uparrow} EQREX是难解的

  1. 运用相对化方法说明对角化方法不能证明P和NP的关系
    核心思想是: 找到两个oracle A、B, P A P^A PA N P A NP^A NPA是不同的,但是 P B P^B PB N P B NP^B NPB是相等的。如果对于任意oracle, P A P^A PA N P A NP^A NPA都是相同的,则可以说明 P = N P P=NP P=NP;如果对于任意oracle, P B P^B PB N P B NP^B NPB都是相同的,则可以说明 P = N P P=NP P=NP。因此,通过模拟无法分开 P P P N P NP NP,必须通过分析的方法。

在相对化中,假设存在一个黑盒(oracle,神谕),可以一步解决可满足性问题。这样的假设是针对于特殊问题提出的,因此叫相对化(相对于某个特殊问题)。

语言A的oracle是一种能够报告任何字符串 w w w是否是A的成员的设备。具有查询 A A A语言功能的图灵机。
在这里插入图片描述
具有多项式时间查询 A A A语言功能的确定性图灵机和非确定性图灵机。
在这里插入图片描述

N P ⊆ P S A T NP\subseteq P^{SAT} NPPSAT,进一步 c o N P ⊆ P S A T coNP\subseteq P^{SAT} coNPPSAT
假设: P S A T P^{SAT} PSAT中包含除 P P P之外的语言,同理 N P S A T NP^{SAT} NPSAT中包含除 N P NP NP之外的语言

两个布尔公式是等价的:

  • 两个布尔公式拥有相同的变量集合
  • 相同赋值集上,结果结果相同
    在这里插入图片描述

M I N − F O R M U L A ‾ \overline{MIN-FORMULA} MINFORMULA似乎不属于 N P NP NP,尽管我们无法证明。但是, M I N − F O R M U L A ‾ ⊆ N P S A T \overline{MIN-FORMULA}\subseteq NP^{SAT} MINFORMULANPSAT
证明:
在这里插入图片描述
在这里插入图片描述
先利用非确定图灵机找出长度更小的公式,然后利用SAT oracle进行问题转化后,检查是否真的相等。

5. 电路复杂性

为什么要建立图灵机和布尔电路之间的联系

  • 布尔电路可能为解决P和NP问题,提供了简便的计算模型
  • 布尔电路可以提供SAT是NPC问题的另一种证明

想法:通过电路来测试语言的成员资格,但是电路的输入长度一般是固定的,而输入成员的长度一般都是不固定的,因此我们用电路族来检验。电路组中的某个电路,负责固定长度成员的检验。
在这里插入图片描述

电路的大小: 电路中包含的门的数量
电路的深度: 电路中从输入到输出最长路径中的边数
电路等效: 如果两个电路的输入变量相同,且对任意相同的输入赋值,得到的输出相同
一个电路的最小尺寸电路: 找不到大小更小的电路与它等效
一个电路的最小深度电路: 找不到深度更小的电路与它等效
最小尺寸电路族: 电路族中的每一个电路都是最小尺寸电路
最小深度电路族: 电路族中的每一个电路都是最小深度电路

电路尺寸复杂度: 用电路尺寸函数 f f f来刻画
在这里插入图片描述

最小化电路问题是难解的,甚至检测一个电路是不是最小电路也不属于 P P P N P NP NP

一个语言的电路(尺寸)复杂度:该语言对应的最小尺寸电路族的尺寸复杂度
一个语言的电路(深度)复杂度:该语言对应的最小深度电路族的尺寸复杂度

一个语言拥有较小的时间复杂度,同样则会有较小的电路复杂度。
在这里插入图片描述
上述定理提供了一种 P ≠ N P P\neq NP P=NP的解决:
在这里插入图片描述
布尔电路可满足的:某些输入的设置让电路的输出为1,即可以满足的。
在这里插入图片描述
是NPC问题,且3SAT问题也是NPC问题。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
21春东大《计算机帮助数控编程》在线平常作业3  21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第1页。 计算机辅助数控编程X21春学期《计算机辅助数控编程》在线平时作业3 1. 图标按钮的功能是创建 。 A.线 B.面 C.点 D.体 答:——C—— 2. CAD/CAM系统的计算分析功能中,要根据三维模型计算相应物体的几何特征和 。 A.参数 B.实体特征 C.体积 D.物理特征 答:——D—— 3. 数控加工程序的编制过程是一个复杂的 过程。 A.控制决策 B.编程检验 C.工艺决策 D.数据传输 答:——C—— 4. 图标按钮的功能是创建 。 A.比例 B.基准 C.剖面 D.约束 答:———— 5. 平面轮廓法的前提条件是要有一个 的平面轮廓。 A. 封闭 B.开放 C.三维 D.二维 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第2页。答:———— 6. 图标按钮的定位方式是 。 A.水平 B.垂直 C.平行 D.正交 答:———— 7. 计算机内的加工程序可经 传输给机床的数控系统。 A. 光线 B.通信接口 C.网线 D.人机接口 答:———— 8. 一个CAD/CAM系统是由计算机、外围设备及生产设备等硬件和控制这些硬件运行的系统软件、 、应用软件等组成。 A.支撑软件 B.建模软件 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第3页。C.分析软件 D.仿真软件 答:———— 9. 图标按钮的功能是创建 。 A.点 B.线 C.面 D.体 答:———— 10. 适于加工复杂的箱体类零件、泵体、阀体、壳体的设备有卧式镗铣床和 。 A. 立式镗床 B.卧式加工中心 C.卧式车床 D.立式铣床 答:———— 11. 图标按钮的功能创建是 。 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第4页。 A.孔 B.凸台 C.键槽 D.型腔 答:———— 12. 图标按钮的定位方式是 。 A.平行距离 B.角度 C.两线重合 D.点到线上 答:———— 13.. CAD/CAM系统由硬件系统和软件系统组成,其硬件系统由计算机及其外围设备组成。外围设备主要包括输入/输出设备和 设备等。 A.打印 B.数控 C.键盘 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第5页。D.成形 答:———— 17. 几何造型通过对点、线、面、体等 ,经过平移、旋转等几何变换和交、并、差等布尔运算,产生实体模型。 A. 特征 B.像素 C.几何元素 D.几何实体 答:———— 18. 变量化造型符合创造性思维规律,适合于产品 。 A. 创新设计 B.创新加工 C.质量检验 D.数控编程 答:———— 19. CAD/CAM系统中结构分析常用的方法是 ,这是一种数值近似解方法,用来对产品三维模型,尤其是结构形状比较复杂的零件进行静态和动态特性计算,以及进行零件的强度、刚度、震动、热变形、磁场、温度21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第6页。场强度和应力分布状态等的计算分析。 A.虚拟现实 B.仿生模拟 C.有限元法 D.力学分析 答:———— 20. 现代制造业的技术特点中制造技术涉及三个方面:超精密加工技术、 和新一代制造装备的发展。 A.智能加工技术 B.绿色制造技术 C.超高速切削 D.新能源 答:———— 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第1页。 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第2页。 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第3页。 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第4页。 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第5页。 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第6页。 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第7页。 21春东大《计算机帮助数控编程》在线平常作业3全文共7页,当前为第7页。 21春东大《计算机帮助数控编程》在线平常作业3 1 / 1
主机安全 网络安全——主机安全全文共36页,当前为第1页。 目 录 主机防火墙技术 主机入侵检测技术 操作系统安全机制 主机加固 网络安全——主机安全全文共36页,当前为第2页。 目 录 1. 主机防火墙技术 1.1 防火墙的定义 1.2 主机防火墙的用途 网络安全——主机安全全文共36页,当前为第3页。 主机安全 防火墙的定义 防火墙是一种特殊的网络控制设施,它处于被保护网络和其他网络的边界,接收进出被保护网络的数据流,并根据防火墙所配置的访问策略进行过滤或做出其他操作。 网络安全——主机安全全文共36页,当前为第4页。 主机安全 主机防火墙的用途 主机防火墙运行于被保护主机的操作系统内核,除了完成对网络数据包的过滤等处理,还对系统内应用程序的所有网络联接进行认证。 网络安全——主机安全全文共36页,当前为第5页。 目 录 2. 主机入侵检测技术 2.1 入侵检测概念 2.2 入侵检测系统 网络安全——主机安全全文共36页,当前为第6页。 主机安全 入侵检测概念 入侵检测是对计算机和网络资源上的恶意使用行为进行识别和响应。它通过从计算机网络或计算机系统中的若干关键点收集信息,并对其进行分析从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。 进行入侵检测的软件与硬件的合称为入侵检测系统(Intrusion Detection System,IDS)入侵检测系统需要更多的智能,它必须能将得到的数据进行分析,并得出有用的结果。 网络安全——主机安全全文共36页,当前为第7页。 主机安全 入侵检测系统 入侵检测系统(IDS)主工分为4个阶段: 数据收集: 数据收集是入侵检测的基础,通过不同途径收集的数据,需要采用不同的方法进行分析。目前的数据主要有主机日志、网络数据包、应用程序数据、防火墙日志等。 数据处理:数据收集过程中得到的原始数据量一般非常大,而且还存在噪声。为了进行全面、进一步的分析,需要从去除冗余、噪声,并且进行格式化及标准化处理。 数据分析:采用统计、智能算法等方法分析以过初步处理的数据,检查数据是否正常,或显示存在入侵。 响应处理:当发现入侵时,采取措施进行防护、保留入侵证据并通知管理员。常用的措施包括切断网络连接、记录日志、通过电子邮件或电话通知管理员等。 网络安全——主机安全全文共36页,当前为第8页。 主机安全 入侵检测系统 入侵检测系统的作用 通过检测和记录网络中的安全违规行为,惩罚网络犯罪,防 止网络入侵事件的发生。 检测其他安全措施未能阻止的攻击或安全违规行为。 检测黑客在攻击前的探测行为,预先给管理员发出警报。 报告计算机系统或网络中存在的安全威胁。 提供有关攻击的信息,帮助管理员诊断网络中存在的安全弱 点,利于其进行修补。 在大型、复杂的计算机网络中布置入侵检测系统,可以显著提高网络安全管理的质量。 网络安全——主机安全全文共36页,当前为第9页。 主机安全 入侵检测系统 入侵检测系统的基本工作模式: 从系统的不同环节收集信息。 分析该信息,试图寻找入侵活动的特征。 自动对检测到的行为做出响应。 记录并报告检测过程的结果。 网络安全——主机安全全文共36页,当前为第10页。 主机安全 入侵检测系统 入侵检测系统的分类: 入侵检测系统可以按不同的方法进行分类,它们包括体系结构、同步性、数据来源、检测技术、响应方式、时效性等分类方法。 其中,按检测技术、数据来源、体系结构及时效性进行分类是应用最多的分类方法。 网络安全——主机安全全文共36页,当前为第11页。 目 录 3. 操作系统安全机制 3.1 操作系统的安全性表现 3.2 操作系统安全的主要目标 3.3 操作系统的安全机制 网络安全——主机安全全文共36页,当前为第12页。 主机安全 操作系统的安全性表现 物理上分离:要求进程使用不同的物理实体 时间上分离:具有不同安全要求进程在不同时间运行 逻辑上分离:要求进程不能访问其允许范围外的实体 密码上分离:要求进程隐蔽数据及计算 网络安全——主机安全全文共36页,当前为第13页。 主机安全 操作系统安全的主要目标 依据系统安全策略对用户的操作进行访问控制,防止用户对计算机资源的非法访问(窃取、篡改和破坏) 标识系统中的用户和进行身份鉴别 监督系统运行时的安全性 保证系统自身的安全性和完整性 网络安全——主机安全全文共36页,当前为第14页。 主机安全 操作系统的安全机制 安全机制的主要功能则是实现安全策略描述的安全问题,它关注的是如何实现系统的安全性,主要包括: 加密机制(Encryption) 认证机制(Authentication) 授权机制(Authorization) 审计机制(Audit) 网络安全——主机安全全文共36页,当前为第15页。 主机安全 操作系统的安全机制--数据加密的
内容简介   本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。全书着重讨论三个主题:游戏开发的一般过程;实时渲染过程;角色动画。所有主题均围绕一个具体的游戏开发系统Fly3D SDK2.0加以介绍。   本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏的开发过程并初步具备游戏引擎开发能力。   本书适合作为高等院校相关专业的教学参考书,同时可供相关技术人员和游戏开发人员阅读。 编辑推荐   本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。全书着重讨论三个主题:游戏开发的一般过程;实时渲染过程;角色动画。所有主题均围绕一个具体的游戏开发系统Fly3D SDK2.0加以介绍。   本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏的开发过程并初步具备游戏引擎开发能力。   本书适合作为高等院校相关专业的教学参考书,同时可供相关技术人员和游戏开发人员阅读。 作者简介   Alan Watt 英国谢菲尔德大学计算机科学系讲师,是该校计算机图表学研究室主任,曾经编写过多本优秀著作,包括《3D计算机图形学》和《The Computer Lmage》。 Fabio Policarpo 工作在里约热内卢的软件开发者,他是Paralelo计算机公司的创始人,目前正致力于三维动作多玩家游戏的研究。 目录 出版者的话 专家指导委员会 译者序 前言 第一部分 高级游戏系统剖析 第1章 高级游戏系统剖析I:构造过程和静态光照 1.1 数据结构 1.1.1 顶点 1.1.2 面 1.1.3 包围盒 1.2 构造过程 1.2.1 从场景几何中创建BSP树 1.2.2 路径规划的凸体和PVS计算 1.2.3 处理复杂的地形 1.2.4 BSP叶节点中的面 1.2.5 寻找叶凸体 1.2.6 凸体和伪人口 1.2.7 潜在可视集 1.3 光照贴图的构造 1.3.1 生成光照贴图的坐标 1.3.2 光照贴图的打包 1.3.3 对光照贴图的解释 1.4 BSP管理 1.5 高级静态光照——辐射度 附录1.1 构造实践 附录1.2 辐射度理论基础 第2章 高级游戏系统剖析Ⅱ:实时处理 2.1 视见和BSP 2.1.1 生成视见约束体的面 2.1.2 远近裁剪面和视见约束体 2.2 照相机控制 2.3 使用BSP的基本碰撞检测和反弹 2.3.1 碰撞和BSP遍历 2.3.2 粒子,场景检测和反弹 2.4 特殊的碰撞检测和反弹 2.4.1 AABB的定义 2.4.2 AABB类的定义和静态成员的定义 2.4.3 碰撞检测和碰撞反弹 2.4.4 使用AABB的伪碰撞反弹 2.4.5 使用AABB的碰撞检测 2.4.6 AABB顶点与场景面相交 2.4.7 场景顶点与AABB面相交 2。4.8 AABB边与场景边相交 2.4.9 更精确的碰撞检测 2.4.10 使用碰撞阈值 2.5 基本的路径规划 附录2.1 实时处理的演示 第3章 高级游戏系统剖析Ⅲ:软件设计与应用编程 3.1 应用的种类 3.1.1 插件 3.1.2 前端 3.1.3 工具 3.2 Fly3D引擎体系结构 3.2.1 FlyMath 3.2.2 FlyDirectX 3.2.3 FlyRender 3.2.4 FlyEngine 附录3.1 编写一个插件 第二部分 实时渲染 第4章 实时渲染 4.1 简介 4.2 顶点、像素和贴图 4.2.1 基本的逐像素着色 4.2.2 着色和坐标空间 4.2.3 25年来主流的插值着色方法和颜色贴图 4.2.4 标量表示 4.3 因式分解法 4.3.1 使用因式分解着色模型的逐像素着色——各向同性模型 4.3.2 使用因式分解着色模型的逐像素着色——各向异性模型 4.4 BRDF和真实材质 4.5 使用BRDF进行逐像素着色 4.6 环境贴图参数化 4.6.1 环境贴图参数化:立方映射 4.6.2 环境贴图参数化:球面映射 4.6.3 环境贴图参数化:对偶抛物面贴图 4.6.4 环境贴图——可比点 4.6.5 立方贴图和向量规范化 4.7 实现BRDF:可分离的近似 4.8 着色语言和着色器 4.8.1 着色语言:简单的历史回顾 4.8.2 RenderMan着色语言 4.8.3 实时渲染的着色语言 第5章 实时渲染:实践 5.1 基本着色器 5.1.1 渲染状态 5.1.2 着色器排序 5.1.3 着色器类的实现 5.2 渲染状态 5.2.1 全局设定 5.2.2 局部设定 5.3 着色器实例 5.3.1 环境映射和铬映射效果——玻璃、金属和铬 5.3.2 移动发光告示牌 5.3.3 简单栅栏效果 5.3.4 高级栅栏效果 5.3.5 监视器效果 5.4 实时硬件渲染 5.4.1 顶点编程 5.4.2 像素编程 5.4.3 使用寄存结合器的像素编程 5.4.4 纹理地址编程 5.4.5 纹理地址编程——Phong映射 5.4.6 顶点和像素编程以及多步着色器 5.5 动态纹理 5.6 特效 5.6.1 燃烧尾迹 5.6.2 加速器 5.6.3 脉冲星 附录5.1 使用和探索着色器 附录5.2 NVIDIA GeForce 3上的顶点编程 附录5.3 NVIDIA寄存结合器操作 第6章 几何处理 6.1 简介 6.2 推动因素和定义 6.2.1 离线和实时阶段 6.2.2 拓扑因素 6.2.3 离散简化与连续简化 6.2.4 物体内部分辨率变化 6.2.5 对称性/可逆性 6.2.6 局部简化操作 6.3 排序(误差)标准 6.3.1 排序标准——外观相似 6.3.2 排序标准——局部体积不变 6.3.3 排序标准——二次误差度量 6.3.4 排序标准——简化外壳 6.4 简化与属性 6.4.1 简化与游戏纹理 6.4.2 简化和蒙皮模型 6.4.3 算法框架 6.4.4 顶点去除算法的重新三角形划分 6.5 实例分析 6.5.1 实例分析1——渐近式网格技术 6.5.2 实例分析2——使用微分几何 6.5.3 实例分析3——网格重新划分算法MAPS 附录6.1 数学背景 附录6.2 演示 第三部分 动画制作 第7章 角色动画 7.1 简介 7.2 顶点动画与合成 7.3 骨架动画 7.4 低层次动画管理 7.4.1 行进的路径规划 7.4.2 骨架动画和面向对象的动画控制 7.4.3 对障碍物的躲避 7.4.4 路径规划总结 附录7.1 用四元数描绘旋转 附录7.2 四元数的实现 附录7.3 角色动画中效率的考虑 第8章 动画成形方法 8.1 简介 8.2 样条框架 8.3 自由形状变形 8.4 扩展自由形状变形(EFFD) 8.5 曲线变形——铰线 8.6 皮肤控制 8.6.1 面向表面的自由形状变形(SOFFD) 8.6.2 骨架皮肤精致化 8.6.3 组合皮肤和形状混合 附录8.1 使用径向基函数进行离散数据插值 第9章 高级角色动画之要素 9.1 引言——一种拟人的游戏界面 9.2 将语言表述转变为动画——示例 9.2.1 IMPROV(纽约大学媒体研究实验室) 9.2.2 PAR体系结构(宾夕法尼亚大学人体建模和仿真中心) 9.2.3 具体化的对话界面代理(MIT媒体实验室) 9.2.4 游戏结论 9.3 面部动画、视觉语音和跟踪 9.4 用于控制、渲染和跟踪面部网格的模型 9.4.1 基于图像的建模、渲染和跟踪 9.4.2 跟踪方法 9.4.3 参数化 9.4.4 伪肌肉模型 9.4.5 面片技术 9.5 视觉语音 9.6 面部动画和MPEG-4 9.7 渲染问题 9.8 总结和问题 9.8.1 参数化与照片真实性 9.8.2 网格表示 9.8.3 皮肤的渲染 9.8.4 没有声音很多面部动画更好看 9.8.5 情感和语音 附录9.1 一个伪肌肉模型的实现 第10章 基于运动捕捉的角色动画 10.1 简介 10.2 运动数据 10.3 骨架和MoCap BVH格式 10.4 运动数据的基本处理 10.4.1 加速和减速运动 10.4.2 混合和时间扭曲 10.4.3 对齐运动序列 10.4.4 运动扭曲 10.5 MoCap中的插值 10.5.1 B样条表示法 10.5.2 运动混合——动词和副词 10.6 经典信号处理和MoCap 10.6.1 傅里叶理论 10.6.2 傅里叶理论和非周期数据 10.6.3 傅里叶理论和采样数据 10.6.4 采样和走样现象 10.6.5 反走样滤波器 10.6.6 时间域中的过滤——卷积 10.7 信号处理和MoCap数据 10.7.1 傅里叶域中的插值/外推法 10.7.2 使用拉氏算子的多分辨率滤波 10.8 运动编辑:基于约束的方案 10.8.1 运动中的动力学约束 10.8.2 运动中的运动学约束 10.8.3 每帧重定位法 10.8.4 时空法 附录10.1 示范 第11章 反向运动学原理 11.1 例子——二链臂 11.2 雅可比矩阵 11.3 IK方法 11.3.1 使用雅可比阵的微分方法 11.3.2 最优法 11.3.3 循环坐下降法(CCD) 11.4 反向运动学的实践方案 11.4.1 混合方法——分析法+约束最优化法 11.4.2 混合方法——三阶段:分析法+约束最优化+分析法 11.4.3 防止自碰撞 11.4.4 IK与运动目标 参考文献
内容简介   本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。全书着重讨论三个主题:游戏开发的一般过程;实时渲染过程;角色动画。所有主题均围绕一个具体的游戏开发系统Fly3D SDK2.0加以介绍。   本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏的开发过程并初步具备游戏引擎开发能力。   本书适合作为高等院校相关专业的教学参考书,同时可供相关技术人员和游戏开发人员阅读。 编辑推荐   本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。全书着重讨论三个主题:游戏开发的一般过程;实时渲染过程;角色动画。所有主题均围绕一个具体的游戏开发系统Fly3D SDK2.0加以介绍。   本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,使读者尽快地进入开发者角色,了解整个游戏的开发过程并初步具备游戏引擎开发能力。   本书适合作为高等院校相关专业的教学参考书,同时可供相关技术人员和游戏开发人员阅读。 作者简介   Alan Watt 英国谢菲尔德大学计算机科学系讲师,是该校计算机图表学研究室主任,曾经编写过多本优秀著作,包括《3D计算机图形学》和《The Computer Lmage》。 Fabio Policarpo 工作在里约热内卢的软件开发者,他是Paralelo计算机公司的创始人,目前正致力于三维动作多玩家游戏的研究。 目录 出版者的话 专家指导委员会 译者序 前言 第一部分 高级游戏系统剖析 第1章 高级游戏系统剖析I:构造过程和静态光照 1.1 数据结构 1.1.1 顶点 1.1.2 面 1.1.3 包围盒 1.2 构造过程 1.2.1 从场景几何中创建BSP树 1.2.2 路径规划的凸体和PVS计算 1.2.3 处理复杂的地形 1.2.4 BSP叶节点中的面 1.2.5 寻找叶凸体 1.2.6 凸体和伪人口 1.2.7 潜在可视集 1.3 光照贴图的构造 1.3.1 生成光照贴图的坐标 1.3.2 光照贴图的打包 1.3.3 对光照贴图的解释 1.4 BSP管理 1.5 高级静态光照——辐射度 附录1.1 构造实践 附录1.2 辐射度理论基础 第2章 高级游戏系统剖析Ⅱ:实时处理 2.1 视见和BSP 2.1.1 生成视见约束体的面 2.1.2 远近裁剪面和视见约束体 2.2 照相机控制 2.3 使用BSP的基本碰撞检测和反弹 2.3.1 碰撞和BSP遍历 2.3.2 粒子,场景检测和反弹 2.4 特殊的碰撞检测和反弹 2.4.1 AABB的定义 2.4.2 AABB类的定义和静态成员的定义 2.4.3 碰撞检测和碰撞反弹 2.4.4 使用AABB的伪碰撞反弹 2.4.5 使用AABB的碰撞检测 2.4.6 AABB顶点与场景面相交 2.4.7 场景顶点与AABB面相交 2。4.8 AABB边与场景边相交 2.4.9 更精确的碰撞检测 2.4.10 使用碰撞阈值 2.5 基本的路径规划 附录2.1 实时处理的演示 第3章 高级游戏系统剖析Ⅲ:软件设计与应用编程 3.1 应用的种类 3.1.1 插件 3.1.2 前端 3.1.3 工具 3.2 Fly3D引擎体系结构 3.2.1 FlyMath 3.2.2 FlyDirectX 3.2.3 FlyRender 3.2.4 FlyEngine 附录3.1 编写一个插件 第二部分 实时渲染 第4章 实时渲染 4.1 简介 4.2 顶点、像素和贴图 4.2.1 基本的逐像素着色 4.2.2 着色和坐标空间 4.2.3 25年来主流的插值着色方法和颜色贴图 4.2.4 标量表示 4.3 因式分解法 4.3.1 使用因式分解着色模型的逐像素着色——各向同性模型 4.3.2 使用因式分解着色模型的逐像素着色——各向异性模型 4.4 BRDF和真实材质 4.5 使用BRDF进行逐像素着色 4.6 环境贴图参数化 4.6.1 环境贴图参数化:立方映射 4.6.2 环境贴图参数化:球面映射 4.6.3 环境贴图参数化:对偶抛物面贴图 4.6.4 环境贴图——可比点 4.6.5 立方贴图和向量规范化 4.7 实现BRDF:可分离的近似 4.8 着色语言和着色器 4.8.1 着色语言:简单的历史回顾 4.8.2 RenderMan着色语言 4.8.3 实时渲染的着色语言 第5章 实时渲染:实践 5.1 基本着色器 5.1.1 渲染状态 5.1.2 着色器排序 5.1.3 着色器类的实现 5.2 渲染状态 5.2.1 全局设定 5.2.2 局部设定 5.3 着色器实例 5.3.1 环境映射和铬映射效果——玻璃、金属和铬 5.3.2 移动发光告示牌
第一章 计算机系统概述 复习题: 1.1、 列出并简要地定义计算机的四个主要组成部分。 答:主存储器,存储数据和程序;算术逻辑单元,能处理二进制数据;控制单元,解读存储器中的指令并且使他们得到执行;输入/输出设备,由控制单元管理。 1.2、 定义处理器寄存器的两种主要类别。 答:用户可见寄存器:优先使用这些寄存器,可以使机器语言或者汇编语言的程序员减少对主存储器的访问次数。对高级语言而言,由优化编译器负责决定把哪些变量应该分配给主存储器。一些高级语言,如C语言,允许程序言建议编译器把哪些变量保存在寄存器中。 控制和状态寄存器:用以控制处理器的操作,且主要被具有特权的操作系统例程使用,以控制程序的执行。 1.3、 一般而言,一条机器指令能指定的四种不同操作是什么? 答:这些动作分为四类:处理器-寄存器:数据可以从处理器传送到存储器,或者从存储器传送到处理器。处理器-I/O:通过处理器和I/O模块间的数据传送,数据可以输出到外部设备,或者从外部设备输入数据。数据处理,处理器可以执行很多关于数据的算术操作或逻辑操作。控制:某些指令可以改变执行顺序。 1.4、 什么是中断? 答:中断:其他模块(I/O,存储器)中断处理器正常处理过程的机制。 1.5、 多中断的处理方式是什么? 答:处理多中断有两种方法。第一种方法是当正在处理一个中断时,禁止再发生中断。第二种方法是定义中断优先级,允许高优先级的中断打断低优先级的中断处理器的运行。 1.6、 内存层次的各个元素间的特征是什么? 答:存储器的三个重要特性是:价格,容量和访问时间。 1.7、 什么是高速缓冲存储器? 答:高速缓冲存储器是比主存小而快的存储器,用以协调主存跟处理器,作为最近储存地址的缓冲区。 1.8、 列出并简要地定义I/O操作的三种技术。 答:可编程I/O:当处理器正在执行程序并遇到与I/O相关的指令时,它给相应的I/O模块发布命令(用以执行这个指令);在进一步的动作之前,处理器处于繁忙的等待中,直到该操作已经完成。中断驱动I/O:当处理器正在执行程序并遇到与I/O相关的指令时,它给相应的I/O模块发布命令,并继续执行后续指令,直到后者完成,它将被I/O模块中断。如果它对于进程等待I/O的完成来说是不必要的,可能是由于后续指令处于相同的进程中。否则,此进程在中断之前将被挂起,其他工作将被执行。直接存储访问:DMA模块控制主存与I/O模块间的数据交换。处理器向DMA模块发送一个传送数据块的请求,(处理器)只有当整个数据块传送完毕后才会被中断。 1.9、 空间局部性和临时局部性间的区别是什么? 答:空间局部性是指最近被访问的元素的周围的元素在不久的将来可能会被访问。临时局部性(即时间局部性)是指最近被访问的元素在不久的将来可能会被再次访问。 1.10、 开发空间局部性和时间局部性的策略是什么? 答:空间局部性的开发是利用更大的缓冲块并且在存储器控制逻辑中加入预处理机制。时间局部性的开发是利用在高速缓冲存储器中保留最近使用的指令及数据,并且定义缓冲存储的优先级。 习题: 1.1、图1.3中的理想机器还有两条I/O指令: 0011 = 从I/O中载入AC 0111 = 把AC保存到I/O中 在这种情况下,12位地址标识一个特殊的外部设备。请给出以下程序的执行过程(按照图1.4的格式): 1. 从设备5中载入AC。 2. 加上存储器单元940的内容。 3. 把AC保存到设备6中。 假设从设备5中取到的下一个值为3940单元中的值为2。 答案:存储器(16进制内容):300:3005;301:5940;302:7006 步骤1:3005->IR;步骤2:3->AC 步骤3:5940->IR;步骤4:3+2=5->AC 步骤5:7006->IR:步骤6:AC->设备 6 1.2、本章中用6步来描述图1.4中的程序执行情况,请使用MAR和MBR扩充这个描述。 答案:1. a. PC中包含第一条指令的地址300,该指令的内容被送入MAR中。 b. 地址为300的指令的内容(值为十六进制数1940)被送入MBR,并且PC增1。这两个步骤是并行完成的。 c. MBR中的值被送入指令寄存器IR中。 2. a. 指令寄存器IR中的地址部分(940)被送入MAR中。 b. 地址940中的值被送入MBR中。 c. MBR中的值被送入AC中。 3. a. PC中的值(301)被送入MAR中。 b. 地址为301的指令的内容(值为十六进制数5941)被送入MBR,并且PC增1。 c. MBR中的值被送入指令寄存器IR中。 4. a. 指令寄存器IR中的地址部分(941)被送入MAR中。 b. 地址941中的值被送入MBR中。 c. AC中以前的内容和地址为941的存储单元中的内容相加,结果保存到AC中。 5. a. PC中的值(302)被送入MAR中。 b. 地址为302的指令的内容(值为十六进制数2941)被送入MBR,并且PC增1。 c. MBR中的值被送入指令寄存器IR中。 6. a. 指令寄存器IR中的地址部分(941)被送入MAR中。 b. AC中的值被送入MBR中。 c. MBR中的值被存储到地址为941的存储单元之中。 1.4、假设有一个微处理器产生一个16位的地址(例如,假设程序计数器和地址寄存器都是16位)并且具有一个16位的数据总线。 a.如果连接到一个16位存储器上,处理器能够直接访问的最大存储器地址空间为多少? b.如果连接到一个8位存储器上,处理器能够直接访问的最大存储器地址空间为多少? c.处理访问一个独立的I/O空间需要哪些结构特征? d.如果输入指令和输出指令可以表示8位I/O端口号,这个微处理器可以支持多少8位I/O端口? 答案:对于(a)和(b)两种情况,微处理器可以直接访问的最大存储器地址空间为216 = 64K bytes;唯一的区别是8位存储器每次访问传输1个字节,而16位存储器每次访问可以传输一个字节或者一个16位的字。对于(c)情况,特殊的输入和输出指令是必要的,这些指令的执行体会产生特殊的“I/O信号”(有别于“存储器信号”,这些信号由存储器类型指令的执行体产生);在最小状态下,一个附加的输出针脚将用来传输新的信号。对于(d)情况,它支持28 = 256个输入和28 = 256个输出字节端口和相同数目的16位I/O端口;在任一情况, 一个输入和一个输出端口之间的区别是通过被执行的输入输出指令所产生的不同信号来定义的。 1.5、考虑一个32位微处理器,它有一个16位外部数据总线,并由一个8MHz的输入时钟驱动。假设这个微处理器有一个总线周期,其最大持续时间等于4个输入时钟周期。请问该微处理器可以支持的最大数据传送速度为多少?外部数据总线增加到21位,或者外部时钟频率加倍,哪种措施可以更好地提高处理器性能?请叙述你的设想并解释原因。 答案:时钟周期=1/(8MHZ)=125ns 总线周期=4×125ns=500ns 每500ns传输2比特;因此传输速度=4MB/s 加倍频率可能意味着采用了新的芯片制造技术(假设每个指令都有相同的时钟周期数);加倍外部数据总线,在芯片数据总线驱动/锁存、总线控制逻辑的修改等方面手段广泛(或许更新)。在第一种方案中,内存芯片的速度要提高一倍(大约),而不能降低微处理器的速度;第二种方案中,内存的字长必须加倍,以便能发送/接受32位数量。 1.6、考虑一个计算机系统,它包含一个I/O模块,用以控制一台简单的键盘/打印机电传打字设备。CPU中包含下列寄存器,这些寄存器直接连接到系统总线上: INPR:输入寄存器,8位 OUTR:输出寄存器,8位 FGI:输入标记,1位 FGO:输出标记,1位 IEN:中断允许,1位 I/O模块控制从打字机中输入击键,并输出到打印机中去。打字机可以把一个字母数字符号编码成一个8位字,也可以把一个8位字解码成一个字母数字符号。当8位字从打字机进入输入寄存器时,输入标记被置位;当打印一个字时,输出标记被置位。 a. 描述CPU如何使用这4个寄存器实现与打字机间的输入/输出。 b. 描述通过使用IEN,如何提高执行效率? 答案:a.来源于打字机的输入储存在INPR中。只有当FGI=0时,INPR才会接收来自打字机的数据。当数据接收后,被储存在INPR里面,同时FGI置为1。CPU定期检查FGI。如果FGI=1,CPU将把INPR里面的内容传送至AC,并把FGI置为0。 当CPU需要传送数据到打字机时,它会检查FGO。如果FGO=0,CPU处于等待。如果FGO=1,CPU将把AC的内容传送至OUTER并把FGO置为0。当数字符号打印后,打字机将把FGI置为1。 b.(A)描述的过程非常浪费。速度远高于打字机的CPU必须反复不断的检查FGI和FGO。如果中断被使用,当打字机准备接收或者发送数据时,可以向CPU发出一个中断请求。IEN计数器可以由CPU设置(在程序员的控制下)。 1.7、实际上在所有包括DMA模块的系统中,DMA访问主存储器的优先级总是高于处理器访问主存储器的优先级。这是为什么? 答案:如果一个处理器在尝试着读或者写存储器时被挂起, 通常除了一点轻微的时间损耗之外没有任何危害。但是,DMA可能从或者向设备(例如磁盘或磁带)以数据流的方式接收或者传输数据并且这是不能被打断的。否则,如果DMA设备被挂起(拒绝继续访问主存),数据可能会丢失。 1.9、一台计算机包括一个CPU和一台I/O设备D,通过一条共享总线连接到主存储器M,数据总线的宽度为1个字。CPU每秒最多可执行106条指令,平均每条指令需要5个机器周期,其中3个周期需要使用存储器总线。存储器读/写操作使用1个机器周期。假设CPU正在连续不断地执行后台程序,并且需要保证95%的指令执行速度,但没有任何I/O指令。假设1个处理器周期等于1个总线周期,现在要在M和D之间传送大块数据。 a.若使用程序控制I/O,I/O每传送1个字需要CPU执行两条指令。请估计通过D的I/O数据传送的最大可能速度。 b.如果使用DMA传送,请估计传送速度。 答案:a.处理器只能分配5%的时间给I/O.所以最大的I/O指令传送速度是10e6×0.05=50000条指令/秒。因此I/O的传送速率是25000字/秒。 b.使用DMA控制时,可用的机器周期下的数量是 10e6(0.05×5+0.95×2)=2.15×10e6 如果我们假设DMA模块可以使用所有这些周期,并且忽略任何设置和状态检查时间,那么这个值就是最大的I/O传输速率。 1.10、考虑以下代码: for ( i = 0;i < 20;i++) for (j = 0;j < 10;j++) a[i] = a[i]*j a. 请举例说明代码中的空间局部性。 b. 请举例说明代码中的时间局部性。 答案:a.读取第二条指令是紧跟着读取第一条指令的。 b.在很短的间歇时间内, a[i]在循环内部被访问了十次。 1.11、请将附录1A中的式(1.1)和式(1.2)推广到n级存储器层次中。 答案:定义: Ci = 存储器层次i上每一位的存储单元平均花销 Si = 存储器层次i的规模大小 Ti = 存储器层次i上访问一个字所需时间 Hi = 一个字在不高于层次i的存储器上的概率 Bi = 把一个数据块从层次i+1的存储器上传输到层次i的存储器上所需时间 高速缓冲存储器作为是存储器层次1;主存为存储器层次2;针对所有的N层存储器层以此类推。有: Ts的引用更复杂,我们从概率论入手:所期望的值 ,由此我们可以写出: 我们需要清楚如果一个字在M1(缓存)中,那么对它的读取非常快。如果这个字在M2而不在M1中,那么数据块需要从M2传输到M1中,然后才能读取。因此,T2 = B1+T1 进一步,T3 = B2+T2 = B1+B2+T1 以此类推: 所以, 但是, 最后, 1.12、考虑一个存储器系统,它具有以下参数: Tc = 100 ns Cc = 0.01 分/位 Tm = 1200 ns Cm = 0.001 分/位 a.1MB的主存储器价格为多少? b.使用高速缓冲存储器技术,1MB的主存储器价格为多少? c.如果有效存取时间比高速缓冲存储器存取时间多10% ,命中率H为多少? 答案:a.价格 = Cm×8×106 = 8×103 ¢ = $80 b.价格 = Cc×8×106 = 8×104 ¢ = $800 c.由等式1.1知:1.1×T1 = T1+(1-H)T2 (0.1)(100) = (1-H)(1200) H=1190/1200 1.13、一台计算机包括包括高速缓冲存储器、主存储器和一个用做虚拟存储器的磁盘。如果要存取的字在高速缓冲存储器中,存取它需要20ns;如果该字在主存储器中而不在高速缓冲存储器中,把它载入高速缓冲存储器需要60ns(包括最初检查高速缓冲存储器的时间),然后再重新开始存取;如果该字不在主存储器中,从磁盘中取到内存需要12ms,接着复制到高速缓冲存储器中还需要60ns,再重新开始存取。高速缓冲存储器的命中率为0.9,主存储器的命中率为0.6,则该系统中存取一个字的平均存取时间是多少(单位为ns)? 答案:有三种情况需要考虑: 字所在的位置 概率 访问所需时间(ns) 在缓存中 0.9 20 不在缓存,在主存中 (0.1)(0.6)= 0.06 60+20 = 80 不在缓存也不在主存中 (0.1)(0.4)= 0.04 12ms+60+20 = 12,000,080 所以平均访问时间是: Avg = (0.9)(20) + (0.06)(80) + (0.04)(12000080) = 480026 ns 1.14、假设处理器使用一个栈来管理过程调用和返回。请问可以取消程序计数器而用栈指针代替吗? 答案:如果栈只用于保存返回地址。或者如果栈也用于传递参数,这种方案只有当栈作为传递参数的控制单元而非机器指令时才成立。这两种情况下可以取消程序计数器而用栈指针代替。在后者情况中,处理器同时需要一个参数和指向栈顶部的程序计数器。
⼈⼯智能:模型与算法——练习题 第⼀周 第⼀周 ⼈⼯智能概述 ⼈⼯智能概述 1如果⼀个问题或者任务不可计算,那么对这个问题或任务的描述哪⼀句是正确的( ) A.该问题或任务所需计算时间是⾮线性增加的 B.⽆法将该问题或任务所需数据⼀次性装⼊内存进⾏计算 C.图灵机不可停机 D.该问题或任务所需计算时间是线性增加的 2下⾯哪⼀句话准确描述了摩尔定律( ) A.摩尔定律描述了计算机的计算速度每⼀年半增长⼀倍的规律 B.摩尔定律描述了互联⽹所链接节点随时间不断增长的规律 C.摩尔定律描述了计算机的体积⼤⼩随时间不断减少的规律 D.摩尔定律描述了计算机内存⼤⼩随时间不断增长的规律 3下⾯哪个⽅法于20世纪被提出来,⽤来描述对计算机智能⽔平进⾏测试( ) A.费马定理 B.摩尔定律 C.图灵测试 D.⾹农定律 41955年,麦卡锡、明斯基、⾹农和诺切斯特四位学者⾸次提出"artificial intelligence(⼈⼯智能)"这个概念时,希望⼈⼯智能 研究的主题是( ) A.避免计算机控制⼈类 B.全⼒研究⼈类⼤脑 C.⽤计算机来模拟⼈类智能 D.⼈⼯智能伦理 5下⾯哪⼀句话是正确的 ( ) 得分/总分 A.⼈⼯智能就是深度学习 B.⼈⼯智能就是机器学习 C.机器学习就是深度学习 D.深度学习是⼀种机器学习的⽅法 6以逻辑规则为核⼼的逻辑推理、以数据驱动为核⼼的机器学习和以问题引导为核⼼的强化学习是三种⼈⼯智能的⽅法,下⾯哪⼀句话 的描述是不正确的( ) A.以逻辑规则为核⼼的逻辑推理⽅法解释性强 B.⽬前以数据驱动为核⼼的机器学习⽅法可从任意⼤数据(⽆论数据是具备标签还是不具备标签)中来学习数据模式,完成给定 任务 C.强化学习的基本特征是智能体与环境不断进⾏交互,在交互过程不断学习来完成特定任务 C.强化学习的基本特征是智能体与环境不断进⾏交互,在交互过程不断学习来完成特定任务 D.⽬前以数据驱动为核⼼的机器学习⽅法需要从具有标签的⼤数据中来学习数据模式,完成给定任务 7下⾯对⼈类智能和机器智能的描述哪⼀句是不正确的( ) A.⼈类智能能够⾃我学习,机器智能⼤多是依靠数据和规则驱动 B.⼈类智能具备直觉和顿悟能⼒,机器智能很难具备这样的能⼒ C.⼈类智能具有⾃适应特点,机器智能则⼤多是"依葫芦画瓢" D.⼈类智能和机器智能均具备常识,因此能够进⾏常识性推理 8下⾯哪句话描述了现有深度学习这⼀种⼈⼯智能⽅法的特点( ) A.⼤数据,⼤任务 B.⼩数据,⼤任务 C.⼩数据,⼩任务 D.⼤数据,⼩任务 9、20世纪30年代,围绕可计算这⼀重要思想,⼀些模型被提出。下述哪个模型不是于这个时期在可计算思想推动下产⽣的( ) A.lambda 演算 B.冯诺依曼模型 C.图灵机 D.原始递归函数 10德国著名数学家希尔伯特在1900年举办的国际数学家⼤会中所提出的"算术公理的相容性 (the compatibility of the arithmetical axioms)"这⼀问题推动了可计算思想研究的深⼊。在希尔伯特所提出的这个问题中,⼀个算术公理系统是相容的需要 满⾜三个特点。下⾯哪个描述不属于这三个特点之⼀( ) A.完备性,即所有能够从该形式化系统推导出来的命题,都可以从这个形式化系统推导出来。 B.可判定性,即算法在有限步内判定命题的真伪 C.复杂性,即算法性能与输⼊数据⼤⼩相关 D.⼀致性,即⼀个命题不可能同时为真或为假 第七章 1下⾯对逻辑斯蒂回归(logistic regression)描述不正确的是( ) A.逻辑斯蒂回归是⼀种⾮线性回归模型 B.在逻辑斯蒂回归中,输⼊数据特征加权累加值在接近 或+ 附近时,模型输出的概率值变化很⼤ C.逻辑斯蒂回归中所使⽤Sigmoid函数的输出形式是概率输出 D.在逻辑斯蒂回归中,能够实现数据特征加权累加 2 逻辑斯蒂回归模型(logistic regression)属于( ) A.监督学习 B.⽆监督学习 C.以上都不是 D.半监督学习 3潜在语义分析属于( ) A.以上都不是 B.⽆监督学习 C.监督学习 D.半监督学习 4线性区别分析属于( ) A.⽆监督学习 B.以上都不是 C.半监督学习 D.监督学习 5逻辑斯蒂回归函数也可被称为( ) A.最⼤似然估计回归模型 B.最⼤后验估计回归模型 C.交叉熵回归模型 D.对数⼏率回归(log-odds regression) 6在隐性语义分析中,给定M个单词和N个⽂档所构成的单词-⽂档矩阵(term-document)矩阵,对其进⾏分解,将单词或⽂档映射到 ⼀个R维的隐性空间。下⾯描述不正确的是( ) A.这⼀映射过程中需要利⽤⽂档的类别信息 B.通过矩阵分解可重建原始单词-⽂档矩阵,所得到的重建矩阵结果⽐原始单词-⽂档矩阵更好捕获
第 1 章 软件包的安装和介绍....................1 1.1 Python 简介......................................1 1.2 安装软件包......................................2 1.2.1 Python(x,y)..................................... 2 1.2.2 Enthought Python Distribution (EPD)............................................. 3 1.3 方便的开发工具..............................3 1.3.1 IPython........................................... 4 1.3.2 Spyder............................................ 8 1.3.3 Wing IDE 101..............................12 1.4 函数库介绍....................................13 1.4.1 数值计算库.................................13 1.4.2 符号计算库.................................14 1.4.3 界面设计.....................................14 1.4.4 绘图与可视化 .............................14 1.4.5 图像处理和计算机视觉..............15 第 2 章 NumPy——快速处理数据.......... 16 2.1 ndarray 对象...................................16 2.1.1 创建数组.....................................16 2.1.2 存取元素.....................................21 2.1.3 多维数组.....................................24 2.1.4 结构数组.....................................29 2.1.5 内存结构.....................................32 2.2 ufunc 运算......................................35 2.2.1 四则运算.....................................37 2.2.2 比较和布尔运算 .........................39 2.2.3 自定义 ufunc 函数 ......................40 2.2.4 广播.............................................42 2.2.5 ufunc 函数的方法.......................46 2.3 多维数组的下标存取....................48 2.3.1 下标对象.....................................48 2.3.2 整数数组作为下标.....................49 2.3.3 一个复杂的例子.........................51 2.3.4 布尔数组作为下标.....................53 2.4 庞大的函数库 ............................... 54 2.4.1 求和、平均值、方差.................54 2.4.2 最值和排序.................................55 2.4.3 多项式函数.................................57 2.4.4 分段函数.....................................60 2.4.5 统计函数.....................................62 2.5 线性代数 ....................................... 65 2.5.1 各种乘积运算.............................65 2.5.2 解线性方程组.............................67 2.6 掩码数组 ....................................... 69 2.7 文件存取 ....................................... 72 2.8 内存映射数组 ............................... 75 第 3 章 SciPy——数值计算库.................79 3.1 常数和特殊函数 ........................... 79 3.2 优化——optimize .......................... 81 3.2.1 最小二乘拟合.............................81 3.2.2 函数最小值.................................84 3.2.3 非线性方程组求解.....................86 3.3 插值——interpolate ....................... 88 3.3.1 B 样条曲线插值..........................88 3.3.2 外推和 Spline 拟合.....................90 3.3.3 二维插值.....................................91 3.4 数值积分——integrate .................. 93 3.4.1 球的体积.....................................93 3.4.2 解常微分方程组.........................95 3.5 信号处理——signal....................... 97 欢迎加入非盈利Python学习交流编程QQ群783462347,群里免费提供500+本Python书籍! VIII Python 科学计算 目 录 3.5.1 中值滤波.....................................97 3.5.2 滤波器设计.................................98 3.6 图像处理——ndimage .................100 3.6.1 膨胀和腐蚀...............................101 3.6.2 Hit 和 Miss.................................102 3.7 统计——stats................................105 3.7.1 连续和离散概率分布................105 3.7.2 二项、泊松、伽玛分布............108 3.8 嵌入 C 语言程序——weave ........112 第 4 章 SymPy——符号运算好帮手 .... 115 4.1 从例子开始..................................115 4.1.1 封面上的经典公式....................115 4.1.2 球体体积...................................117 4.2 数学表达式..................................119 4.2.1 符号...........................................119 4.2.2 数值...........................................121 4.2.3 运算符和函数 ...........................122 4.3 符号运算......................................125 4.3.1 表达式变换和化简....................125 4.3.2 方程...........................................128 4.3.3 微分...........................................129 4.3.4 微分方程...................................130 4.3.5 积分...........................................131 4.4 其他功能......................................133 4.4.1 平面几何...................................133 4.4.2 绘图...........................................135 第 5 章 matplotlib——绘制精美 的图表..................................... 139 5.1 快速绘图......................................139 5.1.1 使用 pyplot 模块绘图...............139 5.1.2 以面向对象方式绘图................142 5.1.3 配置属性...................................143 5.1.4 绘制多个子图 ...........................145 5.1.5 配置文件...................................147 5.1.6 在图表中显示中文....................149 5.2 Artist 对象 ................................... 152 5.2.1 Artist 对象的属性.....................154 5.2.2 Figure 容器................................155 5.2.3 Axes 容器..................................156 5.2.4 Axis 容器...................................159 5.2.5 Artist 对象的关系.....................163 5.3 坐标变换和注释 ......................... 164 5.3.1 4 种坐标系................................167 5.3.2 坐标变换的步骤.......................169 5.3.3 制作阴影效果...........................173 5.3.4 添加注释...................................174 5.4 绘图函数简介 ............................. 177 5.4.1 对数坐标图...............................177 5.4.2 极坐标图...................................178 5.4.3 柱状图.......................................179 5.4.4 散列图.......................................180 5.4.5 图像...........................................181 5.4.6 等值线图...................................184 5.4.7 三维绘图...................................187 第 6 章 Traits——为 Python 添加类型 定义.........................................190 6.1 开发背景 ..................................... 190 6.2 Trait 属性的功能......................... 192 6.3 Trait 类型对象............................. 196 6.4 Trait 的元数据............................. 198 6.5 预定义的 Trait 类型.................... 200 6.6 Property 属性............................... 204 6.7 Trait 属性监听............................. 206 6.8 Event 和 Button 属性.................. 210 6.9 Trait 属性的从属关系................. 211 6.10 动态添加 Trait 属性.................. 213 6.11 创建自己的 Trait 类型.............. 215 6.11.1 从 TraitType 继承.................215 6.11.2 使用 Trait()............................217 6.11.3 定义 TraitHandler 类.............219 欢迎加入非盈利Python学习交流编程QQ群783462347,群里免费提供500+本Python书籍! IX 目 录 第 7 章 TraitsUI——轻松制作用户 界面......................................... 221 7.1 默认界面......................................221 7.2 用 View 定义界面........................222 7.2.1 外部视图和内部视图................222 7.2.2 多模型视图...............................226 7.2.3 Group 对象................................228 7.2.4 配置视图...................................231 7.3 用 Handler 控制界面和模型 .......232 7.3.1 用 Handler 处理事件.................233 7.3.2 Controller 和 UIInfo 对象..........237 7.3.3 响应 Trait 属性的事件..............238 7.4 属性编辑器..................................240 7.4.1 编辑器演示程序 .......................241 7.4.2 对象编辑器...............................243 7.4.3 字符串列表编辑器....................248 7.4.4 对象列表编辑器 .......................250 7.5 菜单、工具条和状态栏..............252 7.6 设计自己的编辑器......................255 7.6.1 Trait 编辑器的工作原理...........255 7.6.2 制作 matplotlib 的编辑器.........259 7.6.3 CSV 数据绘图工具...................262 第 8 章 Chaco——交互式图表............. 264 8.1 面向脚本绘图..............................264 8.2 面向应用绘图..............................265 8.2.1 多条曲线...................................267 8.2.2 Plot 对象的结构........................271 8.2.3 编辑绘图属性 ...........................275 8.2.4 容器(Container).........................276 8.3 添加交互工具..............................279 8.3.1 平移和缩放...............................279 8.3.2 选取范围...................................282 8.3.3 选取数据点...............................284 8.3.4 套索工具...................................287 8.4 二次开发......................................289 8.4.1 用 Kiva 库在数组上绘图..........290 8.4.2 Enable 库的组件.......................292 8.4.3 设计圆形选择工具...................297 8.4.4 制作动画演示...........................301 第 9 章 TVTK——数据的三维可视化....303 9.1 流水线(Pipeline).......................... 304 9.1.1 显示圆锥...................................304 9.1.2 用 ivtk 观察流水线...................307 9.2 数据集(Dataset)........................... 313 9.2.1 ImageData..................................313 9.2.2 RectilinearGrid...........................318 9.2.3 StructuredGrid............................319 9.2.4 PolyData ....................................321 9.3 可视化实例 ................................. 324 9.3.1 切面...........................................325 9.3.2 等值面.......................................330 9.3.3 流线...........................................333 9.4 TVTK 的改进.............................. 337 9.4.1 TVTK 的基本用法....................338 9.4.2 Trait 属性...................................339 9.4.3 序列化(Pickling)........................339 9.4.4 集合迭代...................................340 9.4.5 数组操作...................................341 第 10 章 Mayavi——更方便的可视化....343 10.1 用 mlab 快速绘图 ..................... 343 10.1.1 点和线...................................343 10.1.2 Mayavi 的流水线..................345 10.1.3 二维图像的可视化...............348 10.1.4 网格面...................................352 10.1.5 修改和控制流水线...............356 10.1.6 标量场...................................358 10.1.7 矢量场...................................361 10.2 Mayavi 和 TVTK 之间 的关系....................................... 363 10.2.1 显示 TVTK 流水线..............363 10.2.2 两条流水线之间的关系.......365 欢迎加入非盈利Python学习交流编程QQ群783462347,群里免费提供500+本Python书籍! X Python 科学计算 目 录 10.3 Mayavi 应用程序.......................367 10.3.1 操作流水线...........................368 10.3.2 命令行和对象浏览器...........371 10.4 将 Mayavi 嵌入到界面中..........374 第 11 章 VPython——制作 3D 演示 动画 ...................................... 378 11.1 场景、物体和照相机................378 11.1.1 控制场景窗口.......................380 11.1.2 控制照相机...........................383 11.1.3 模型的属性...........................384 11.1.4 三维模型...............................387 11.2 制作动画演示............................390 11.2.1 简单动画...............................390 11.2.2 盒子中反弹的球...................391 11.3 与场景交互................................393 11.3.1 响应键盘事件.......................394 11.3.2 响应鼠标事件.......................394 11.4 用界面控制场景........................397 11.5 创建复杂模型............................400 11.5.1 faces()的用法........................400 11.5.2 读入模型数据.......................402 第 12 章 OpenCV——图像处理和计算机 视觉 ...................................... 408 12.1 存储图像数据的 Mat 对象........409 12.1.1 Mat 对象和 NumPy 数组.....410 12.1.2 像素点类型...........................414 12.1.3 其他数据类型.......................415 12.1.4 Vector 类型...........................417 12.1.5 在图像上绘图.......................418 12.2 图像处理....................................421 12.2.1 二维卷积...............................421 12.2.2 形态学运算...........................424 12.2.3 填充——floodFill..................426 12.2.4 去瑕疵——inpaint.................427 12.3 图像变换....................................428 12.3.1 几何变换...............................428 12.3.2 重映射——remap..................430 12.3.3 直方图统计...........................433 12.3.4 二维离散傅立叶变换...........437 12.4 图像识别 ................................... 440 12.4.1 用霍夫变换检测直线 和圆.......................................440 12.4.2 图像分割...............................444 12.4.3 用 SURF 进行特征匹配.......450 第 13 章 数据和文件 ............................453 13.1 声音的输入输出 ....................... 453 13.1.1 读写 WAV 文件...................453 13.1.2 用 pyAudio 播放和录音.......456 13.2 视频的输入输出 ....................... 459 13.2.1 读写视频文件.......................459 13.2.2 安装视频编码.......................464 13.3 读写 HDF5 文件....................... 465 13.4 读写 Excel 文件 ........................ 469 13.4.1 写 Excel 文件........................469 13.4.2 读 Excel 文件........................471 第 14 章 数字信号系统.........................473 14.1 FIR 和 IIR 滤波器..................... 473 14.2 FIR 滤波器设计........................ 477 14.2.1 用 firwin()设计滤波器..........479 14.2.2 用 remez()设计滤波器..........481 14.2.3 滤波器的级联.......................483 14.3 IIR 滤波器设计......................... 485 14.3.1 巴特沃斯低通滤波器...........485 14.3.2 双线性变换...........................487 14.3.3 滤波器的频带转换...............490 14.4 数字滤波器的频率响应 ........... 494 14.5 二次均衡滤波器设计工具 ....... 497 14.6 零相位滤波器 ........................... 500 14.7 重取样 ....................................... 501 欢迎加入非盈利Python学习交流编程QQ群783462347,群里免费提供500+本Python书籍! XI 目 录 第 15 章 频域信号处理........................ 505 15.1 FFT 演示程序............................505 15.1.1 FFT 知识复习.......................505 15.1.2 合成时域信号.......................509 15.1.3 三角波 FFT 演示程序..........511 15.2 观察信号的频谱........................512 15.2.1 窗函数...................................515 15.2.2 频谱平均...............................517 15.2.3 谱图.......................................519 15.3 卷积运算....................................522 15.3.1 快速卷积...............................522 15.3.2 分段运算...............................524 15.4 信号处理....................................526 15.4.1 基本框架...............................527 15.4.2 频域滤波器...........................528 15.4.3 频率变调处理.......................530 15.4.4 用谱图差减法降噪...............531 15.5 Hilbert 变换................................532 第 16 章 用 C 语言提高计算效率......... 537 16.1 用 ctypes 调用 DLL 库..............537 16.2 用 Weave 嵌入 C++程序...........541 16.2.1 Weave 的工作原理...............541 16.2.2 处理 NumPy 数组.................543 16.2.3 使用 blitz()提速.....................546 16.2.4 扩展模块...............................548 16.3 用 Cython 将 Python 编译 成 C............................................549 16.3.1 编译 Cython 程序.................549 16.3.2 提高计算效率.......................550 16.3.3 快速访问 NumPy 数组.........553 16.4 用 SWIG 创建扩展模块............555 16.4.1 SWIG 的调用方法 和实例 ..................................555 16.4.2 SWIG 基础............................558 16.4.3 SWIG 处理 NumPy 数组......566 第 17 章 自适应滤波器.........................571 17.1 自适应滤波器简介 ................... 571 17.1.1 系统识别...............................571 17.1.2 信号预测...............................572 17.1.3 信号均衡...............................572 17.2 NLMS 计算公式....................... 573 17.3 用 NumPy 实现 NLMS 算法.... 575 17.3.1 系统辨识模拟.......................577 17.3.2 信号均衡模拟.......................579 17.3.3 卷积逆运算...........................581 17.4 用 C 语言加速 NLMS 运算...... 583 17.4.1 用 SWIG 编写扩展模块.......583 17.4.2 用 Weave 嵌入 C++程序......586 第 18 章 单摆和双摆模拟.....................588 18.1 单摆模拟 ................................... 588 18.1.1 小角度时的摆动周期...........589 18.1.2 大角度时的摆动周期...........590 18.2 双摆模拟 ................................... 592 18.2.1 公式推导...............................592 18.2.2 微分方程的数值解...............595 18.2.3 动画演示...............................598 第 19 章 分形几何................................599 19.1 Mandelbrot 集合........................ 599 19.1.1 使用 NumPy 加速计算.........601 19.1.2 使用 Weave 加速计算..........603 19.1.3 连续的逃逸时间...................604 19.1.4 Mandelbrot 演示程序 ...........605 19.2 迭代函数系统(IFS)................... 606 19.2.1 二维仿射变换.......................610 19.2.2 迭代函数系统设计器...........610 19.3 L-System 分形........................... 613 19.4 分形山脉 ................................... 616 19.4.1 一维中点移位法...................616 19.4.2 二维中点移位法...................618 19.4.3 菱形方形算法.......................619
《可计算性与计算复杂性导引》是一本介绍计算机科学领域中的可计算性与计算复杂性理论的书籍。该书是由张立昂教授编写的,旨在帮助读者理解这两个重要概念及其在计算机科学中的应用和影响。 可计算性是研究计算过程中是否存在一种通用算法,能够解决所有可以在某种形式的计算机上运行的问题。这一概念由图灵提出,并通过图灵机模型进行形式化。《可计算性与计算复杂性导引》通过介绍不同的计算模型(如图灵机、递归函数等)和形式语言,帮助读者理解可计算性的定义和性质,以及计算问题的可解性与不可解性。 计算复杂性是研究计算问题的难度和资源消耗的量度。在现实世界中,许多问题并非所有情况下都能在有限时间内得到解决,因此了解问题的计算复杂性对于设计高效算法非常重要。《可计算性与计算复杂性导引》通过介绍不同的计算复杂性类别(如P类、NP类、NP完全问题等)和计算复杂性理论的基本思想,帮助读者理解计算问题的可解性和困难性,并提供了一些解决困难问题的方法和策略。 通过阅读《可计算性与计算复杂性导引》,读者可以了解可计算性与计算复杂性理论的基本原理、应用场景和挑战,培养抽象思维能力和分析问题的技巧,并为进一步深入研究计算理论和算法设计打下坚实基础。这本书适合计算机科学领域的学生、研究者和工程师阅读,也可以作为相关课程教材使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值