计算学科中的科学问题 - huazhong university of...
TRANSCRIPT
1
计算学科中的科学问题计算学科中的科学问题
计算机科学与技术方法论
李瑞轩李瑞轩 教授教授
华中科技大学智能与分布计算实验室华中科技大学智能与分布计算实验室华中科技大学智能与分布计算实验室华中科技大学智能与分布计算实验室
[email protected]@hust.edu.cn
http://idc.hust.edu.cn/~rxli/http://idc.hust.edu.cn/~rxli/
主要内容主要内容
科学问题的定义和特征科学问题的定义和特征
计算学科各主领域的基本问题
计算学科中的典型问题(非数值计算)
哥尼斯堡七桥问题哥尼斯堡七桥问题
““梵天塔梵天塔””问题问题
P类问题与NP类问题
哲学家共餐问题 哲学家共餐问题
GoTo语句问题
人工智能中的若干哲学问题(人工智能中的若干哲学问题(图灵测试、西尔勒的图灵测试、西尔勒的““中中文屋子文屋子””、、计算机中的博弈问题计算机中的博弈问题))
2
科学问题的定义科学问题的定义
科学问题是指一定时代的科学认识主体,在已完成科学问题是指一定时代的科学认识主体,在已完成的科学知识和科学实践的基础上,提出的的科学知识和科学实践的基础上,提出的需要解决需要解决且有且有可能解决可能解决的问题。它包含一定的的问题。它包含一定的求解目标求解目标和和应应且有且有可能解决可能解决的问题。它包含 定的的问题。它包含 定的求解目标求解目标和和应应答域答域,但尚无确定的答案。,但尚无确定的答案。
能否在所从事的工作中能否在所从事的工作中提出关键和重要的科学问题提出关键和重要的科学问题,,对我们每个人来说都是一个挑战对我们每个人来说都是一个挑战。。
往往提出问题比解决问题更难!往往提出问题比解决问题更难!
科学问题的主要特征科学问题的主要特征
时代性时代性:每一个时代都有它自己的科学问题:每一个时代都有它自己的科学问题。。
混沌性混沌性:渴望对新知识的追求:渴望对新知识的追求,,追求开始的时候是追求开始的时候是模糊不清的模糊不清的。。
可解决性可解决性。。
可变异性可变异性:能引出另外具有可解决性的科学问题:能引出另外具有可解决性的科学问题。。
可待解性可待解性 绝非永远不可解决绝非永远不可解决 可待解性可待解性:绝非永远不可解决:绝非永远不可解决。。
3
1、离散结构
离散结构是计算机科学的基础内容离散结构是计算机科学的基础内容
包括集合论、数理逻辑、代数系统、图论和组合数学等包括集合论、数理逻辑、代数系统、图论和组合数学等
一、计算学科各主领域的基本问题
包括集合论、数理逻辑、代数系统、图论和组合数学等包括集合论、数理逻辑、代数系统、图论和组合数学等重要内容重要内容
离散结构的内容在数据结构、算法以及其他计算机离散结构的内容在数据结构、算法以及其他计算机科学领域都有广泛的运用科学领域都有广泛的运用
形式规格、验证及密码学:形式证明形式规格、验证及密码学:形式证明
计算机网络、操作系统、编译系统:图论的概念计算机网络、操作系统、编译系统:图论的概念
软件工程和数据库:集合论的概念软件工程和数据库:集合论的概念
强有力的数学工具强有力的数学工具
““能行性能行性”” 的根本问题决定了计算机本身的结构和的根本问题决定了计算机本身的结构和它处理的对象都是离散型的它处理的对象都是离散型的
2、程序设计基础
程序设计基础包括:程序设计基础包括:
程序设计结构、算法、问题求解、数据结构等。程序设计结构、算法、问题求解、数据结构等。
基本问题包括:基本问题包括:
对给定的问题,如何进行有效的描述并给出算法?对给定的问题,如何进行有效的描述并给出算法?
如何正确选择数据结构?如何正确选择数据结构?
如何进行设计、编码、测试和调试程序?如何进行设计、编码、测试和调试程序? 如何进行设计、编码、测试和调试程序?如何进行设计、编码、测试和调试程序?
4
AdaAda Byron LovelaceByron Lovelace
AdaAda:: 1919世纪诗人拜伦的女儿世纪诗人拜伦的女儿
世界上第 位程序员世界上第 位程序员 世界上第一位程序员世界上第一位程序员
也是第一个女程序员也是第一个女程序员
她在计算机还没出现的时候,她在计算机还没出现的时候,就已经开始了程序的设计。就已经开始了程序的设计。
穿孔机程序创始人,建立了循穿孔机程序创始人,建立了循环和子程序概念 为计算程序环和子程序概念 为计算程序环和子程序概念。为计算程序环和子程序概念。为计算程序拟定“算法”,写作的第一份拟定“算法”,写作的第一份“程序设计流程图”,被珍视“程序设计流程图”,被珍视
为“第一件计算机程序。为“第一件计算机程序。
19811981年,年,ADAADA语言语言
3、算法与复杂性
算法(算法(AlgorithmAlgorithm)是一系列解决问题的清晰指令,)是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法代表着用系统的方法描述解决问题的策略机制。
也就是说 能够对一定规范的输入 在有限时间内获得也就是说 能够对一定规范的输入 在有限时间内获得 也就是说,能够对一定规范的输入,在有限时间内获得也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。所要求的输出。
一个算法的优劣可以用一个算法的优劣可以用空间复杂度空间复杂度与与时间复杂度时间复杂度来来衡量。衡量。
5
算法与复杂性
包括:包括:
算法复杂性分析、算法策略、分布式并行算法、可计算理论、 P类问题与NP类问题、自动机理论、密码算法、几何算法等。
基本问题:基本问题:
对于给定的问题类, 好的算法是什么?时间、空间复杂性分析。
访问数据的 好方法是什么?访问数据的 好方法是什么
算法 好和 坏情况如何?
算法的平均性能如何?
算法的通用性如何?
算法的时间复杂度(算法的时间复杂度( Time complexity Time complexity ))
定义:如果一个问题的规模是定义:如果一个问题的规模是nn,解这一问题的某,解这一问题的某一算法所需要的时间为一算法所需要的时间为T(n)T(n),它是,它是nn的某一函数的某一函数T(n)T(n)称为这一算法的称为这一算法的““时间复杂性时间复杂性””。。
常用大常用大OO表示法表示时间复杂性,注意它是某一个表示法表示时间复杂性,注意它是某一个算法的时间复杂性。算法的时间复杂性。
大大OO表示只是说有上界,由定义如果表示只是说有上界,由定义如果f(n)=O(n)f(n)=O(n),那显,那显然成立然成立f(n)=O(n^2)f(n)=O(n^2),它给你一个上界,但并不是上,它给你一个上界,但并不是上确界 但人们在表示的时候 般都习惯表示前者确界 但人们在表示的时候 般都习惯表示前者确界,但人们在表示的时候一般都习惯表示前者。确界,但人们在表示的时候一般都习惯表示前者。
6
算法的空间复杂度(算法的空间复杂度(Space complexity Space complexity ))
空间复杂度是指算法在计算机内执行时所需存储空空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作间的度量。记作: :
S(n)=O(f(n)) S(n)=O(f(n))
例:配袜子(n双)
算法1: 2n-1
算法复杂性例子
先拎一只出来
2n-3
3
(2n-1)+(2n-3)+…+3+(n-1)=n2+n-2 O(n2)
先拎 只出来
弯腰拾袜子,不配扔地上
算法2: n
n
n+n=2n O(n)
拎袜子,放桌上
7
算法复杂性算法复杂性
O(1)O(1)
O(log(n))O(log(n))
O(n)O(n)
O(O(nlognlog(n))(n))
O(nO(n22))
O(2O(2nn))
O(n!)O(n!)
44、体系结构、体系结构
体系结构包括:体系结构包括:
数字逻辑、数据的机器表示、汇编级机器组织、存储技数字逻辑、数据的机器表示、汇编级机器组织、存储技术、接口和通信、多道处理和预备体系结构、性能优化、术、接口和通信、多道处理和预备体系结构、性能优化、网络和分布式系统的体系结构等。网络和分布式系统的体系结构等。
基本问题:基本问题:
实现处理器、内存和机内通信的方法是什么?实现处理器、内存和机内通信的方法是什么?
如何设计和控制大型计算系统,而且使其令人相信,尽如何设计和控制大型计算系统,而且使其令人相信,尽如何设计和控制大型计算系统 而 使其令人相信 尽如何设计和控制大型计算系统 而 使其令人相信 尽管存在错误和失败,但它仍然是按照我们的意图工作的?管存在错误和失败,但它仍然是按照我们的意图工作的?
哪种类型的体系结构能有效地包含许多在一个计算中能哪种类型的体系结构能有效地包含许多在一个计算中能并行工作的处理元素?并行工作的处理元素?
如何度量性能?如何度量性能?
8
IntelIntel众核架构芯片计算速度每秒万亿次众核架构芯片计算速度每秒万亿次
55、操作系统、操作系统
操作系统包括:操作系统包括:
操作系统的逻辑结构、并发处理、资源分配与调度、存操作系统的逻辑结构、并发处理、资源分配与调度、存储管理、设备管理、文件系统等。储管理、设备管理、文件系统等。
基本问题:基本问题:
在计算机系统操作的每一个级别上,可见的对象和允许在计算机系统操作的每一个级别上,可见的对象和允许进行的操作各是什么?进行的操作各是什么?
对于每一类资源,能够对其进行有效利用的 小操作集对于每一类资源,能够对其进行有效利用的 小操作集是什么?是什么?
如何组织接口才能使得用户只需与抽象的资源而非硬件如何组织接口才能使得用户只需与抽象的资源而非硬件接 使得 资 件接 使得 资 件的物理细节打交道?的物理细节打交道?
作业调度、内存管理、通信、软件资源访问、并发任务作业调度、内存管理、通信、软件资源访问、并发任务间的通信以及可靠性与安全的控制策略是什么?间的通信以及可靠性与安全的控制策略是什么?
通过少数构造规则的重复使用进行系统功能扩展的原则通过少数构造规则的重复使用进行系统功能扩展的原则是什么?是什么?
9
66、网络计算、网络计算
网络计算包括:网络计算包括:
计算机网络的体系结构、网络安全、网络管理、无线和计算机网络的体系结构、网络安全、网络管理、无线和移动计算等。移动计算等。
基本问题基本问题
网络中的数据如何进行交换?网络中的数据如何进行交换?
网络协议如何验证?网络协议如何验证?
如何保证网络的安全?如何保证网络的安全?
分布式计算的性能如何评价?分布式计算的性能如何评价? 分布式计算的性能如何评价?分布式计算的性能如何评价?
分布式计算如何组织才能够使通过通信网连接在一起的分布式计算如何组织才能够使通过通信网连接在一起的自主计算机参加到一项计算中,而网络协议、主机地址、自主计算机参加到一项计算中,而网络协议、主机地址、带宽和资源则具有透明性?带宽和资源则具有透明性?
10
网络计算网络计算
Mainframe ComputingMainframe Computing (主机计算)(主机计算)
Client/Server Client/Server ((C/SC/S模式)模式) Client/Server Client/Server ((C/SC/S模式)模式)
Client/Browser/Web Server/DB Client/Browser/Web Server/DB ServerServer ((B/SB/S模式)模式)
Client/Clusters Client/Clusters (集群计算)(集群计算)
Client/Networking Client/Networking (网络计算)(网络计算)
Mobile Computing Mobile Computing (移动计算)(移动计算)
Grid Computing Grid Computing (网格计算)(网格计算)
PeerPeer--toto--peer Computing peer Computing (对等计算)(对等计算)
网络计算网络计算
Wearable Computing Wearable Computing (可穿戴计算)(可穿戴计算)
Pervasive Computing Pervasive Computing (普适计算)(普适计算)
→→Client / Virtual Server EnvironmentClient / Virtual Server Environment(虚拟服务计算)(虚拟服务计算)
ClientClient→→P4C (Personal Computer P4C (Personal Computer ClientClient→→P4C (Personal, Computer, P4C (Personal, Computer, Communication, Customer, Control ) Communication, Customer, Control )
Social Computing Social Computing (社会计算)(社会计算)
Cloud Computing Cloud Computing (云计算)(云计算)
11
77、程序设计语言、程序设计语言
程序设计语言包括:程序设计语言包括:
程序设计模式、虚拟机、类型系统、执行控制模型、语程序设计模式、虚拟机、类型系统、执行控制模型、语言翻译系统、程序设计语言的语义学、基于语言的并行言翻译系统、程序设计语言的语义学、基于语言的并行构件。构件。
基本问题基本问题
语言(数据类型、操作、控制结构、引进新类型和操作语言(数据类型、操作、控制结构、引进新类型和操作的机制)表示的虚拟机的可能组织结构是什么?的机制)表示的虚拟机的可能组织结构是什么?
语言如何定义机器?机器如何定义语言?语言如何定义机器?机器如何定义语言?
什么样的表示法(语义)可以有效地用于描述计算机应什么样的表示法(语义)可以有效地用于描述计算机应该做什么?该做什么?
程序设计语言程序设计语言
机器语言机器语言
汇编语言汇编语言
高级程序设计语言高级程序设计语言
面向对象程序设计语言面向对象程序设计语言
脚本语言脚本语言
12
88、人、人--机交互机交互
人人--机交互包括:机交互包括:
以人为中心的软件开发和评价、图形用户接口设计、多以人为中心的软件开发和评价、图形用户接口设计、多媒体系统的接口设计等。媒体系统的接口设计等。
基本问题基本问题
表示物体和自动产生供阅览的照片的有效方法是什么?表示物体和自动产生供阅览的照片的有效方法是什么?
接受输入和给出输出的有效方法是什么?接受输入和给出输出的有效方法是什么?
怎样才能减小产生误解和由此产生的人为错误的风险?怎样才能减小产生误解和由此产生的人为错误的风险? 怎样才能减小产生误解和由此产生的人为错误的风险?怎样才能减小产生误解和由此产生的人为错误的风险?
图表和其他工具怎样才能通过存储在数据集中的信息去图表和其他工具怎样才能通过存储在数据集中的信息去理解物理现象?理解物理现象?
微软微软KinectKinect
13
99、图形学和可视化计算、图形学和可视化计算
图形学和可视化计算包括:图形学和可视化计算包括:
计算机图形学、可视化、虚拟现实、计算机视觉等。计算机图形学、可视化、虚拟现实、计算机视觉等。
基本问题:基本问题:
支持图形/像产生及信息浏览的更好模型
如何提取科学的(计算和医学)和更抽象的相关数据?
图形/像形成过程的解释和分析方法 图形/像形成过程的解释和分析方法
问题
英国的海岸线有多长?英国的海岸线有多长?
1967年法国数学家B. B. Mandelbrot提出
14
• Mandelbrot量海岸线
r L(r)1000m L
分数维(Fructal)图形
1000m L1
1m L2 (L2>L1)
Lim L(r)=+r0
• 海岸线自相似,无穷递归海岸线自相似,无穷递归
• 要定量地分析像海岸线这样的图形,引入分形维数也许是
必要的
• 经典维数都是整数:点是0维、线是1维、面是2维、体是3维,而分形维数可以取分数,简称分维。
KochKoch雪花雪花
科赫雪花曲线,从它的任何一个局部经过放大,都科赫雪花曲线,从它的任何一个局部经过放大,都可以得到一个和整体全等的图形。可以得到一个和整体全等的图形。
浪花、雪花、树叶等都有类似特性。浪花、雪花、树叶等都有类似特性。
15
• Koch雪花
•维数公式:
分数维(Fructal)图形
Koch 雪花 N=4 S=1/3Koch 雪花, N=4, S=1/3
D= =1.2619log 4
log (1 /1/3)
维数计算公式:N指每一次分的份数,所以N=4,s指每一份的长度比例,得出维数是1.2619维,结合传统2、3维的概念,可知平面上用分形法,模型的维数1<D<2
D=log N
log (1/s)
分形学:模拟、刻画流动的物体,如白云、火焰、浪花、烟火等
分形法还能刻画脸部表情、皱纹、树叶、树枝等,是可编程的,因此图形也是可编辑的
如果空间上采用分形法,则维数2<D<3
曼德勃罗集的原始图形,从它出发,每一个细部都可以
演绎出美丽无比的梦幻般的仙境似的图形
16
分形应用分形应用
用用分形分形理论看当前股市理论看当前股市
分形分形分维的经络形态及解剖结构分维的经络形态及解剖结构
用用分形分形方法预测方法预测20102010年我国乙烯年产量年我国乙烯年产量 用用分形分形方法预测方法预测20102010年我国乙烯年产量年我国乙烯年产量
分形分形与神经网络方法在卫星数字图像分类中的与神经网络方法在卫星数字图像分类中的 应用应用
分形理论在刀具磨损研究中的应用分形理论在刀具磨损研究中的应用
变维分形模型预测台风路径变维分形模型预测台风路径
分形分形理论在社会科学中的应用理论在社会科学中的应用 分形分形理论在社会科学中的应用理论在社会科学中的应用
…….…….
17
1010、智能系统、智能系统
智能系统包括:智能系统包括:
约束可满足性问题、知识表示和推理、约束可满足性问题、知识表示和推理、agentagent、自然语言处、自然语言处理、机器学习与神经网络、人工智能规划系统和机器人学等。理、机器学习与神经网络、人工智能规划系统和机器人学等。
基本问题:基本问题:
基本的行为模型是什么?如何建造模拟它们的机器?基本的行为模型是什么?如何建造模拟它们的机器?
规则评估、推理、演绎和模式计算在多大程度上描述了智能?规则评估、推理、演绎和模式计算在多大程度上描述了智能?
通过这些方法模拟行为的机器的 终性能如何?通过这些方法模拟行为的机器的 终性能如何?
传感数据如何编码才使得相似的模式有相似的代码?传感数据如何编码才使得相似的模式有相似的代码?
电机编码如何与传感编码相关联?电机编码如何与传感编码相关联?
学习系统的体系结构怎样?学习系统的体系结构怎样?
这些系统是如何表示它们对这个世界的理解的?这些系统是如何表示它们对这个世界的理解的?
模式识别模式识别————语音识别语音识别
语音识别就是让机器通过识别和理解过程把语音信语音识别就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。号转变为相应的文本或命令的高技术。
主要包括特征提取技术、模式匹配准则及模型训练主要包括特征提取技术、模式匹配准则及模型训练技术三个方面。技术三个方面。
18
1111、信息管理、信息管理
信息管理包括:信息管理包括:
信息模型和信息系统、数据库系统数据建模、关系数据信息模型和信息系统、数据库系统数据建模、关系数据库及设计 数据库查询语言 分布式数据库 数据挖掘库及设计 数据库查询语言 分布式数据库 数据挖掘库及设计、数据库查询语言、分布式数据库、数据挖掘、库及设计、数据库查询语言、分布式数据库、数据挖掘、信息存储于检索信息存储于检索 、多媒体信息及系统、数字图书馆、电、多媒体信息及系统、数字图书馆、电子商务、电子政务、子商务、电子政务、ERPERP系统等。系统等。
19
信息管理信息管理
基本问题基本问题:: 使用什么样的建模概念来表示数据元素及其相互关系?使用什么样的建模概念来表示数据元素及其相互关系?
怎样把基本操作(如存储 定位 匹配和恢复)组合成怎样把基本操作(如存储 定位 匹配和恢复)组合成 怎样把基本操作(如存储、定位、匹配和恢复)组合成怎样把基本操作(如存储、定位、匹配和恢复)组合成有效的事务?有效的事务?
这些事务怎样才能与用户有效地进行交互?这些事务怎样才能与用户有效地进行交互?
高级查询如何翻译成高质量的程序?高级查询如何翻译成高质量的程序?
哪种机器体系结构能够进行有效的恢复和更新?哪种机器体系结构能够进行有效的恢复和更新?
怎样保护数据,以避免非授权访问 泄露和破坏?怎样保护数据,以避免非授权访问 泄露和破坏? 怎样保护数据,以避免非授权访问、泄露和破坏?怎样保护数据,以避免非授权访问、泄露和破坏?
如何保护大型的数据库,以避免由于同时更新引起的不如何保护大型的数据库,以避免由于同时更新引起的不一致性?一致性?
当数据分布在许多机器上时如何保护数据、保证性能?当数据分布在许多机器上时如何保护数据、保证性能?
文本如何索引和分类才能够进行有效的恢复?文本如何索引和分类才能够进行有效的恢复?
1212、软件工程、软件工程
软件工程是一门关于如何有效构建满足用户需求的软件工程是一门关于如何有效构建满足用户需求的软件系统所需的理论、知识和实践的学科。软件系统所需的理论、知识和实践的学科。
包括软件过程、软件需求和规格说明、软件设计、验证包括软件过程、软件需求和规格说明、软件设计、验证演化 软件项目管理 软件开发工具和环境 软构件演化 软件项目管理 软件开发工具和环境 软构件演化、软件项目管理、软件开发工具和环境、软构件、演化、软件项目管理、软件开发工具和环境、软构件、软件可靠性等。软件可靠性等。
基本问题:基本问题:
程序和程序设计系统发展背后的原理是什么?程序和程序设计系统发展背后的原理是什么?
如何证明一个程序或系统满足其规格说明?如何证明一个程序或系统满足其规格说明?如何证明 个程序或系统满足其规格说明如何证明 个程序或系统满足其规格说明
如何编写不忽略重要情况且能用于安全分析的规格说明?如何编写不忽略重要情况且能用于安全分析的规格说明?
软件系统是如何历经不同的各代进行演化的?软件系统是如何历经不同的各代进行演化的?
如何从可理解性和易修改性着手设计软件?如何从可理解性和易修改性着手设计软件?
20
1313、社会和职业问题、社会和职业问题
计算学科本身基本的文化、社会背景、法律和道德、计算学科本身基本的文化、社会背景、法律和道德、计算的历史、知识产权、隐私保护、计算机犯罪、计算的历史、知识产权、隐私保护、计算机犯罪、经济问题、哲学框架等。经济问题、哲学框架等。经济问题、哲学框架等。经济问题、哲学框架等。
基本问题:基本问题:
计算学科本身的文化、社会、法律和道德的问题;计算学科本身的文化、社会、法律和道德的问题;
有关计算的社会影响问题,以及如何评价可能的一些答有关计算的社会影响问题,以及如何评价可能的一些答案的案的案的问题;案的问题;
哲学问题;哲学问题;
技术问题以及美学问题。技术问题以及美学问题。
1414、科学计算、科学计算
科学计算包括:科学计算包括:
数值分析、运筹学、模拟和仿真、高性能计算等。数值分析、运筹学、模拟和仿真、高性能计算等。
基本问题:基本问题:
如何精确地以有限的离散过程近似表示连续和无限的离如何精确地以有限的离散过程近似表示连续和无限的离散过程?散过程?
如何处理这种近似产生的错误?如何处理这种近似产生的错误?
给定某一类方程在某精确度水平上能以多快的速度求解?给定某一类方程在某精确度水平上能以多快的速度求解? 给定某一类方程在某精确度水平上能以多快的速度求解?给定某一类方程在某精确度水平上能以多快的速度求解?
如何实现方程的符号操作,如积分、微分以及到 小项如何实现方程的符号操作,如积分、微分以及到 小项的归约?的归约?
如何把这些问题的答案包含到一个有效的、可靠的、高如何把这些问题的答案包含到一个有效的、可靠的、高质量的数学软件包中?质量的数学软件包中?
21
反映计算学科某一方面本质特性的典型实例
二、计算学科中的典型问题(非数值计算)
反映计算学科某 方面本质特性的典型实例
著名的问题可以促进计算机软件、算法的进步
11、哥尼斯堡、哥尼斯堡((KonigsbergKonigsberg))七桥问题七桥问题
17世纪的东普鲁士有一座哥尼斯堡城,城中有一座奈佛夫岛,普雷格尔河的两条支流环绕其旁,并将整个城市分成北区、东区、南区和岛区4个区域,全城共有7座桥将4个城区相连起来。
人们常通过这7座桥到各城区游玩,于是产生了一个有趣的
数学难题:寻找走遍这7座桥,且只许走过每座桥一次, 后
又回到原出发点的路径。该问题就是著名的“哥尼斯堡七桥问
题”。 北 区
岛 区 东 区
南 区
22
Konigsberg 七桥问题
• 问题抽象描述 A
C
B
• L. Euler:从一点出发不重复地走遍七桥, 后又回到
原点是不可能的
D
• 一般化处理:对给定的任意一个河道图与任意多座桥,
判定可能不可能每座桥恰好走过一次
欧拉回路
欧拉用数学方法给出了3条判定规则:
如果通奇数座桥的地方不止两个,满足要求的路线是找不到的。不到的。
如果只有两个地方通奇数座桥,可以从这两个地方之一出发,找到所要求的路线。
如果没有一个地方是通奇数座桥的,则无论从哪里出发,所要求的路线都能实现。
上述3条判定规则包含了任一连通无向图是否存在“欧拉上述3条判定规则包含了任 连通无向图是否存在 欧拉路径(Euler Path)”和“欧拉回路(Euler Circuit)”的判定条件。根据判定规则(3)可以得出,任一连通无向图存在欧拉回路的充分必要条件是图的所有顶点均为偶数度。
欧拉回路为图论的形成奠定了基础。
23
哈密尔顿回路问题
在图论中还有一个很著名的“哈密尔顿回路问题”。
该问题是爱尔兰著名学者威廉·哈密尔顿爵士
(W.R.Hamilton)在1859年提出的一个数学问题。其大意是:在任一给定的图中,能不能找到这样的路径,即从一点出发不重复地走过所有的结点(不必通过图中每一条边), 后又回到原出发点。
C
对于前面的例子来说,如果是求哈密尔顿回路,就是遍历A、B、C、D四个点,
D
BA
顿回路,就是遍历 、 、C、 四个点,
后又回到原出发点。
对于 “哈密尔顿回路问题”至今仍未找到满足问题的充分必要条件。
图论的形成和发展图论的形成和发展
欧拉的论文为图论的形成奠定了基础。欧拉的论文为图论的形成奠定了基础。
图论已广泛地应用于:图论已广泛地应用于:
计算学科计算学科 计算学科计算学科
运筹学运筹学
信息论信息论
控制论等学科控制论等学科
图论已成为我们对现实问题进行图论已成为我们对现实问题进行抽象抽象的一个强有力的一个强有力的数学工具的数学工具的数学工具。的数学工具。
图论在计算学科中的作用越来越大,图论本身也得图论在计算学科中的作用越来越大,图论本身也得到了充分的发展。到了充分的发展。
24
相传印度教的天神梵天在创造地球这一世界时,建相传印度教的天神梵天在创造地球这一世界时,建
了一座神庙,神庙里竖有三根宝石柱子,柱子由一了一座神庙,神庙里竖有三根宝石柱子,柱子由一
个铜座支撑个铜座支撑
22、、HanoiHanoi塔问题塔问题
个铜座支撑。个铜座支撑。
梵天将梵天将6464个直径大小不一的金盘子,按照从大到小个直径大小不一的金盘子,按照从大到小
的顺序依次套放在第一根柱子上,形成一座金塔,的顺序依次套放在第一根柱子上,形成一座金塔,
即所谓的梵天塔(又称汉诺塔)。即所谓的梵天塔(又称汉诺塔)。
天神让庙里的僧侣们将第一根柱子上的天神让庙里的僧侣们将第一根柱子上的6464个盘子借个盘子借
助第二根柱子全部移到第三根柱子上,即将整个塔助第二根柱子全部移到第三根柱子上,即将整个塔
迁移,同时定下迁移,同时定下33条规则。条规则。
HanoiHanoi塔问题塔问题
1 2 3
问题: 将第一根柱子上的64盘子借助于第二根柱子全部移动第
三根柱子上
1 2 3
CBA
三根柱子上。
约束 : (1) 每次只能移动一个;
(2) 只能在三根柱子上来回移动,不能放在它处;
(3) 在移动过程中,三根柱子上的盘子必须始终保持大在
下、小在上。
25
解题过程(解题过程(33个圆盘问题)个圆盘问题)
1 2 3 1 2 3 1 2 31 2 3 1 2 3
1 2 3 1 2 3
1 2 3
1 2 31 2 3 1 2 3
多圆盘梵天塔难题演示多圆盘梵天塔难题演示
26
多圆盘梵天塔难题演示多圆盘梵天塔难题演示
64个盘子
63 个盘子63 个盘子
解: 采用递归的思想:将一个较大的问题归约为一个或多个子
问题的求解,子问题比原问题简单,且结构与原问题相同。
h(n)=2h(n-1)+1
梵天塔问题解法梵天塔问题解法
=2(2h(n-2)+1)+1=22h(n-2)+2+1=23h(n-3)+22+2+1
…=2nh(0)+2n-1+ … +22+2+1=2n-1+ … +22+2+1=2n-1
• 264-1=18446744073709551615• 1次/秒,264-1/31536000(秒)=5849亿年(世界末日)• 264-1/1000万次=58490年
能行问题 O(2n)P=?NP问题
27
算法:梵天塔问题算法:梵天塔问题CC语言描述语言描述
hanoi(int n,char left,char middle,char right)
{
if(n==1) move(1,one,_,three);
else
{
hanoi(n-1,left,right,middle);
move(1,left,_,right);
hanoi(n-1,middle,left,right);
}
}
33、、PP类问题与类问题与NPNP类问题类问题
算法复杂性包括算法的空间以及时间两方面的复杂性问题,梵天塔问题主要讲的是算法的时间复杂性。
将所有可以在多项式时间内求解的问题称为将所有可以在多项式时间内求解的问题称为PP类问类问题题。。
将所有在多项式时间内可以验证的问题称为将所有在多项式时间内可以验证的问题称为NPNP类类 将所有在多项式时间内可以验证的问题称为将所有在多项式时间内可以验证的问题称为NPNP类类问题问题。。
28
PP类问题与类问题与NPNP类问题类问题
问题的引入——国王求婚问题
证比求易问题
求出48 770 428 433 377 171 (17位数)的一个真因子。
算法1:从2开始逐个除,一秒一个,一天算86400个
答案:223 092 827。
算法2: 小的真因子不会超过9位,全民动员
串行与并行,时间与空间,折衷
O(10 )—— 指数级2n
((11))旅行商旅行商((货郎担货郎担))问题问题 (Traveling Salesman Problem,TSP)
B2 4
D
A C
5 2
46
经且只经每个城市一次,回到出发点,路程(费用) 短(少)
旅行商(货郎担)问题是比哈密尔顿回路更强约束的问题
29
旅行商问题与组合爆炸问题旅行商问题与组合爆炸问题
若设城市数目为若设城市数目为nn时,那么组合路径数则为时,那么组合路径数则为((nn––11)!)!
0 ( (n–1) ! )
顺序算法和并行算法顺序算法和并行算法
顺序算法--时间复杂性大。
并行算法--空间复杂性大。
直觉上,顺序算法解决不了的问题完全可以用并行算法来解决,是这样吗?
30
((22))阿尔达定律阿尔达定律————((并行并行))加速比的局限加速比的局限
设设ff为求解某个问题的计算存在的必须串行执行操为求解某个问题的计算存在的必须串行执行操
作占整个计算的百分比,作占整个计算的百分比,pp为处理器的数目,为处理器的数目,SpSp为为
SP≤
1
f 1 – f
P
并行计算机系统 大的加速能力,则:并行计算机系统 大的加速能力,则:
P→+无穷大
Sp=1/f
对难解性问题而言,降低算法复杂度的数量级是
关键!
((33))P=P=??NPNP
将所有可以在多项式时间内求解的问题称为P类问题
(Polynomial problem)。
将所有在多项式时间内可以验证的问题称为NP类问题(
Non-deterministic Polynomial problem )。
P NP
P=?NP:如果P=NP,则所有在多项式时间内可验证的问
题都将是在多项式时间内可求解(或可判定)的问题。
——悬而未决的 大问题
NP中某些问题中寻找多项式时间算法,从未成功
P NP又无法证明
31
针对P=NP是否成立的问题,库克(S.A.Cook)等人认为NP类中的某些问题的复杂性与整个类的复杂性有关,当这些问题中的任何一个存在多项式时间算法时,则所
NPNP完全性问题完全性问题
当这些问题中的任何 个存在多项式时间算法时,则所有这些NP问题都是多项式时间可解的,这些问题被称为NP完全性问题。
存在多达数千个NP完全性问题。有代表性的有:哈密尔顿回路问题、旅行商问题(也称货郎担问题)、划分问题、带优先级次序的处理机调度问题、顶点覆盖问题等。
NP完全性问题例 可满足性问题(
•
NP完全性问题例:可满足性问题(Satisfiability Problem,简称SAT Problem)
判定一个布尔公式是否可满足的;
SAT = { <> 是可满足的布尔公式 };
库克结论: SAT P,当且仅当 P = NP。
公钥密码系统 RSA
计算复杂性理论应用计算复杂性理论应用——密码学密码学
加密密钥公开,解密密钥私有
很难从加密密钥求其解密密钥(NP完全问题)
例:三月二十八日早晨七点不发起总攻
三月二十八日早晨七点不发起总攻
32
44、、哲学家共餐问题哲学家共餐问题
5个哲学家围坐在一张圆桌旁,每
个人的面前摆有一碗面条,碗的两
旁各摆有一只筷子。
一个哲学专家的生活进程:
(1) 思考问题
(2) 左手拿筷 (等待的可能)
(3) 右手拿筷 (等待的可能)
(4) 进餐
(5) 放右筷
(6) 放左筷
(7) 返回 (1)( ) ( )
问题:如何协调5人的生活进程,使得每一人 终都可进餐;
饿死例: (1) 同时拿起左手筷——全等待
(2) 同时放、同时拿的循环
反应程序并发执行时进程同步的两个问题:死锁与饥饿
n个进程与m个共享资源的问题
55、、GoToGoTo语句问题以及程序设计方法学语句问题以及程序设计方法学
任何程序的逻辑结构都可以用3种 基本的结构顺序结构、选择结构、循环结构来表示。
处理框 判断框处理框 判断框循环体
33
GOTO语句
1968年,E.W.Dijkstra:“GoTo语句是有害的”。
结论:滥用GoTo语句是有害的,完全禁止也不明智。
好的程序应是逻辑正确、结构清晰、朴实无华。
GoTo语句问题的争论导致程序设计方法学的产生。 GoTo语句问题的争论导致程序设计方法学的产生。
三、人工智能中的若干哲学问题三、人工智能中的若干哲学问题
图灵测试图灵测试
西尔勒的西尔勒的““中文屋子中文屋子””
计算机中的博弈问题计算机中的博弈问题
34
1 1 、图灵测试、图灵测试
X Y
男(A) 女(B)
计算机
如果在C、X、Y的游戏中作出的错误判断与在计算
机 C Y的游戏中作出的错误判断次数相同 那么 机
C
提问者
人类思维的本质尚未真正了解人工智能并无实质性突破
机、C、Y的游戏中作出的错误判断次数相同,那么,机
器是能够思维的(非结构,而是从功能角度上)。
22、、J. R. Searle J. R. Searle 的“中文屋子”的“中文屋子”
美国哲学家约翰·西尔勒(J.R.Searle)将有关人工智能的研究划分为强人工智能(Strong Artificial Intelligence,强AI)和弱人工智能(Soft Artificial Intelligence,弱AI)两个派别。g
Soft AI:计算机是一个工具
Strong AI:不仅是一个工具,而且具有意识
“中文屋子”反驳强人工智能(SAI)观点
Searle 真的懂中文吗?
形式化的计算机仅有语法,没有语义
人在计算能力上超过机器是不现实的
机器永远也不可能代替人脑
35
33、博弈树搜索、博弈树搜索((信息科学导论 P283-286)
所谓双人完备博弈就是两位选手对垒所谓双人完备博弈就是两位选手对垒,,轮流走步轮流走步,,其中一方完全知道另一方已经走过的棋步以及未其中一方完全知道另一方已经走过的棋步以及未来可能的走步来可能的走步 对弈的结果要么是 方赢对弈的结果要么是 方赢((另另来可能的走步来可能的走步,,对弈的结果要么是一方赢对弈的结果要么是一方赢((另一另一方输方输)),,要么是和局要么是和局。。
国际象棋国际象棋、、西洋跳棋西洋跳棋、、围棋围棋、、中国象棋都属于双人完中国象棋都属于双人完备博弈备博弈。。
对于任何一种双人完备博弈对于任何一种双人完备博弈,,都可以用一个都可以用一个博弈博弈树树((与或树与或树))来描述来描述,,并通过博弈树搜索策略寻并通过博弈树搜索策略寻找 佳解找 佳解。。
博弈树博弈树
博弈树类似于问题求解搜索中使用的搜索树博弈树类似于问题求解搜索中使用的搜索树。。
搜索树上的第一个结点对应一个棋局搜索树上的第一个结点对应一个棋局,,树的分支表示棋树的分支表示棋的走步的走步 根节点表示棋局的开始根节点表示棋局的开始 叶节点表示棋局的结叶节点表示棋局的结的走步的走步,,根节点表示棋局的开始根节点表示棋局的开始,,叶节点表示棋局的结叶节点表示棋局的结束束。。
一个棋局的结果可以是赢一个棋局的结果可以是赢、、输或者和局输或者和局。。
博弈树的规模:博弈树的规模:
国际跳棋国际跳棋----10104040个结点个结点
国际象棋国际象棋----1010120120个结点个结点((棋局总数棋局总数))
中国象棋中国象棋----估计有估计有1010160160个结点个结点,,
围棋围棋----盘面状态达盘面状态达1010768768。。
36
““井字棋井字棋””游戏游戏
““井字棋井字棋””游戏(又叫游戏(又叫““三子棋三子棋””),是一款十分),是一款十分经典的益智小游戏。经典的益智小游戏。““井字棋井字棋””的棋盘很简单,是的棋盘很简单,是一个一个33××33的格子,很像中国文字中的的格子,很像中国文字中的““井井””字,所字,所个个33××33的格子,很像中国文字中的的格子,很像中国文字中的 井井 字,所字,所以得名以得名““井字棋井字棋””。。
设有九个空格,由设有九个空格,由MAXMAX,,MINMIN二人对弈,轮到谁二人对弈,轮到谁走棋谁就往空格上放一只自己的棋子,棋子放完后,走棋谁就往空格上放一只自己的棋子,棋子放完后,可以向周围空的格子移动棋子 每次 步 谁先使可以向周围空的格子移动棋子 每次 步 谁先使可以向周围空的格子移动棋子,每次一步,谁先使可以向周围空的格子移动棋子,每次一步,谁先使自己的棋子构成自己的棋子构成““三子成一线三子成一线””((同一行或列或对角同一行或列或对角线全是某人的棋子线全是某人的棋子)),谁就取得了胜利。,谁就取得了胜利。 用叉号表用叉号表示示MAXMAX,用圆圈代表,用圆圈代表MINMIN。。
1 井字棋例,下一步机器走,定义搜索树,局部到底 (叶节点)
X
O O X
思考题
2 在汉诺塔中,
1. 先把 小的盘移到B;
2 调用63个盘的移动过程 移到C;
O O X
X
2. 调用63个盘的移动过程,移到C;
3. 把B中的移到C。
则h(n)=h(n-1)+2; h(0)=2n
算法时间复杂度为O(n)。
上述分析有问题吗?
37
思考题思考题
赛纳河流经巴黎的这一段河中有两个岛,河岸与岛赛纳河流经巴黎的这一段河中有两个岛,河岸与岛间架设了间架设了1515座桥。如下图所示。问:座桥。如下图所示。问:
((ll)能否从某地出发 经过这)能否从某地出发 经过这1515座桥各 次后再座桥各 次后再 ((ll)能否从某地出发,经过这)能否从某地出发,经过这1515座桥各一次后再座桥各一次后再回到出发点?回到出发点?
((22)若不要求回到出发点,能否在一次散步中,)若不要求回到出发点,能否在一次散步中,穿过所有的桥各一次?若可以,请把路径写出。穿过所有的桥各一次?若可以,请把路径写出。
思考题思考题
判断下列图中,哪个存在欧拉路径,哪个存在欧拉判断下列图中,哪个存在欧拉路径,哪个存在欧拉回路。回路。
38
思考题思考题
判断下列图中,哪个存在哈密尔顿回路判断下列图中,哪个存在哈密尔顿回路
思考题思考题
对于本质上可以进行并行计算的特定问题(如对于本质上可以进行并行计算的特定问题(如
GoogleGoogle的搜索引擎,其计算本质上是并行的,该的搜索引擎,其计算本质上是并行的,该gg
引擎可以在不同的处理器上运行不同的查询),阿引擎可以在不同的处理器上运行不同的查询),阿
姆达尔定律对这类问题适用吗?姆达尔定律对这类问题适用吗?