登录
首页 » Others » 图论算法理论、实现及应用.pdf

图论算法理论、实现及应用.pdf

于 2020-12-08 发布
0 519
下载积分: 1 下载次数: 5

代码说明:

图论算法理论、实现及应用.pdf清华大学前言、图论研究及图论教学0图论( Graph Theory)是数学的一个分支,它以图为研究对象。图论中的图是由若干个给定的顶点、及若干条连接两个顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用顶点代表事物,用连接两个顶点的边表示相应两个事物间具有这种关系。这种图提供了一个很自然的数据结构,可以对自然科学和社会科学中许多领域的问题进行恰当的描述或建模,因此图论研究越来越得到这些领域的专家和学者的重视。图论最早的研究源于瑞士数学家莱昂哈德·欧拉( Leonhard euler,1707~1783),他在1736年成功地解决了哥尼斯堡(Kω nigsberg)七桥问题,从而开创了图论的研究。哥尼斯堡七桥问题。东普鲁士哥尼斯堡市(今俄罗斯加里宁格勒)有一条布格( Pregel)河,如图1白a)所示。布格河横贯哥尼斯堡城区,它有两条支流,在这两条支流之间夹着一块岛形地带,这里是城市的繁华地区。全城分为北、东、南、岛四个区,各区之间共有七座桥梁联系着。人们长期生活在河畔、岛上,来往于七桥之间。有人提出这样一个问题:能不能一次走遍所有的七座桥,而每座桥只准经过一次?问题提出后,很多人对此很感兴趣,纷纷进行试验,但在相当长的时间里,始终未能解决。(B)东(D)C南C)(a)(b)图1七桥问题欧拉在1736年解决了这个问题,他将这个问题抽象为一个图论问题:把每一块陆地用一个顶点来代替,将每一座桥用连接相应两个顶点的一条边来代替,从而得到一个图(如图1(b)所示)欧拉证明了这个问题没有解(详见本书5.1节),并且推广了这个问题,给出了“对于一个给定的图,能否用某种方式走遍所有的边、且没有重复”的判定法则。这项工作使欧拉成为图论及拓扑学的创始人。在此后的两百多年时间里,图论的研究从萌芽阶段,逐渐发展成为数学的一个新分支。特别是从20世纪初期开始,在生产管理、交通运输、计算机和通讯网络等方面涌现了许多离散性问题,这极大地促进了图论的发展。20世纪70年代以后,由于高性能计算机的出现,使大规模的图论问题的求解成为可能。现在,图论理论广泛应用在运筹学、计算机科学、电子学、信息论、控制论、网络理论、经济管理等领域。由于图论的重要性,越来越多的大学将图论单独作为一门课程来开设,把它作为数学、计算本文中关于图论课程教学改革的一些思想,已经发表在《计算机教育》2009年第20期上,论文题目为《计算机专业图论课程教学改革探索》,即参考文献[20获得《计算机教育》杂志社举办的“英特尔杯”20090年全国计算机教育优秀论文评比二等奖)。图论算法理论、实现及应用杋科学、电子学、管理学等专业本科生和硏究生的必修课或选修课。很多其他课程的内容也都涉及到图论知识,如离散数学、运筹学、拓扑学等。介绍图论理论的教材逐渐增多,其中也不乏优秀的教材,如文献[。这些课程和教材或者是侧重于完整的图论知识体系介绍、以及复杂的图论定理的数学证明,或者是侧重于从应用数学的角度研究图论在各领域的应用。另外,为了实现用计算杋程序求解各种应用问题,计算机科学家抽象岀许多数据结构,如栈队列、堆、树及二叉树、图等,其中图是最重要的数据结构之一,也是应用得最广的数据结构之。数据结构课程是专门硏究这些数据结枃的描述、实现及应用的课程。数据结构课程讲到图论部分时,侧重于图结构的描述、图结构的存储、少量基本的图论算法的实现等等许多学生(特别是计算机专业的学生)在学习图论时,都不满足于图论算法的手工和草稿纸演算,迫切地想知道如何用程序实现图论中的算法,以及如何将这些算法思想用来求解实际问题据作者调査统计,市面上侧重于用程序实现图论算法、并通过例题阐述图论算法思想及其应用的教材少之又少。本教材希望能弥补这一缺憾。所以本书立足于图论算法理论和思想的描述及程序实现,并以大量的 ACM/ICPC竞赛题目来阐述图论算法思想在求解这些题目中的应用。接下来简要地介绍 ACMICPC程序设计竞赛。、 ACM/ICPC程序设计竞赛1.ACMIICPCACM/ICPO( ACM International Collegiate Programming Contest,国际大学生程序设计竞赛)是由美国计算机协会ACM( Association for Computing Machinery)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,其目的旨在使大学生运用计算机来充分展示自己分析问题和解决问题的能力。该项竞赛从1977年第一次举办世界总决赛以来,至今已连续举办30多届了。该项竞赛一直受到国际各知名大学的重视,并受到全世界各著名计算机公司的高度关注。ACM/ICPC竞赛分区域预赛和总决赛两个阶段进行,各预赛区第一名自动获得参加世界总决赛的资格。世界总决赛安排在每年的3~4月举行,而区域预赛安排在上一年的9~12月在各大洲举行。ACMICPC竞赛以组队方式进行比赛,每支队伍由不超过3名队员组成,比赛时每支队伍只能使用一台计算机。在5个小时的比赛时间里,参赛队伍要解答610道指定的题目。排名时,首先根据解题数目来排名,如果多支队伍解题数量相同,则根据队伍的总用时进行排名(用时越少,排名越靠前)。每支队伍的总用时为每道解答正确的题目的用时总和。每道解答正确的题目的用时为从比赛开始计时到该题目解答被判定为正确的时间,其间每一次错误的提交运行将被加罚20分钟时间。最终未正确解答的题目不记入总时间,其提交也不加罚时间。ACMICPC竞赛在公平竞争的前提下,提供了一个让大学生充分展示用计算机解决问题的能力与才华的平台。 ACMICPC竞赛鼓励创造性和团队协作精神,鼓励在编写程序时的开拓与创新,它考验参赛选手在承受相当大的压力下所表现出来的非凡能力。竞赛所触发的大学生的竞争意识为加速培养计算机人才提供了最好的动力。竞赛中对解决问题的苛刻要求和标准使得大学生对解决问题的深度和广度展开最大程度的追求,也为计算机科学的研究和发展作了一个最好的导向。2.在线评判网站随着 ACMICPC程序设计竞赛的推广,各种程序在线评判( Online judge,简写为OJ)网站也应运而生,这为程序设计爱好者提供了一种新的程序实践方法:在线程序实践。①作者对互动出版网站(www.china-pub.com)和卓越亚马逊网站(www.amazon.cn)上列出的全部图论相关书目及目录进行了仔细的分析,从而得出的结论在线程序实践是指由OJ网站提供题目,用户在线提交程序,OJ网站的在线评判系统实时评判并反馈评判结果。这些题目一般具有较强的趣味性和挑战性,评判过程和结果也公正及时,因此能引起用户的极大兴趣。用户在解题时编写的解答程序通过网页提交给在线评判系统称为提交运行,每一次提交运行会被判为正确或者错误,判决结果会及时显示在网页上用户从评判系统收到的反馈信息包括:" Accepted程序通过评判!Compile error"—程序编译出错。" Time limit exceeded"—程序运行超过该题的时间上限还没有得到输出结果。" Memory Limit Exceeded-内存使用量超过题目里规定的上限。"outpυ ut Limit exceeded"—输出数据量过大(可能是因为陷入死循环了)。" Presentation error"—输出格式不对,可检査空格、空行等等细节。" Run Time error"—程序运行过程中出现非正常中断,如数组越界等。Wrong Answer"—用户程序的输出错误。等等。用户可以根据OJ系统反馈回来的评判结果反复修改程序,直到最终收获 Accept(程序正确)。这个过程不仅能培养用户独立分析问题、解决问题的能力,而且每成功解决一道题目都能给用户带来极大的成就感。、本书安排本书共分9章,每章内容安排如下:第1章介绍图论的一些基本概念,以及图的两种重要存储表示方法:邻接矩阵和邻接表,并初步讨论了存储方式对图论算法复杂度的影响。第2章讨论了图的遍历,遍历是很多图论算法的基础。本章介绍了两种重要的遍历方法:深度优先搜索和广度优先搜索,并对这两种遍历算法的思想、程序实现、算法复杂度作了详细的分析和讨论。本章还讨论了活动网络,包括AOV网络与拓扑排序问题、AOE网络和关键路径问题。第3章讨论树与生成树问题,主要介绍求无向连通图最小生成树的三个算法:克鲁斯卡尔( Kruskal)算法、 boruvka算法和普里姆(Prin)算法,并对这三个算法的思想、程序实现、算法复杂度作了详细的分析和讨论。另外,本章还讨论了判断生成树是否唯一的方法。第4章讨论了有向网(或无向网)中一个典型的问题:最短路径问题。本章介绍了求解最短路径问题的4个算法:Dsa算法、 Bellman-FoH算法、SPH算法和Fod算法,这4个算法分别适用于有向网(或无向网)中各边权值的取值的不同情形及问题求解的不同需要。本章着重对这4个算法的思想、递推过程、算法复杂度作了详细的讨论,并对这4个算法作了详细的对比分析。本章还介绍了求最短路径的算法思想在求解差分约束系统中的应用。第5章讨论了可行遍性问题,包括欧拉回路、汉密尔顿回路以及中国邮递员问题。前两个概念容易混淆,欧拉回路要求经过每条边一次且仅一次并回到出发点,而汉密尔顿回路要求经过每个顶点一次且仅一次并回到出发点。本章介绍这相关概念及定理,并讨论这两种回路及中国邮递员问题的求解方法和应用。第6章讨论了网络流问题。许多系统包含了流量问题,例如,公路系统中有车辆流,控制系统中有信息流,供水系统中有水流,金融系统中有现金流等等。从问题求解的需求出发,网络流问题可以分为:网络最大流,流量有上下界的网络的最大流和最小流,最小费用最大流,流量有图论算法理论、实现及应用上下界的网络的最小费用最大流等。本章介绍各种网络流问题的求解方法。第7章讨论了点支配集、点覆盖集、点独立集、边覆盖集、边独立集(匹配),这些概念之间存在一定的联系,也容易混淆。本章主要讨论了各种匹配问题,以及求解二部图最大匹配的算法程序实现和应用。第8章讨论图的连通性,这是图论中一个重要的概念。本章介绍了无向连通图和非连通图无向图的点连通性(包括割顶集、割点、顶点连通度、点双连通图等)、边连通性(包括割边集、割边、边连通度、边双连通图等)、有向图的强连通性(包括强连通、弱连通和单连通)。本章着重介绍上述概念及求解算法。第9章讨论平面图和着色问题。本章介绍了平面图和非平面图的概念、平面图的判定方法,以及图的顶点着色、边着色、平面图的面着色等概念和求解算法。四、本书读者对象及本书特点本书的读者对象为计算机专业学生或对 ACM/ICPC竞赛感兴趣的学生,可以作为高等院校计算机(或相关专业)的图论等相关课程的主教材,也可作为 ACMICPO竞赛的辅导教材。学生或读者应该具备CC艹语言知识,已经掌握了一定的程序设计思想和方法,具备一定的算法分析与设计能力,并能熟练使用数据结构。本书在内容取材、描述上具有如下特点。1)许多图论教材对图论概念的描述不一致,造成读者的阅读困难,本书试图改变这一现状。在每个概念的表述上作者査阅了大量的图论著作并进行比较分析。在本书中,作者对每个概念采用大多数图论教材采用(或约定)的名词、定义方法等。2)本书对图论算法思想的描述尽可能采用浅显易懂的语言来描述。3)本书忽略所有图论定理的证明,着重分析图论算法的思想,重点在于这些图论算法的程序实现。对图论算法的程序实现是以 ACMICPC例题来阐述的。上下两册书共收录了130余道ACMICPC竞赛题目,例题和练习题各约占一半。本书附录列出了本书所有例题和练习题在ZOJ、POJ及UVA上的题号。4)本书图表内容丰富。全书共绘制了270余幅图表,为此在目录后专门列出了本书的图录5)为方便读者阅读和使用,作者对本书中出现的图论术语、符号、图论算法及应用分别作了索引,列在本书后面五、致谢本书收录了130余道 ACMICPC竞赛题目,这些题目在阐述图论算法思想、演示图论算法应用等方面起着重要的作用,部分例题的解答程序也参考了网络上发布的一些源代码。同时,本书在编写过程中还参考了国内外多本优秀的图论教材(详见参考文献)。在此,编者对这些题目、源代码和图论教材的作者一并表示忠心的谢意。本书的编写和岀版得到了2010年浙江省教育科学规划研究课题“以大学生学科竞赛为契机推动课程群的规划与建设”(编号:SCG156)的支持,在此表示感谢。另外,本书的岀版得到了北京大学出版社的大力支持,在此表示衷心的感谢。由于作者水平有限,在编写本书时难免出错,欢迎读者指正,或者读者有什么好的建议,都可以联系编者:wguiping@163.com。不胜感激!!!编者2010年1月目录第1章图的基本概念及图的存储3.1.1树11基本概念1113.1.2森林5551.1.1有向图与无向图32生成树及最小生成树1.1.2完全图、稀疏图、稠密图321生成树1.1.3顶点与顶点、顶点与边的关系…3322最小生成树1.14顶点的度数及度序列33克鲁斯卡尔()算法1.1.5二部图与完全二部图3.3.1算法思想116图的同构332等价类与并查集1.17子图与生成树3.3.3 Kruskal算法实现118路径56778993.34Boruvka.951.19连通性3.35例题解析1.1.10权值、有向网与无向网34普里姆(Pim)算法图的存储表示341Prim算法思想106121邻接矩阵……342Prim算法实现1071.2.2邻接表15343关于普里姆算法的进一步讨论.11012.3关于邻接矩阵和邻接表的进一步344例题解析111讨论5判定最小生成树是否唯120第2章图的遍历与活动网络问题3.5.1最小生成树不唯一的原因分析.1202.1DFS遍历3.52判定最小生成树是否唯一的方法12122.1DFS算法思想4443.53例题解析212DFS算法的实现及复杂度分析……25第4章最短路径问题1272.1.3例题解析284.1边上权值非负情形的单源最短路径问题22BFS遍历Dijkstra算法12722.1BFS算法思想4.1.1算法思想12722.2BFS算法的实现及复杂度分析…414.1.2算法实现1292.2.3关于DFS算法和BFS算法的说明.434.1.3关于 Dijkstra算法的进一步讨论.1322.2.4例题解析.…434.14例题解析13323活动网络一AOV网络614.2边上权值为任意值的单源最短路径问题2.3.1AOV网络与拓扑排序61一 Bellman-Ford算法…1432.3.2拓扑排序实现方法42.1算法思想1432.3.3关于拓扑排序的进一步说明….6742.2算法实现1452.34例题解析42.3关于 Bellman-Ford算法的进一步24活动网络一AOE网络78讨论1482.4.1AOE网络与关键路径4.24例题解析2.42关键路径求解方法794.3 Bellman-Ford算法的改进一SPFA算法.161第3章树与图的生成树4.3.1算法思想….163.1树与森林…4.32算法实现图论算法理论、实现及应用4.3.3关于SPFA算法的进一步讨论…16564.1基本概念3244.34例题解析……166642最小费用最大流算法32544所有顶点之间的最短路径一Foyd算法…175644例题解析3274.4.1算法思想176第7章支配集、覆盖集、独立集与匹配3404.42算法实现…1777.1点支配集、点覆盖集、点独立集34044.3关于Foyd算法的进一步分析….1807.1.1点支配集3404.44例题解析1807.1.2点覆盖集3414.5差分约束系统7.1.3点独立集4.5.1差分约東系统与最短路径7.1.4点支配集、点覆盖集、点独立集4.52例题解析之间的联系第5章可行遍性问题2087.2点支配集、点覆盖集、点独立集的求解.34551欧拉回路2087.2.1逻辑运算34551.1基本概念及定理2087.22极小点支配集的求解34551.2欧拉回路的判定2117.2.3极小点覆盖集、极大点独立集的52欧拉回路的求解219求解52.1DFS搜索求解欧拉回路21973边覆盖集与边独立集.347522 Fleury(佛罗莱)算法.7.3.1边覆盖集….34753中国邮递员问题2337.32边独立集(匹配)54汉密尔顿回路2347.3.3最大边独立集(最大匹配)与最541基本概念及定理235小边覆盖集之间的联系5.42汉密尔顿回路求解74匹配问题350第6章网络流问题242741完美匹配3516.1网络最大流242742二部图的完备匹配与完美匹配..35161.1基本概念24274.3最佳匹配3526.1.2最大流最小割定理2477.44匹配问题求解的基本概念及思路3526.1.3网络最大流的求解2487.5二部图最大匹配问题的求解3536.1.4般增广路方法7.5.1网络流解法353Ford- Fulkerson算法2487.42匈牙利算法3556.1.5最短增广路算法2567.4.3例题解析6.16连续最短增广路算法- Dinic算法260第8章图的连通性问题.380617一般预流推进算法2628.1基本概念3806.1.8最高标号预流推进算法26581.1连通图与非连通图.3806.1.9网络最大流算法总结2668.1.2无向图的点连通性3816.1.10例题解析2668.1.3无向图的边连通性38262最小割的求解8.14无向图顶点连通性和边连通性的6.3流量有上下界的网络的最大流和最小流.300联系3846.3.1流量有上下界的容量网络8.1.5有向图的连通性6.3.2流量有上下界的网络的最大流.30382无向图点连通性的求解及应用6.3.3流量有上下界的网络的最小流.3048.21关节点的求解6.34例题解析310322重连通分量的求解64最小费用最大流323顶点连通度的求解2目录83无向图边连通性的求解及应用40192.1欧拉公式440831割边的求解401922欧拉公式的应用4418.32边双连通分量的求解4059.3平面图的判定445833边连通度的求解41294图的着色问题44684有向图强连通性的求解及应用416941地图染色与四色猜想4468.41有向图强连通分量的求解算法416942图的着色447842有向图强连通分量的应用418943图着色的应用449第9章平面图及图的着色问题4379.44图着色求解算法及例题解析…..4509.1基本概念…437索引91.1平面图与非平面图437、图论术语索引91.2区域与边界、符号索引4599.1.3极大平面图与极小非平面图.…438、图论问题及算法索引….46914平面图的对偶图439附录本书例题和练习题目录…91.5关于平面图的一些定理439参考文献92欧拉公式及其应用440

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • colorspace.m matlab程序
    该matlab程序实现各个颜色空间模型的相互转化,说明及使用示例程序中都有说明。与君共享。
    2020-12-05下载
    积分:1
  • 受限波尔兹曼机(Restricted Boltzmann Machines)介绍
    RBM在深度学习(deep learning)算法中有着非常重要的应用,本文介绍了RBM的基本概念,并介绍了几种有代表性的算法。作者西安交大张春霞,姬楠楠,王冠伟。山国武技亡文在线应用的热潮。理论方面,RBM的CD快速学习算法促进了研究者们对随机近似理论、基于能量的模型、未归一化的统计模型的研究⑧。应用方面,RBM目前已被成功地应用于不同的机器学习问题⑨-14,如分炎、回归、降维、高维时闾序列建模、图像特征提取、协同过滤等等。2006年, Hinton等人[15提出了一种深度信念网终( Deep Belief Nets,DBN),并给出了该模型的一个髙效学习算法。这个算法成为了其后至今深度学习算法的主要框架。在该算法中,个DBN模型被视为由若干个RBM堆叠在起,训练时可通过由低到高逐层训练这些RBM来实现:(1)底部RBM以原始输入数据训练;(2)将底部RBM抽取的特征作为顶部RBM的输入训练;(3)过程(1)和(2)可以重复来训练所需要的尽可能多的层数。由于RBM可以通过CD快速训练,这一框架绕过了直接从整体上训练DBN的高复杂度,从而将其化简为对多个RBM的训练冋题。 Hinton建议,经过这种方式训练后,叮以再通过传统的全局学习算法(如反向传播算法)对网络进行微调,从而使模型收敛到局部最优点。这种学习算法,本质上等同于先通过逐层RBM训练将模型的参数初始化为较优的值,再通过少量的传统学习算法进一步训练。这样一来,不仅解决了模型训练速度慢的问题,大量试验结果也表明,这种方式能够产生非常好的参数初始值,从而大大提升了模型的建模能力。自此,机器学习领域又产生了一个新的研究方向-深度学习( Deep learning)[1618],明确提出了面向人工智能的机器学习算法的设计目标。当前,以RBM为基本构成模块的DBN模型被认为是最有效的深度学习算法之一。鉴于RBM在深度学习领域中占据的核心位置以及其本身的良好性质,为了给RBM的初学者提供入门指导,同时为设计与之相关的新算法提供参考,本文将对RBM进行较为系统的介绍,详细阐述其基本模型、具有代表性的快速学习算法、参数设置、评估方法及其变形算法,最后对RBM在未来值得硏究的方向进行探讨。本文后续内容安排如下:第1节介绍受限波尔兹曼机RBM的基本模型,第2节详细阐述当前训练RBM的快速学习算法,第3节讨论RBM的参数设置,第4节给出评价RBM优劣的方法,第5节简单介绍几种具有代表性的RBM变形算法,第6是总结与展望,主要探讨RBM在未米值得研究的方向。1受限波尔兹曼机RBM的基本模型RBM也可以被视为一个无向图 undirected graph)模型,如图2所示。v为可见层,用于表示观测数据,h为隐层,可视为一些特征提取器( feature detectors),W为两层之间的连接权重。 Welling19指出,RBM中的隐单兀和可见单元可以为任意的指数族单元(即给定隐单元(可见单元,可见单元(隐单元)的分布可以为任意的指数族分布),如 softmax单元、高斯单元、泊松单元等等。这里,为了讨论方便起见,我们假设所有的可见单元和隐单元均为二值变量,即V,j,v∈{0,1},h;∈{0,1}如果一个RBM有m个可见单元和m个隐单元,用向量v和h分别表示可见单元和隐单元的状态。其中,v;表示第个可见单元的状态,h表示第个隐单元的状态。那么,对于一组给定的状国武技论义在线隐层h可见层v图2:RBM的图模型表示,层内单元之间无连接态(v,h,RBM作为一个系统所具备的能量定义为∑a"2-∑bh-∑∑上式中,O={Wn,a,b}是RBM的参数,它们均为实数。其中,W表示可见单元;与隐单元j之间的连接权重,;表小可见单元的煸置(bias),b;表小隐单元j的偏置。当参数确定时,基于该能量函数,我们可以得到(v,h)的联合概率分布,E(v, ho)P(v, h0Z(0)=∑e-E(v, h ez(6)(2其中z(0)为归一化因子(也称为配分函数, partition function)时于一个实际问题,我们最关心的是由RBM所定义的关于观测数据v的分布P(ve),即联合概率分布P(v,h)的边际分布,也称为似然函数( likelihood functionP(v8∑E(v, h 0)3)Z(0为了确定该分布,需要计算归一化因子z(),这需要2n+m次计算。因此,即使通过训练可以得到模型的参数W,α和b,我们仍旧无法有效地计算由这些参数所确定的分布。但是,由RBM的特殊结构(即层间有连接,层内无连接)可知:当给定可见单元的状态时,各隐单元的激活状态之间是条件独立的。此时,第j个隐单元的激活概率为P(h=1v,O)=o(+∑W其中,O(x)1+exp(-a)为 sigmoid激活函数由于RBM的结构是对称的,当给定隐单元的状态时,各可见单元的激活状态之间也是条件独立的,即第i个可见单元的激活概率为11)=o(a+∑Wh1国武技论义在线2基于对比散度的RBM快速学习算法学习RBM的任务是求出参数θ的值,以拟合给定的训练数据。参数0可以通过最大化RBM在训练集(偎设包含T个样本)上的对数似然函数学习得到,即A=arg max C(0)=arg max>log(6为了获得最优参数θ^,我们可以使用随札梯度上升法( stochastic gradient ascent)求C(6)=∑1lgP(vθ)的最大值。其中,关键步骤是计算logP(v()关于各个模型参数的偏导数由于c(O)=∑ log p(vo)=∑og∑Pv"),het=1∑1pBw,b∑pE(,hO)-lg∑∑oxp-E(,h)令0表示6中的某个参数,则对数似然函数关于的梯度为OC、、8(og>expl-E(v(t),h)-10e∑∑∑ep-E(v,hO)exp[-e(vo,ho) d(E(vo),h0))(Σ h exp[-E(v,hO>∑8+E(-E(v,h)06∑0(-E(v(0,hl(-E(v,h6)S06P(hv(t),0)P(v, h0)其中,()P表示求关于分布P的数学期望。P(hv),)表示在可见单元限定为已知的训练样本v()时,隐层的概率分布,故式()中的前一项比较容易计算。P(v,h0)表示可见单元与隐单元的联合分布,由于归一化因子z(θ)的存在,该分布很难获取,导致我们无法直接计算式(8)中的第二项,只能通过一些采样方法(如Gibs釆样)获取其近似值。值得指出的是,在最大化似然函数的过程中,为了加快计算速度,上述偏导数在每一迭代步中的计算一般只基于部分而非所有的训练样本进行,关丁这部分内容我们将在后面讨论RBM的参数设置时详细阐述。下面,假设只有一个训练样本,我们分别用“data”和“modl”来简记P(hv(),6)和P(v,h)这两个概率分布,则对数似然函数关于连接权重W、可见层单元的偏置a和隐层单山国科技论文在线元的偏置b;的偏导数分别为alog P(v8ihi idata -(ihi,modelalog P(v 0)datai ) modela log P(v 8=(hi)data(hi model2.1RBM中的 Gibbs采样Gibs采样( Gibbs sanpling)[20是一种基于马尔可夫链蒙特卡罗( Markov chain monteCarlo,MCMC)策略的采样方法。对于一个K维随机向量X=(X1,X2,……,Xk),假设我们无法求得关于X的联合分布P(X),但我们知道给定X的其他分量时,其第k个分量Xk的条件分布,即P(Xk|Xk),Xk-(X1,X2,…,Kk-1,Xk+1,…,Xk)。那么,我们可以从X的一个任意状态(比如{c1(0),x2(0),…,xk(O))开始,利用上述条件分布,迭代地对其分量依次采样,随着采样次数的增加,随机变量[r1(m),x2(m),…,xk(n)]的概率分布将以n的几何级数的速度收敛于X的联合概率分布P(X)。换句话说,我们可以在未知联合概率分布P(X)的条件下对其进行样。基于RBM模型的对称结构,以及其中神经元状态的条件独立性,我们可以使用 Gibbs采样方法得到服从RBM定义的分布的随机样本。在RBM中进行k步吉布斯采样的具体算法为:用一个训练样本(或可见层的任何随机化状态)初始化可见层的状态v,交替进行如下采样:ho w P(h vo), V1 P(v ho),h1 n P(hv1),P(vhP(v hk)在采样步数k足够大的情况下,我们可以得到服从RBM所定义的分布的样本。此外,使用Gib样我们也可以得到式(8)中第二项的一个近似。22基于对比散度的快速学习算法尽管利用吉布斯采样我们可以得到对数似然函数关于未知参数梯度的近似,但通常情况下需要使用较大的采样步数,这使得RBM的训练效率仍旧不高,尤其是当观测数据的特征维数较高时。2002年, Hinton7提出了RBM的一个快速学习算法,即对比散度( Contrastive DivergenceCD)。与吉布斯采样不同, Hinton指出当使用训练数据初始化vo时,我们仅需要使用k(通常k=1)步吉布斯采样使可以得到足够好的近似。在CD算法一开始,可见单元的状态被设置成个训练样本,并利用式(4)计算所有隐层单元的二值状态。在所有隐层单元的状态确定之后,根据式(5)来确定第个可见单元v;取值为1的概率,进而产生可见层的一个重构 reconstruction)国武技论义在线这样,在使用随杋悌度上升法最大化对数似然函数在训练数据上的值时,各参数的更新准则为△Wx=(vh;)ata-(vhrecondata这里,是学习率( (learning rate),{}reon表示一步重构后模型定义的分布在RBM中,可见单元数一般等于训练数据的特征维数,而隐单元数需要事先给定。为了与前文记号致,假设可见单元数和隐单元数分别为和m。令W表示可见层与隐层间的连接权重矩阵(m×m阶),a(n维列向量)和b(m维列向量分别表示可见层与隐层的偏置向量。RBM的基于CID的快速学习算法主要步骤可描述如下输入:一个训练样本xo;隐层单元个数灬m;学习率e;最大训练周期T●输出:连接权重矩阵W、可见层的偏置向量a、隐层的偏置向量b.·训练阶段初始化:令可见层单元的初始状态v1=x0;W、a和b为随机的较小数值。For t=1.2TFor j=1,2,…,m(对所有隐单元)计算P(h1=11),即P(h1;=1v1)=0(b+∑,从条件分布P(h1v)中抽取h∈{0,1}EndFor上ori=1,2,……,m(对所有可见单元计算P1h1,即P(v2=1h1)=0(a+∑,Wh1);从条件分布P(v2h1)中抽取v2∈{0,1}EndOForj=1.2,…,m(对所有隐单元)计算P(h2=1v2),即P(h2y=1lv2)=a(b;+∑;2:W7);Endfor按下式更新各个参数W←W+∈(P(h1.=1v1)lv2)V2);a←-a+((v1-v2);+c(P(h1=1v1)-P(h=1)v2)山国科技论文在线Endfor算法1.RBⅥ的基于CD的快速学习算法主要步骤在上述算法中,记号P(hk.=1|vk)(k=1,2)是m维列向量,其第个元素为P(h;=1vk)尽管上述基于CD的学习算法是针对RBM的可见单元和隐层单元均为二值变量的情形提出的,但很容易推广到可见层单元为高斯变量、可见层和隐层单元均为高斯变量等其他情形,关于这方面的研究具体可参见[2125此外,还有一些研究者在CD算法的基础上,对其作了进一步改进。例如, Tieleman②26提出了持续对比散度( Persistent contrastive divergence,PCD)算法,该算法与CD的区别在于首先,PCD不再使用训练数据初始化CD算法中的 Gibbs采样的马氏链;其次,PCD算法中的学习率较小且不断衰减。根据随机近似理论,尽管每次更新参数后模型都发生了改变(每次对于W,a和b的更新,RBM定义的分布都会发生改变),但由于学习率较小且不断衰减,则可认为那条马氏链产生的负样本是由当前RBM定义的分布的一个近似分布米样而来Tieleman和 Hinton[27进一步改进了PCD算法,他们通过引入一组辅助参数以加快PCD中的马氏链的混合率,提出了快速持续对比散度( Fast Persistent Contrastive Divergence,FPCD)算法。关于RBM的学习算法,除了上述提到的基于CD的一些方法之外,还有最大化拟似然函数( maximum pseudo- likelihood)、比率匹配方法 (ratio matching)等,有兴趣的读者可参阅[28]查找关于RBM学习算法比较详细的阐述。3RBM的参数设置RBM的训练通常是基于CD的方法(即算法1)进行的,但如何设置其中的些参数(如隐单元个数、学习率、参数的初始值等),是需要有一定经验的。近来,已有部分研究结果②29,30表明:对于特定的数据集和RBM结构,如果参数设置不合适,RBM将很难对真正的数据分布正确建模。因此,对实际使用者(尤其是初学者)米说,了解RBM中参数设置的一般规则是非常重要的。根据 Hinton{23]提供的建议以及我们进行数值试验所获部分经验,对RBM中的参数设置可参考以下规则。小批量数据及其容量对于连接权重、可见层和隐层偏置的更新,虽然可以基于一个训练样本进行(类似于在线学习的方式),但计算量将很大。将训练集事先分成包含几|或几百个样本的小批量数据(mini- batches)进行计算将更高效,这主要是可以利用图形处珥器GPU( graphicProcessing Unit)或 Matlab屮矩阵之间相乘运算的优势。同时,为了避免在小批量数据的样本容量发生改变时,学习率也必须做相应的修改,通常的做法是在参数的更新过程中,使用参数的平均梯度(即总梯度除以数据容量),即B(t+1(t+1)=0(+∑alog P(v(t)aB06t′=Bt+1这里,B表示小批量数据的容量,其值不应设得太大。B=1表示参数更新以在线学习的方式进行,而B一T则表示传统的批处理方式。一股而言,若训练集是包含来自不同类(具有同等概山国武技亡文在线率)的样本,理想的B应为总类数、使得每批数据屮都包含来自每个类的一个样本,以减小悌度估计的抽样误差。对于其他数据集.则可先随机化训练样本的次序,再将其分为容量为10的倍数的小批量数据。学习率学习率若过大,将导致重构误差急剧增加,权重也会变得异常大。设置学习率的一般做法是先做权重更新和权重的直方图,令权重更新量为权重的10-3倍左右。如果有一个单元的输入值很大,则权重更新应再小些,因为同·方向上较多小的波动很容易改变梯度的符号。相反地,对于偏置,其权重更新可以大一些。权重和偏置的初始值一般地、连接权重W可初始化为来自正态分布N(0,0.01)的随机数,隐单元的偏置b初始化为0。对于第讠个可见单元,其偏置az通常初始化为logP/(1-p),其中γ;表示训练样本中第讠个特征处于激活状态所占的比率。如果不这样做,在学习的早期阶段,RBM会利用隐单元使得第个特征以概率p处于激活状态。动量学习率学习率e的选择至关重要.ξ大收敛速度快,但过大可能引起算法不稳定;c小可避免不稳定情况的出现,但收敛速度较慢。为克服这一矛盾,一种具有代表性的思想是在参数更新式中增加动量项 momentum),使本次参数值修改的方向不完全由当前样本下的似然函数梯度方向决定,而采用上一次参数值修改方向与本次梯度方向的组合。在某些情况下,这可以避免算法过早地收敛到局部最优点。以连接权重参数W为例,其更新公式为W(+D)kw(t)aL(t)其中k为动量项学习率。开始时,k可设为0.5,在重构误差处于平稳增加状态时,k可取为0.9权衰减使用权衰减( weight- decay)策略的主要目的是避免学习过程出现过拟合( overfitting)现象,一般做法是在正常的梯度项后额外增加一项,以对较大的参数值作出惩罚。最简单的罚函数是2函数(M/2)>∑,W,即所有权重参数的平方和的1/2乘上一个正则化系数入入在RBM中又称为权损失( weight-cost)。重要的是,惩罚项关于权重参数的梯度必须乘上学习率,否则.学习率的改变将导致优化的目标函数也发生改变。在RBM中,若使用L2罚函数,贝权损失系数的取值可以取介于001与0.0001之间的任意值。值得指出的是,权衰减策略只需应用于连接权重参数W上,可见层和隐层偏置不需使用,因为它们不人可能导致过拟合。并且在某些情况下,偏置的值还必须较大才行隐单元个数如果我们关心的主要目标是避免过拟合而不是计算复杂度,则可以先估算一下用个好的模型描述一个数据所需的比特数,月其乘上训练集容量。基于所得的数,选择比其低个数量级的值作为隐元个数。如果训练数据是高度冗氽的(比如数据集容量非常大),则可以使用更少些的隐元。以上讨论的是RBM中的一些常用的参数设置,针对一个实际问题,应使用什么类型的可见单元和隐单元,在其中如何加入稀疏性使得隐单元只在少数情况下处于激活状态等问题的讨论,可参见文[23,31]山国科技论文在线4RBM的评估算法对于一个已经学习得到或正在学习中的RBM,应通过何种指标评价其优劣呢?显然,最简单的指标就是该RBM在训练数据上的似然度C()=∑1logP(v(()。但是,C(0)的计算涉及到归一化常数(),而这个值是无法通过数学方法直接解析得到的,但我们又不可能枚举RBM的所有状态。因此,只能采用近似方法对RBM进行评估。4.1重构误差所谓“重构误差”( reconstruction error),就是以训练数据作为初始状态,根据RBM的分布进行一次 Gibbs采样后所获样本与原数据的差异(一般用一范数或二范数来评估)Error=0初始化误差for all y(),t∈{1,2,…,T}do%对每个训练样本y(进行以下计算h N P(v()%对隐层采样ⅴ~P(h%对可见层采样Error=Eror+‖v-v)‖%累计当前误差end forreturn上mOP%返回总误差算法2.重构误差的计算.重构误差能够在一定程度上反映RBM对训练数据的似然度,不过并不完全可靠[23。但总的来说,重构误差的计算十分简单,因此在实践中非常有用。4.2退火式重要性采样退火式重要性采样”( Annealed Importance Sampling,AIS)图2是目前比较主流的RBM评估方法。它的想法非常直接,就是利用蒙特卡岁方法估计RBM对数据的似然度。只不过没有使用MCMC,而是通过一种叫做“重要性采样”( Importance Sampling)[20的算法进行逼近。这种算法的优点在于:当目标分布十分陡峭时,不直接对其进行采样,而是引入另一个简单的分布,在这个简单的分布上采样。然后,利用采样所获样本和两个分布之间的关系对原分布上的均值进行估算。“重要性抽样”的基本思想如下:假设我们要计算某个分布P4(x)的归一化常数ZA,那么,我们可以引入另一个状态空间相同,但更容易采样的分布PB(x),并且事先知道它的归化常数zB。这时,只要能计算出zA/zB的值,我们就可以算出原分布的归一化常数ZA。假
    2020-12-04下载
    积分:1
  • 六轴机械臂正解(FK)和逆解(IK)算法
    整理出了如下几个计算六轴机械臂正解和逆解的关键点:01_机器人坐标系和关节的说明02_算法坐标系的建立03_D-H参数表的建立04_FK(正解)算法05_Matlab辅助计算FK(正解)06_IK(逆解)算法07_Matlab辅助计算IK(逆解)文档中针对FK以及IK算法的推导均有详细的推导过程。希望各位能根据推导过程写出自己的代码。图1针对机器人的关节坐标系,我们还需要规定各个关节的转动方向,如下图所示,我们依次描叙了各个关节的正负方向。在关节坐标系下,机器人各个关节的转动方向,必须和下图相符图22.机器人直角坐标系目前所说的直角坐标系是机器人的工具坐标系,如下图所示,因为该机器人没有安装执行末端,所以,工具坐标系原点在第六轴末端法兰中心处,红色箭头是Ⅹ轴,蓝色箭头是乙轴,根据右手定则确定Y轴方向@图3基坐标系所在的位置是定义机器人基座的位置,如上图所示,坐标系原点在第一关节的中心处,红色箭头所示为Ⅹ轴,蓝色箭头所示为乙轴,根据右手定则,即可确定Y轴的方向。具体如上图旁边那个坐标系所示。当我们说六轴机械臂位姿时,说的是六轴机械臂末端的位姿,该位姿包括六个参数,分别为Ⅹ YZABC。六轴机械臂未端的位姿是以基坐标系作为参考坐标系的:笛卡尔坐标系的Ⅹ轴,Ⅹ轴距离Y:笛卡尔坐标系的Y轴,Y轴距离Z:笛卡尔坐标系的Z轴,z轴距离A:XY-Z固定角坐标系下的偏转角B:X-Y-Z固定角坐标系下的俯仰角C:XY-Z固定角坐标系下的回转角ZA2呈Ax图如上图所示,A对应第一个坐标系中的γ,B对应第二个坐标系中的β,C对应第三个坐标系中的Q。为什么我们需要花费专门的一节来讲解六轴机器人的坐标系和关节?因为我们后续要学习的FK和就是以这个为基础的。FK是已知六轴机械臂在关节坐标系下各个关节转动的角度,然后求解直角坐标系下的Ⅹ YZABOK是已知六轴杋械臂在直角坐标系下的 XYZABO,然后求解关节坐标系下各个关节转动的角度二.算法坐标系的建立为了得出D-H参数表,我们首先需要针对六轴机器人的各个关节建立坐标系,在固定的坐标系下,才能最终得出连杆之间的变换关系,从而建立D-H参数表。82个2算法坐标系确定的通用方法如下1)坐标系的Z轴,与各个关节的旋转中心轴线重合2)坐标系的X轴,与沿着相邻两个z轴的公垂线重合3〕坐标系的Y轴,可以通过右手定则来确定当相邻两个z轴相交时,确定坐标系的方法如下1)坐标系的Y轴,沿着第一个Z轴与下一个z轴相交的延长线为Y轴2)坐标系的Ⅹ轴,通过右手定则确定当相邻两个Z轴平行时,确定坐标系的方法如下1)坐标系Ⅹ轴,相邻两个乙轴平行,做两个乙轴的公垂线,相交于下一个z轴为Ⅹ轴,方向为第一个Z轴到下一个Z轴的方向2)坐标系Y轴,通过右手定则确定三.D-H参数表的建立D-H参数表,实际上是相邻各个关节坐标的变换关系表,根据之前针对各个关节所建立的丛标系,按照如下四条变换规则,即可得到D-H参数表。变换规则1)绕Z轴,旋转9n+1n与Xn+1平行(方向一致))沿Zn轴,平移与Xn+1共线3)沿Xn轴,平移aAn与Xn+1原点重4)将Zn绕Xn+1轴,旋转αn+1Zn与Zn+1共线建立D-H参数表的详细步骤第一步,从第一关节到第二关节之间的变换绕z轴,旋转0度,让X0与X1平行且方向一致沿z轴,平移242,让Ⅺ0与X1共线沿Ⅺ轴,平移0,Ⅺ与X1原点重合将石绕X1轴,旋转90度,Z0与z1共线第二步,从第二关节到第三关节之前的交化绕z1轴,旋转90度,让X1与X2平行且方向一致沿Z1轴,平移0,让X1与X2共线沿X1轴,平移225,X1与X2原点重合将Z1绕X2轴,旋转0度,Z1与Z2共线第三步:从第三关节到第四关节之间的交换绕z2轴,旋转0度,让X2与X3平行且方向一致沿Z2轴,平移0,让Ⅹ2与X3共线沿X2轴,平移0,X2与X3原点重合将Z2绕X3轴,旋转90度,Z2与z3共线第四步:从第四关节到第五关节之间的变换绕z3轴,旋转0度让X3与X4平行且方向一致沿3轴,平移22886,让X3与X4共线沿3轴,平移0,X3与X4原点重合将Z3绕X1轴,旋转90度,Z3与Z1共线第五步:从第五关节到第六关节之间的变换绕Z4轴,旋转90度,让X4与X5平行且方向一致沿Z4轴,平移0,让X4与X共线沿X轴,平移0,X1与K5原点重合将Z4绕X5轴,旋转90度,Z4与z共线第六步:从第六关节到未端之间的变换绕z轴,旋转0度,让X5与X6平行且方向一致沿z轴,平移-50,让X5与X6共线沿X轴,平移0,X5与K6原点重合将z绕X轴,旋转0度,Z5与z6共线根据上图所示机械臂的尺寸参数以及以上六个步骤的变换,D-H参数表如下所示420901-202253-4228.864-5900900-500四.正解(FK)算法根据连杆变换规贝T=R(Z, B1*T(Z, di)*T(X, ai)*R(X, ai)6;00因为R(Z06:00100000aT(Z,a1)=00001000011000T(xa10100001d0001000 caROX. a)= osa oa;0001根据以上矩阵变换,可以得到如下连杆变换的通用矩阵如下Bi -se, ca s0,sa, a,c61s0 ce:cad sa asa0 saca d00根据以上连杆变换的通用矩阵和之前的D-H参数表,可以得到如下δ个连杆变换矩阵e10s61^0S0 0T6100102420001s20-22S620225c62000001620s60b203001000040s日4000c0 0010228.860001s50c650C650s650000006-s6006000C001-40FK算法需要解决的问题是:已知各个关节的转动角度,需要求出末端的位姿。已知:(61,2,θ3,θ4,θs,θ6求解:(X,Y,乙,A,B,C)计算公式如下所示13机器末端的位姿矩阵为72272313273300011722723py07*1T2T*37*4T5Tp000在以上的推导过程中,、T、2、37、4、7分别为相对于01、02、63、64、6s、的已知量。由此可以求解出位置变量(pPP)以及姿态变量a1T2723五. Matlab辅助计算正解(FK)根据上一章,我们有如下结论10s10100102420001s2-c620-225s6CS20225C60010
    2020-12-05下载
    积分:1
  • 蚁群算法TSP问题工具箱
    功能比较齐全的蚁群算法工具箱,包含测试数据,自我介绍文件,对源数据进行处理的程序,对数据处理后可以使用蚁群算法进行TSP问题的研究,最后绘制路径图,本工具箱使用matlab代码编写。是你研究蚁群算法不可多得的助手。
    2020-12-08下载
    积分:1
  • 设置列表控件(ListCtrl)各种颜色
    设置列表控件(ListCtrl)各种颜色,VS2005,VC/MFC.//设置奇数行背景颜色void SetOddItemBkColor(COLORREF color,BOOL bDraw);//设置偶数行背景颜色void SetEvenItemBkColor(COLORREF color,BOOL bDraw);//设置热点行背景颜色void SetHoverItemBkColor(COLORREF color,BOOL bDraw);//设置选中行背景颜色void SetSelectItemBkColor(COLORREF color,BOOL bDraw);//设置奇数
    2020-11-30下载
    积分:1
  • 在线教学系统网站开发源代码+视屏讲解
    在线教学系统网站开发源代码+视屏讲解,包括软件的安装指导,配置的更改,系统用到的代码和视屏的讲解
    2020-12-06下载
    积分:1
  • 单片机RS485多路数据采集系统
    本设计采用单片机控制和RS485通信系统,包括一台主机和8台子机。主机采用图形液晶显示模块,能够显示子机传输过来的0~2V电压值、采集现场温度、实时时钟、电压超限报警等,同时可以使用键盘输入控制主机的工作状态。从机采用 位A/D,负责采集八路0~2V直流电压,采集精度可以达到0.1%以上,并且可以采集现场温度,同时应答主机发送的命令,将采集的数据上传,主机具有数据保存功能,并且掉电不丢失。在主机与从机的通讯中,采用RS485总线通信方式,有效传输距离超过100米。
    2021-05-06下载
    积分:1
  • 图像去雾算法及matlab程序实例
    图像去雾算法及matlab程序实例包括直方图处理、去噪、平滑等相关算法的代码实例
    2020-06-27下载
    积分:1
  • 北京大学模式识别导论课件作业答案集锦
    北京大学信息科学技术学院智能科学系大三课程《模式识别导论》课件作业答案集锦集锦。 基本信息: 2014秋 封举富老师 包含书面作业,上机作业 课件ppt
    2020-12-07下载
    积分:1
  • 车牌识别车牌识别 matlab
    因为要做课程设计的缘故,认真的对车牌识别系统,进行研究。网上的许多资料给了我非常大的帮助,所以本人也把自己研究实现的系统发到网上,给大家更多帮助!
    2020-12-09下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载