计算机辅助工程基础.ppt
《计算机辅助工程基础.ppt》由会员分享,可在线阅读,更多相关《计算机辅助工程基础.ppt(139页珍藏版)》请在三一办公上搜索。
1、1,第二章 计算机辅助工程基础,数据结构和算法计算机图形学工程数据库软件工程新技术趋势,2,2.1 数据结构和算法,3,数据结构,实际问题,数学模型,求解算法,抽象,设计,编程解答,求解实际问题的一般步骤:,信号相位是指在一个交叉口某个方向的交通流(或几个交通流的组合)同时得到的通行权及被分配得到这些通行权的时间带。在多叉路口需设几个相位才能既使车辆相互之间不冲突而又达到最大的流通呢?,交叉口信号相位的设置问题,假设有如图所示的五叉路,其中C和E为单行道,在路口有13条可行的通路,其中有的可以同时通行而不发生冲突,如AB和EC,而有的在同时通行时一定会冲突,如EB和AD,那末,在该交叉口应如何
2、设置相位?这个问题可以转换成一个图的染色问题。,5,在图上以一个圆圈表示一条通路,在不能同时通行的两个圆圈之间画一连线,对图中的圆圈上色,要求同一连线上的两个圆圈不同色且颜色种类最少;一种解决方案,图中13个圆圈表示13条通路,四种颜色分别表示四个相位。,交叉口信号相位的设置问题 图的染色问题,6,数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构。数据结构就是一门研究非数值性程序设计中计算机操作的对象以及它们之间的关系和运算等的学科,基本概念,7,基本概念,数据:对客观事物的符号表
3、示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称 数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理 数据对象:性质相同的数据元素的集合,是数据的一个子集 数据结构:相互之间存在一种或多种特定关系的数据元素的集合,8,四类基本结构,集合 线性结构 树形结构 网状结构,数据元素1,数据元素2,数据元素1,数据元素2,数据元素1,数据元素2,数据元素3,数据元素1,数据元素2,数据元素3,9,线性表,线性表是最常用且最简单的一种数据结构,它是属同一数据对象的n个数据元素的有限序列若将线性表记为,称ai-1是ai 的直接前趋元素,ai+1是ai的直接后继元
4、素线性表中元素的个数n(n=0)定义为线性表的长度,n=0 时称为空表。在非空表中的每个数据元素都有一个确定的位置,比如ai是第i个数据元素,称i为ai在线性表中的位序,10,线性表1顺序表,顺序表以一组地址连续的存储单元依次存储线性表的数据元素,由此在逻辑上相邻的两个元素在物理位置上也是相邻的。只要给定了存储线性表的起始位置,表中任一数据元素都可以随机存取,因此顺序表是一种随机存取的存储结构。顺序表通常用数组类型来实现.,ai的地址计算函数为:addr(ai)=addr(a1)+(i-1)*d,11,线性表2链表,链表使用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可
5、以是不连续的,即逻辑上相邻的两个元素在物理位置不一定相邻)。数据元素ai的存储映象(称为结点)包括两个域:存储数据元素信息的数据域;存储直接后继位置信息的指针域,n个结点链接成一个链表。链表在高级程序语言中可用指针来实现,12,线性表2链表,删除元素,添加元素,13,栈,栈是限定在表尾进行插入或删除操作的特殊线性表。先进后出的线性表.a1为栈底元素,an为栈顶元素。栈中元素按a1,a2,an的次序进栈,出栈的第一个元素应为栈顶元素an。,14,栈,基本运算有:建立一个栈 检查栈中剩余容量 从栈顶推入一个元素 从栈顶取出一个元素 删除一个栈,应用举例:常用软件中的撤销 与恢复 操作,15,队列,
6、队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在表的另一端进行删除。在队列中,允许插入的一端叫做队尾,允许删除的一端则称为队首。假设队列为,则称a1为队首元素,an为队尾元素。队中元素按a1,a2,an的次序进入退出队列也只能按这个次序依次进行。,16,队列,基本运算有:建立一个队列 检查队列状态 从队尾插入一个元素 从队首删除一个元素 删除一个队列,应用举例:生活中的排队,17,例交叉口仿真系统控制结构,当采用仿真方法分析一系列交叉口所发生的交通状态时,需要采用分时处理技术分别逐个改变每一个交叉口的状态,同时系统整体环境也在发生着一些具有时间先后次序的情况。,18,树,结点A为树
7、的根,根的每个分支称为子树,子树也是一棵树 结点子树的根为结点的孩子,如B、C、D为结点A的孩子,而A为B、C、D的双亲 同一个双亲的孩子之间为兄弟关系,如B、C、D 没有孩子的结点为树的叶子,H、F、G、D为树的叶子,19,树的基本运算,初始化一棵树 得到树的根 得到一个结点的双亲 得到一个结点的兄弟 得到一个结点的孩子 插入子树 删除子树 遍历树 清空树,20,特殊的树,二叉树 二叉搜索树 哈夫曼树 B树 AVL树 红-黑树,用于具有层次结构的数据的组织、搜索和比较,各种特定的树结构被广泛应用于交通CAE软件中,它们可以加快查找的速度和分析处理的效率。,21,二叉树,二叉树在树结构的应用中
8、起着非常重要的作用对二叉树的许多操作算法简单;而任何树都可以与二叉树相互转换,解决了树的存储结构及其运算中存在的复杂性。定义:二叉树是由n(n=0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。这也是一个递归定义。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树结点的子树要区分左子树和右子树,即使只有一棵子树也要进行区分,说明它是左子树,还是右子树。这是二叉树与树的最主要的差别。,22,二叉树的5种形式,(a)空二叉树,A,(b)根和空的左右子树,(c)根和左子树,(d)根和右子树,(e)根和左右子树,23,在二叉树的一
9、些应用中,常常要求在树中查找具有某种特征的结点,或者对树中全部结点逐一进行某种处理。这就引入了遍历二叉树的问题,即如何按某条搜索路径巡访树中的每一个结点,使得每一个结点均被访问一次,而且仅被访问一次。遍历对线性结构是容易解决的,而二叉树是非线性的,因而需要寻找一种规律,以便使二叉树上的结点能排列在一个线性队列上,从而便于遍历。,由二叉树的递归定义,二叉树的三个基本组成单元是:根结点、左子树和右子树。,遍历二叉树,24,假如以L、D、R分别表示遍历左子树、遍历根结点和遍历右子树,遍历整个二叉树则有DLR、LDR、LRD、DRL、RDL、RLD六种遍历方案。若规定先左后右,则只有前三种情况,分别规
10、定为:DLR先(根)序遍历,LDR中(根)序遍历,LRD后(根)序遍历。,25,先序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则(1)访问根结点;(2)先序遍历左子树;(3)先序遍历右子树。,先序遍历二叉树,124537,26,中序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则(1)中序遍历左子树;(2)访问根结点;(3)中序遍历右子树。,425137,中序遍历二叉树,27,后序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根结点。,452731,后序遍历二叉树,28,例题,例如图(1)所示的二叉树表达式(a+b*(c-
11、d)-e/f),按中序遍历:a+b*c-d-e/f按后序遍历:abcd-*+ef/-,按先序遍历:-+a*b-cd/ef,29,例题,已知一棵二叉树的前序遍历的结果是ABECDFGHIJ,中序遍历的结果是EBCDAFHIGJ,试画出这棵二叉树。当前序序列为ABECDFGHIJ,中序序列为EBCDAFHIGJ时,逐步形成二叉树的过程如下图所示:,30,树的路径长度(PL),PL是指从根到其它各结点的路径长度(分支数)之和。,31,完全二叉树,完全二叉树各结点的路径长度分别是数列0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,其路径长度为前n项之和,具有最小值:,32,霍夫
12、曼树,具有最小 WPL 的扩充二叉树叫霍夫曼树,33,霍夫曼树的构造方法,将n个权值视为具有n棵扩充二叉树的森林F,然后重复以下步骤,直到F中只有一棵树为止:,在F中选根的权值最小的两棵作为左右子树构造一棵新的二叉树,其根的权为左右子树根的权值之和。,在F中删除那两棵树,并把新的二叉树加入。,34,霍夫曼树的构造方法,35,霍夫曼编码霍夫曼树应用事例,1、最小冗余编码问题,设用0,1码来对一串字符信息进行等长编码:T 00,A 01,D 10,S 11,对于信息串“ATTSTATADT”所得到的编码为 01,00,00,11,00,01,00,01,10,00 共20位编码,字母集合T,A,D
13、,S出现的频度 W=5,3,1,1,若采用不等长编码表示 T 0,A 10,D 110,S 111 所得到的 编码是 10,0,0,111,0,10,0,10,110,0 共17位,这是最小冗 余编码。,36,霍夫曼编码霍夫曼树应用事例,2、霍夫曼树编码,以字符的频度为权构造霍夫曼树,左分支表示0,右分支表示1,从根到各外结点路径上经由的数字序列构成各字符的编码,37,3、霍夫曼树编码的优越性,是最小冗余码,非前缀码码 Ci 不是码 Cj 的前缀,译码简单唯一不断从根开始沿霍夫曼编码树查找。译码得到的只能是报文串:ATTSTATADT,霍夫曼编码霍夫曼树应用事例,38,习题,给定权值集合15,
14、03,14,02,06,09,16,17,构造相应的霍夫曼树,并计算它的带权外部路径长度。假定用于通信的电文仅由8个字母c1,c2,c3,c4,c5,c6,c7,c8组成,各字母在电文中出现的频率分别为5,25,3,6,10,11,36,4。试为这8个字母设计不等长Huffman编码,并给出该电文的总码数。,39,解答,此树的带权路径长度WPL=229,40,已知字母集 c1,c2,c3,c4,c5,c6,c7,c8,频率 5,25,3,6,10,11,36,4,则Huffman编码为:,电文总码数为 4*5+2*25+4*3+4*6+3*10+3*11+2*36+4*4=257,解答,41,
15、例:路网规划,在路网规划过程中,需在现状路网的基础上不断改造、完善,由近及远地提出各个规划特征年的路网规划方案;类似这种由单个初始路网经过多个阶段的演变而衍生成的一系列有着直接或间接派生关系的路网方案可称之为动态路网。在动态路网中,不同路网方案的数据存在大量的重复部分。传统的交通分析软件,对动态路网大多是按多个独立路网建立和分析的。不但造成数据冗余过大,更致命的是掩盖了路网动态演变的过程。基于树结构的方案树可有效描述动态路网的动态性,揭示路网方案之间的联系。方案树的每个结点代表一个路网方案;根结点即为初始路网;连接结点的边代表方案间的直接派生关系;双亲结点即为基础方案,孩子结点即为派生方案,兄
16、弟结点代表了不同的比选方案;树的高度代表动态路网的层次数,一个层次代表动态路网的一个演变阶段。,42,图有向图,有向图G=(N,A)由节点集N和弧集A构成。N中的每个元素i称为节点(或顶点)。A中的每个元素a可由N中的有序节点对(i,j)表示,称为从i到j的弧(或边)对于弧(i,j),i和j称为a的端点,其中i称为起点,j称为终点,并称j邻接到i 对于弧(i,j),称(i,j)关联于i和j,称(i,j)为i的出弧、j的入弧 一个节点的出弧的数目称为该节点的出度,入孤的数目称为该节点的入度,出度与入度之和称为该节点的度 起点和终点均相同的2条及2条以上的弧称为多重弧,起点和终点为同一节点的弧称为
17、环。一个无环、无多重弧的有向图称为简单有向图,一个无环、但允许有多重弧的有向图称为多重有向图。没有任何弧与之关联的节点称为孤立点,43,图有向图,节点集N=1,2,3,弧集A=(1,2),(1,3),(2,1),(2,3),(3,2)节点1是弧(1,2)的起点,节点2是该弧的终点,节点2邻接到节点1弧(1,2)关联于节点1和2,弧(1,2)为节点1的出弧、节点2的入弧节点1的出度为2,入度为1,度为3,44,图无向图、网络,无向图的定义类似于有向图,根本的区别在于无向图中组成弧的节点对是无序的,即连接节点i和j的弧既可以记成(i,j),也可记成(j,i)。有向图的相关概念都可自然地推广到无向图
18、上来,但在涉及方向性的概念时会有一些微小的差异,比如无向图的一条弧的端点不再有起点和终点之分。有向网络就是赋予节点和弧一定数值、权重的有向图,也就是赋权有向图;对应地,无向网络就是赋权无向图。网络和图的区别在于:它不仅代表着一种数学形式,而且具有物理结构。但是,由于图都是可以赋权的,因此在一般场合下,对图和网络的概念都不加细分,两者可以通用。,45,有向图的表示法关联矩阵,有向图G=(N,A)的关联矩阵B是一个nm的矩阵(n为节点数目,m为弧数目),每行对应于一个节点,每列对应于一条弧。若节点i是弧a的起点,则关联矩阵中对应的元素为1;若i是a的终点,则对应的元素为1;若i与a不关联,则对应的
19、元素为0。对于简单图,关联矩阵每列只含有两个非零元(一个1,一个1)。在关联矩阵中,每行元素1的个数正好是对应节点的出度,每行元素1的个数正好是对应顶点的入度。,46,有向图的表示法邻接矩阵,有向图G=(N,A)的邻接矩阵C是一个nn的矩阵,每行、每列均对应一个节点;如果两节点之间有一条弧,则邻接矩阵中对应的元素为1;否则为零。每行元素之和正好是对应节点的出度,每列元素之和正好是对应节点的入度。,47,有向图的表示法邻接表,有向图的邻接表就是所有节点的邻接节点集的列表。邻接表可以用多种数据结构加以实现,通常采用数组加链表的混合形式。在这样的邻接表中,节点存储在数组中,对每个节点用一个单向链表列
20、出该节点的所有邻接节点,链表中每个单元实际对应于一条弧(该弧的起点取决于链表头,终点取决于该单元存储的节点)。,48,有向图的表示法方法比较,有向图的关联矩阵和邻接矩阵的表示法非常简单、直接。但是,在关联矩阵的所有nm个元素中,只有2m个为非零元;在邻接矩阵的所有n2个元素中,只有m个为非零元,它们属于稀疏矩阵。对于比较稀疏的网络(比如交通网络,节点的平均出度在3左右),这两种表示法会浪费大量的存储空间。而邻接表的存储效率最高,只需要n+m个存储单位,尤其适合于稀疏网络。其他的有向图表示法包括:星形表、双向邻接表、邻接多重表等,可参考相关文献。,49,最短路径,求最短路径的Dijkstra算法
21、设有向图G=(V,E),其中,V=0,1,2,n,cost是表示G的邻接矩阵,costij表示有向边的权。若不存在有向边,则costij的权为无穷大。设s是一个集合,其中的每个元素表示一个顶点,从源点到这些顶点的最短距离已经求出。设顶点1为源点,集合初态s0。数组dist记录从源点到其他各项点当前的最短距离,其初值为disti=cost0i,i=1,2,n。从s之外的顶点集合V-S中选出一个顶点w,使distw的值最小。于是从源点到达w只通过s中的顶点,把w加入集合s中,调整dist中从源点到V-S中每个顶点v的距离:distv=mindistv,dist(w)+costwv,50,最短路径,
22、重复上述过程,直到s中包含v中其余各项点的最短路径。最终结果是:s记录了存在从源点到达的路径的顶点集合,数组dist记录了从源点到V中到其余各项点之间的最短路径.,51,Example,52,Answer,53,Answer(Con 1),最后的输出结果如下:132 352 032 15432 3052 1062,54,算法及其复杂度分析,(1)有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。(2)确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出
23、。(3)可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。(4)输入:一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。(5)输出:一个算法有一个或多个的输出。这些输出是同输入有着某些特定关系的量。,55,算法及其复杂度分析,通常设计一个“好”的算法应考虑达到以下目标:(1)正确性:算法应当满足具体问题的需求。通常一个大型问题的需求,要以特定的规格说明方式给出,而一个不那么严格的问题至少应当包括对于输入、输出和加工处理等明确的无歧义性的描述。设计或选择的算法应当能正确地反映这种需求。(2)可读性:算法主要是为了人的阅读与交流,其次才是机
24、器执行。可读性好有助于人对算法的理解;晦涩难懂的程序易于隐藏较多错误,难以调试和修改。(3)健壮性:当输入数据非法时,算法也能适当地作出反应或进行处理,而不会产生莫明其妙的输出结果。(4)效率与低存储量需求:通俗地说,效率指的是算法执行时间。存储量需求指算法执行过程中所需要的最大存储空间。一个好算法要有高的执行效率和低的存储量需求。,56,算法及其复杂度分析,通常设计一个“好”的算法应考虑达到以下目标:(1)正确性:算法应当满足具体问题的需求。通常一个大型问题的需求,要以特定的规格说明方式给出,而一个不那么严格的问题至少应当包括对于输入、输出和加工处理等明确的无歧义性的描述。设计或选择的算法应
25、当能正确地反映这种需求。(2)可读性:算法主要是为了人的阅读与交流,其次才是机器执行。可读性好有助于人对算法的理解;晦涩难懂的程序易于隐藏较多错误,难以调试和修改。(3)健壮性:当输入数据非法时,算法也能适当地作出反应或进行处理,而不会产生莫明其妙的输出结果。(4)效率与低存储量需求:通俗地说,效率指的是算法执行时间。存储量需求指算法执行过程中所需要的最大存储空间。一个好算法要有高的执行效率和低的存储量需求。,57,2.2计算机图形学,58,概念,计算机图形学主要研究用计算机及其图形设备来输入、表示、变换、运算和输出图形的原理、算法及系统。图形主要分为两类,一类是基于线条信息表示的,如工程图、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机辅助 工程 基础
链接地址:https://www.31ppt.com/p-6343018.html