1、问题描述 12、问题分析 13、词法分析 13.1总体分析 13.2具体分析 14、文法描述 25、语法分析方法描述及语法分析表设计 36、中间代码形式的描述及中间代码序列的结构设计 37、详细的算法描述 47.1主要的词法分析如下 47.2主要的词法分析及三地址形式分析如下 68、软件测试方法和测试结果 108.1软件测试方法 108.2测试结果 109、收获与心得 1310、参考文献 1411、附源代码 14
2024/5/26 20:04:20 972KB 武汉理工 if-else 编译原理
1
图像处理中,已知一系列圆上的点,计算圆心和半径。
具体算法描述可以参考文献以下文献。
岳健《一种改进的Hough圆检测算法》应用科技2006年本类完全按照以上文献描述的算法编写。
2024/2/7 0:44:09 12KB C# Hough
1
图像拼接的综述、各种算法描述,算是对自己学习的一个交代
2024/1/19 17:04:57 542KB 图像拼接 算法
1
写文章描述算法的latex模板,简单实用
2023/11/7 14:14:19 25KB 算法描述 latex
1
1.对于二叉排序树,下面的说法()是正确的。
A.二叉排序树是动态树表,查找不成功时插入新结点时,会引起树的重新分裂和组合B.对二叉排序树进行层序遍历可得到有序序列C.用逐点插入法构造二叉排序树时,若先后插入的关键字有序,二叉排序树的深度最大D.在二叉排序树中进行查找,关键字的比较次数不超过结点数的1/22.在有n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为()。
A.O(n)B.O(log2n)C.O(n*log2n)D.O(n2)3.静态查找与动态查找的根本区别在于()。
A.它们的逻辑结构不一样B.施加在其上的操作不同C.所包含的数据元素类型不一样D.存储实现不一样4.已知一个有序表为{12,18,24,35,47,50,62,83,90,115,134},当折半查找值为90的元素时,经过()次比较后查找成功。
A.2B.3C.4D.55.已知数据序列为(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵二叉排序树,则该树的深度为()。
A.4B.5C.6D.76.设散列表表长m=14,散列函数H(k)=kmod11。
表中已有15,38,61,84四个元素,如果用线性探测法处理冲突,则元素49的存储地址是()。
A.8B.3C.5D.97.平衡二叉树的查找效率呈()数量级。
A.常数阶B.线性阶C.对数阶D.平方阶8.设输入序列为{20,11,12,…},构造一棵平衡二叉树,当插入值为12的结点时发生了不平衡,则应该进行的平衡旋转是()。
A.LLB.LRC.RLD.RR二、填空题(每空3分,共24分)。
1.在有序表A[1..18]中,采用二分查找算法查找元素值等于A[7]的元素,所比较过的元素的下标依次为。
2.利用逐点插入法建立序列(61,75,44,99,77,30,36,45)对应的二叉排序树以后,查找元素36要进行次元素间的比较,查找序列为。
3.用顺序查找法在长度为n的线性表中进行查找,在等概率情况下,查找成功的平均比较次数是。
4.二分查找算法描述如下:intSearch_Bin(SSTST,KTkey){low=1;high=ST.length;while(low<=high){mid=(low+high)/2;if(key==ST.elem[mid].key)returnmid;elseif(key<ST.elem[mid].key);else;}return0;}5.链式二叉树的定义如下:typedefstructBtn{TElemTypedata;;}BTN,*BT;6.在有n个叶子结点的哈夫曼树中,总结点数是。
三、综合题(共52分)。
1.(共12分)假定关键字输入序列为19,21,47,32,8,23,41,45,40,画出建立二叉平衡树的过程。
2.(共15分)有关键字{13,28,31,15,49,36,22,50,35,18,48,20},Hash函数为H=keymod13,冲突解决策略为链地址法,请构造Hash表(12分),并计算平均查找长度(3分)。
ASL=3.(共10分)设关键字码序列{20,35,40,15,30,25},给出平衡二叉树的构造过程。
4.(共15分)设哈希表长为m=13,散列函数为H(k)=kmod11,关键字序列为5,7,16,12,11,21,31,51,17
2023/10/29 19:17:51 88KB 数据结构 第九章  查找 作业
1
本书对数据挖掘的基本算法进行了系统介绍,每种算法不仅介绍了算法的基本原理,而且配有大量例题以及源代码,并对源代码进行了分析,这种理论和实践相结合的方式有助于读者较好地理解和掌握抽象的数据挖掘算法。
全书共分11章,内容同时涵盖了数据预处理、关联规则挖掘算法、分类算法和聚类算法,具体章节包括绪论、数据预处理、关联规则挖掘、决策树分类算法、贝叶斯分类算法、人工神经网络算法、支持向量机、Kmeans聚类算法、K中心点聚类算法、神经网络聚类算法以及数据挖掘的发展等内容。
本书可作为高等院校数据挖掘课程的教材,也可以作为从事数据挖掘工作以及其他相关工程技术工作人员的参考书。
第1章绪论11.1数据挖掘的概念11.2数据挖掘的历史及发展11.3数据挖掘的研究内容及功能51.3.1数据挖掘的研究内容51.3.2数据挖掘的功能61.4数据挖掘的常用技术及工具91.4.1数据挖掘的常用技术91.4.2数据挖掘的工具121.5数据挖掘的应用热点121.6小结14思考题15第2章数据预处理162.1数据预处理的目的162.2数据清理182.2.1填充缺失值182.2.2光滑噪声数据182.2.3数据清理过程192.3数据集成和数据变换202.3.1数据集成202.3.2数据变换212.4数据归约232.4.1数据立方体聚集232.4.2维归约232.4.3数据压缩242.4.4数值归约252.4.5数据离散化与概念分层282.5特征选择与提取302.5.1特征选择302.5.2特征提取312.6小结33思考题33第3章关联规则挖掘353.1基本概念353.2关联规则挖掘算法——Apriori算法原理363.3Apriori算法实例分析383.4Apriori算法源程序分析413.5Apriori算法的特点及应用503.5.1Apriori算法特点503.5.2Apriori算法应用513.6小结52思考题52第4章决策树分类算法544.1基本概念544.1.1决策树分类算法概述544.1.2决策树基本算法概述544.2决策树分类算法——ID3算法原理564.2.1ID3算法原理564.2.2熵和信息增益574.2.3ID3算法594.3ID3算法实例分析604.4ID3算法源程序分析644.5ID3算法的特点及应用724.5.1ID3算法特点724.5.2ID3算法应用724.6决策树分类算法——C4.5算法原理734.6.1C4.5算法734.6.2C4.5算法的伪代码754.7C4.5算法实例分析764.8C4.5算法源程序分析774.9C4.5算法的特点及应用1014.9.1C4.5算法特点1014.9.2C4.5算法应用1014.10小结102思考题102第5章贝叶斯分类算法1035.1基本概念1035.1.1主观概率1035.1.2贝叶斯定理1045.2贝叶斯分类算法原理1055.2.1朴素贝叶斯分类模型1055.2.2贝叶斯信念网络1075.3贝叶斯算法实例分析1105.3.1朴素贝叶斯分类器1105.3.2BBN1125.4贝叶斯算法源程序分析1145.5贝叶斯算法特点及应用1195.5.1朴素贝叶斯分类算法1195.5.2贝叶斯信念网120思考题121第6章人工神经网络算法1226.1基本概念1226.1.1生物神经元模型1226.1.2人工神经元模型1236.1.3主要的神经网络模型1246.2BP算法原理1266.2.1Delta学习规则的基本原理1266.2.2BP网络的结构1266.2.3BP网络的算法描述1276.2.4标准BP网络的工作过程1296.3BP算法实例分析1306.4BP算法源程序分析1346.5BP算法的特点及应用1436.5.1BP算法特点1436.5.2BP算法应用1446.6小结145思考题145第7章支持向量机146
2023/9/24 16:34:35 31.33MB 数据挖掘 算法 数据仓库
1
作  者:徐子珊著出版社:人民邮电出版社ISBN:9787115228376出版时间:2010-06-01版  次:1页  数:409装  帧:平装开  本:16开国内算法界著名学者、计算理论学组组长朱洪教授推荐。
  本算法教材文笔顺畅,处理算法描述的两难问题有自己的特点,且具有丰富的C、C++和Java实现程序,这对读者学以致用很有帮助。
《算法设计、分析与实现从入门到精通:C、C++和Java》还有一个特点,文采甚好,如集腋成裘、化整为零、赢得舞伴等,生动形象,易于学习和理解。
《算法设计、分析与实现从入门到精通:C、C++和Java》插图也精美,如Hanoi塔图等,都给《算法设计、分析与实现从入门到精通:C、C++和Java》增色很多,让读者在兴趣中学习。
此书在应用性例题上,兼有中、英文描述题目,如环法自行车赛、牛牛玩牌、射雕英雄等例题。
这些例题来自ACM/ICPC,它们富有挑战性,可引起读者的学习兴趣。
  38个经典范例,包括渐增型算法、分治算法、动态规划算法、贪婪算法、回溯算法、线性规划算法和计算几何等算法设计和实现技巧。
  26个国际大学生程序设计竞赛真题的详细解析及算法的应用。
  3种主流语言(C、C++和Java)实现算法范例程序。
内容简介  《算法设计、分析与实现从入门到精通:C、C++和Java》第1章~第6章按算法设计技巧分成渐增型算法、分治算法、动态规划算法、贪婪算法、回溯算法和图的搜索算法。
每章针对一些经典问题给出解决问题的算法,并分析算法的时间复杂度。
这样对于初学者来说,按照算法的设计方法划分,算法思想的阐述比较集中,有利于快速入门理解算法的精髓所在。
一旦具备了算法设计的基本方法,按应用领域划分专题深入学习,读者可以结合已学的方法综合起来解决比较复杂的问题。
《算法设计、分析与实现从入门到精通:C、C++和Java》第7章的线性规划和第8章的计算几何是综合算法部分,通过学习这些内容,读者将进一步地学习更前沿的随机算法、近似算法和并行算法等现代算法设计方法和实战技巧。
  《算法设计、分析与实现从入门到精通:C、C++和Java》特色是按照算法之间逻辑关系编排学习顺序,并对每一个经典算法,都给出了完整的C/C++/Java三种主流编程语言的实现程序,是一本既能让读者清晰、轻松地理解算法思想,又能让读者编程实现算法的实用书籍。
建议读者对照《算法设计、分析与实现从入门到精通:C、C++和Java》在计算机上自己创建项目、文件,进行录入、调试程序等操作,从中体会算法思想的精髓,体验编程成功带来的乐趣。
目录第1章集腋成裘——渐增型算法11.1算法设计与分析11.2插入排序算法41.2.1算法描述与分析41.2.2程序实现61.2.3应用——赢得舞伴301.3两个有序序列的合并算法321.3.1算法描述与分析321.3.2程序实现341.4序列的划分451.4.1算法描述与分析451.4.2程序实现461.5小结52第2章化整为零——分治算法532.1Hanoi塔问题与递归算法532.1.1算法的描述与分析532.1.2程序实现562.1.3应用——新Hanoi塔游戏592.2归并排序算法622.2.1算法描述与分析622.2.2程序实现632.2.3应用——让舞伴更开心692.3快速排序算法702.3.1算法描述与分析702.3.2程序实现722.4堆的实现792.4.1堆的概念及其创建792.4.2程序实现832.5堆排序882.5.1算法描述与分析882.5.2程序实现892.6基于二叉堆的优先队列942.6.1算法描述与分析942.6.2程序实现952.7关于排序算法1052.7.1比较型排序算法的时间复杂度1052.7.2C/C++/Java提供的排序函数(方法)1072.7.3应用——环法自行车赛1082.8小结109第3章记表备查——动态规划算法1113.1矩阵链乘法1123.1.1算法描述与分析1123.1.2程序实现1153.1.3应用——牛牛玩牌1213.2最长公共子序列1233.2.1算法描述与分析1233.2.2程序实现1263.2.3算法的应用1323.30-1背包问题1363.3.1算法描述与分析1363.3.2程序实现1383.3.3算法的应用1423.4带权有向图中任意两点间的最短路径1443.4.1算法描述与分析1
2023/9/13 5:28:44 41.66MB 算法设计 C C++和JAVA
1
作者:徐子珊  本算法教材文笔顺畅,处理算法描述的两难问题有自己的特点,且具有丰富的C、C++和Java实现程序,这对读者学以致用很有帮助。
本书还有一个特点,文采甚好,如集腋成裘、化整为零、赢得舞伴等,生动形象,易于学习和理解。
本书插图也精美,如Hanoi塔图等,都给本书增色很多,让读者在兴趣中学习。
此书在应用性例题上,兼有中、英文描述题目,如环法自行车赛、牛牛玩牌、射雕英雄等例题。
这些例题来自ACM/ICPC,它们富有挑战性,可引起读者的学习兴趣。
  本书第1章~第6章按算法设计技巧分成渐增型算法、分治算法、动态规划算法、贪婪算法、回溯算法  点击此处添加图片说明和图的搜索算法。
每章针对一些经典问题给出解决问题的算法,并分析算法的时间复杂度。
这样对于初学者来说,按照算法的设计方法划分,算法思想的阐述比较集中,有利于快速入门理解算法的精髓所在。
一旦具备了算法设计的基本方法,按应用领域划分专题深入学习,读者可以结合已学的方法综合起来解决比较复杂的问题。
本书第7章的线性规划和第8章的计算几何是综合算法部分,通过学习这些内容,读者将进一步地学习更前沿的随机算法、近似算法和并行算法等现代算法设计方法和实战技巧。
  本书特色是按照算法之间逻辑关系编排学习顺序,并对每一个经典算法,都给出了完整的C/C++/Java三种主流编程语言的实现程序,是一本既能让读者清晰、轻松地理解算法思想,又能让读者编程实现算法的实用书籍。
建议读者对照本书在计算机上自己创建项目、文件,进行录入、调试程序等操作,从中体会算法思想的精髓,体验编程成功带来的乐趣。
1
【实验目的】1.理解死锁的概念;
2.用高级语言编写和调试一个银行家算法程序,以加深对死锁的理解。
【实验准备】1.产生死锁的原因竞争资源引起的死锁进程推进顺序不当引起死锁2.产生死锁的必要条件互斥条件请求和保持条件不剥夺条件环路等待条件3.处理死锁的基本方法预防死锁避免死锁检测死锁解除死锁【实验内容】1.实验原理银行家算法是从当前状态出发,逐个按安全序列检查各客户中谁能完成其工作,然后假定其完成工作且归还全部贷款,再进而检查下一个能完成工作的客户。
如果所有客户都能完成工作,则找到一个安全序列,银行家才是安全的。
与预防死锁的几种方法相比较,限制条件少,资源利用程度提高了。
缺点:该算法要求客户数保持固定不变,这在多道程序系统中是难以做到的;
该算法保证所有客户在有限的时间内得到满足,但实时客户要求快速响应,所以要考虑这个因素;
由于要寻找一个安全序列,实际上增加了系统的开销.Bankeralgorithm最重要的一点是:保证操作系统的安全状态!这也是操作系统判断是否分配给一个进程资源的标准!那什么是安全状态?举个小例子,进程P需要申请8个资源(假设都是一样的),已经申请了5个资源,还差3个资源。
若这个时候操作系统还剩下2个资源。
很显然,这个时候操作系统无论如何都不能再分配资源给进程P了,因为即使全部给了他也不够,还很可能会造成死锁。
若这个时候操作系统还有3个资源,无论P这一次申请几个资源,操作系统都可以满足他,因为操作系统可以保证P不死锁,只要他不把剩余的资源分配给别人,进程P就一定能顺利完成任务。
2.实验题目设计五个进程{P0,P1,P2,P3,P4}共享三类资源{A,B,C}的系统,{A,B,C}的资源数量分别为10,5,7。
进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。
要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;
显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。
3.算法描述我们引入了两个向量:Resourse(资源总量)、Available(剩余资源量)以及两个矩阵:Claim(每个进程的最大需求量)、Allocation(已为每个进程分配的数量)。
它们共同构成了任一时刻系统对资源的分配状态。
向量模型:R1R2R3矩阵模型:R1R2P1P2P3这里,我们设置另外一个矩阵:各个进程尚需资源量(Need),可以看出Need=Claim–Allocation(每个进程的最大需求量-剩余资源量)因此,我们可以这样描述银行家算法:设Request[i]是进程Pi的请求向量。
如果Request[i,j]=k,表示Pi需k个Rj类资源。
当Pi发出资源请求后,系统按下述步骤进行检查:(1)if(Request[i]<=Need[i])goto(2);elseerror(“overrequest”);(2)if(Request[i]<=Available[i])goto(3);elsewait();(3)系统试探性把要求资源分给Pi(类似回溯算法)。
并根据分配修改下面数据结构中的值。
剩余资源量:Available[i]=Available[i]–Request[i];
已为每个进程分配的数量:Allocation[i]=Allocation[i]+Request[i];
各个进程尚需资源量:Need[i]=Need[i]-Request[i];(4)系统执行安全性检查,检查此次资源分配后,系统是否处于安全状态。
若安全,才正式将资源分配给进程以完成此次分配;
若不安全,试探方案作废,恢复原资源分配表,让进程Pi等待。
系统所执行的安全性检查算法可描述如下:设置两个向量:Free、Finish工作向量Free是一个横向量,表示系统可提供给进程继续运行所需要的各类资源数目,它含有的元素个数等于资源数。
执行安全算法开始时,Free=Available.标记向量Finish是一个纵向量,表示进程在此次检查中中是否被满足,使之运行完成,开始时对当前未满足的进程做Finish[i]=false;
当有足够资源分配给进程(Need[i]<=Free)时,Finish[i]=true,Pi完成,并释放资源。
(1)从进程集中找一个能满足下述条件的进程Pi①Finish[i]==false(未定)②Need[i]<=Free(资源够分)(2)当Pi获得资源后,认为它完成,回收资源:Free=Free
2023/7/22 22:21:56 17KB 银行家算法 操作系统
1
LR分析器工作过程算法描述:一个LR分析器的工作过程可看成是栈里的状态序列,已规约串和输入串所构成的三元式的变化过程。
分析开始时的初始三元式为(s0,#,a1a2……an#)其中,s0为分析器的初态;
#为句子的左括号;
a1a2……an为输入串;
其后的#为结束符(句子右括号)。
分析过程每步的结果可表示为(s0s1……sm,#X1X2……Xmai,ai+1……an#)分析器的下一步动作是由栈顶状态sm和现行输入符号ai所唯一决定的。
即,执行ACTION(sm,ai)所规定的动作。
经执行每种可能的动作之后,三元式的变化情形是:(1)若ACTION(sm,ai)为移进,且s=GOTO(sm,ai),则三元式变成:(s0s1……sms,#X1X2……Xmai,ai+1……an#)(2)若ACTION(sm,ai)={A→β},则按照产生式A→β进行规约。
此时三元式变为(s0s1……sms,#X1X2……XmA,aiai+1……an#)此处s=GOTO(Sm-r,A),r为β的长度,β=Xm-r+1……Xm。
(3)若ACTION(sm,ai)为“接受”,则三元式不再变化,变化过程终止,宣布分析成功。
(4)若ACTION(sm,ai)为“报错”,则三元式的变化过程终止,报告错误。
一个LR分析器的工作过程就是一步一步的变换三元式,直至执行“接受”或“报错”为止。
2023/5/15 20:36:36 12.74MB 编译原理实验 LR分析表 LR分析器
1
共 20 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡