算法设计和分析课程论文

合集下载

算法设计和分析课程论文

算法设计和分析课程论文

湖南理工学院课程论文论文题目贪心法的应用课程名称算法设计与分析姓名学号专业计算机科学与技术年级学院计算机日期(2014年4月10日)课程论文评价标准贪心法的应用摘要:在解决问题的过程中,通过逐步获得最优解从而获得整体最优解的策略就是贪心策略,在已经学会在解的范围可以确定的情况下,可以采用枚举或递归策略,一一比较它们最后找到最优解;但当解的范围非常大时,枚举和递归的效率会非常低。

这时就可以考虑用贪心策略。

贪心算法没有固定的框架,算法设计的关键是贪心策略的选择,贪心策略要具有无后向性,即某阶段状态一旦确定以后,不受这个状态以后的策略的影响。

当一个问题有好几种解决方法时,贪心法应该是最好的选择之一。

本文讲述了贪心算法的含义、基本思路以及贪心算法在实例中的应用。

关键词:贪心算法;删数问题;最小生成树一、引言在平时解决问题的过程中,当一个问题就有无后向性和贪心选择性质时,贪心算法通常会给出一个简单、直观和高效的解法。

贪心算法通过一系列的选择来得到一个问题的解。

它所做的每一个选择都是当前状态下就有某种意义的最好选择,即贪心选择;并且每次贪心选择都能将问题化解为一个更小的与原问题具有相同形式的子问题。

尽管贪心算法对于很多问题不能总是产生整体最优解,但对于最短路径、最小生成树问题,以及删数问题等却可以获得整体最优解,而且所给出的算法一般比动态规划算法更为简单、直观和高效。

二、贪心算法的含义和特点(一)贪心算法的含义贪心算法是通过一系列的选择来得到问题解的过程。

贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最有的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解算法。

(二)贪心算法的特点1、从全局来看,运用贪心策略解决的问题在程序运行过程中无回溯过程,后面的每一步都是当前看似最佳的选择,这种选择依赖已作出的选择,但并不依赖未作出的选择。

2、不能保证最后求出的解是最佳的。

“算法分析与设计”教学模式探索

“算法分析与设计”教学模式探索

“算法分析与设计”教学模式探索摘要:分析了“算法分析与设计”教学中存在的问题。

结合多年来从事“算法分析与设计”课程教学的经验,从构建主义学习理论的角度,以增加学生主观能动性为出发点,提出了一种综合性互动教学模式,并给出了该模式下的实践措施。

教学实践表明,该模式有利于培养学生的互动能力、逻辑思维能力和实践动手能力,在实际教学过程中取得了较好的效果。

关键词:算法分析与设计;教学模式;互动计算机算法是计算机科学和计算机应用的核心,无论是计算机系统、系统软件的设计,还是为解决计算机的各种应用课题p算法分析与设计课程需要较强的逻辑性、抽象性和较好的数学基础,很多学生在学习过程中,感觉算法内容理解难度较大,部分学生虽然清楚了整个算法思想,却无法读懂程序伪代码和源代码。

此外,不少学生对该门课程不够重视,存在着混学分的思想,导致了学习积极性不高。

造成以上现象的原因可以总结为以下几点:(1)学生对该课程的基础课程学习不扎实。

算法分析与设计的基础课程包括C语言(或VC++)、数据结构和离散数学等,而C语言和数据结构一直都是很多学生学习的一个软肋。

此外,对于一些非计算机专业的学生,他们在学习算法分析与设计课程之前,甚至没有学习过离散数学课程,这更加增加了他们学习的难度。

(2)学生对该课程重视程度不够。

一些学生思想上带有功利的成分,对所学内容在实际中的应用特别关注。

例如,设计了一个网站、一个管理系统或者一个嵌入式程序,学生可能觉得将来可以用于找工作,而算法分析与设计课程的内容显得与实际工作关系不大,因此,只抱着混学分的态度,及格就行。

(3)教师与学生的互动性不强。

在算法分析与设计的课程教学中,容易形成从教师至学生的单向灌输的局面,学生只是应付,没有兴趣去主动思考,以至形成“课堂纪律非常好,但是教师提问无人回答”的情形。

此外,很多教师使用了多媒体教学,虽然采用了信息化手段,但是多媒体课件响应速度快,超越了学生思考能力,阻碍了教师与学生之间的互动性。

算法设计课程论文模板

算法设计课程论文模板

《算法设计》课程论文题目针对UBQP问题的量子文化基因算法学生姓名学号院系计算机与软件学院专业计算机科学与技术指导教师刘文杰2015年6 月30 日目录1 引言 (2)2 ** 算法简介 (3)3 针对UBQP问题的量子文化基因算法(QEA-TS) (3)3.1算法思想 (3)3.2算法流程 (3)3.3算法过程描述 (5)3.3.1输入权值矩阵 (5)3.3.2 量子染色体初始化 (5)3.3.3 染色体观测 (5)3.3.4禁忌搜索 (6)3.3.5评估适应度值 (7)3.3.6 量子旋转门和更新 (7)3.3.7算法终止条件 (10)3.4本章小结 (11)4代码实现与结果分析 (11)4.1代码实现 (11)4.2运行结果分析与比较 (12)4.2.1参数设置 (12)4.2.2运行结果分析与比较 (12)5 小结 (14)针对UBQP 问题的量子文化基因算法1 引 言无约束0-1二次规划问题(Unconstrained Binary Quadratic Problem ,UBQP )是一类选取合适的二进制决策变量,使得二次目标函数值极大化的优化问题,该问题用数学表达式可以写成UBQP :QX X x f T =)((1)的形式,其中Q 是一个n n ⨯对称矩阵,一般写成上三角的形式,是常量,X 是n 维二进制向量(每个分量都是0或者1),即需要求的解。

这是一个典型的NP (Non-deterministic Polynomial )难题,它有许多方面的应用,如计算机辅助设计,社会心理学,交通管理,金融分析,机器调度等等。

同时,UBQP 问题是组合优化问题的一种通用模型,大多数组合优化问题都能够转化成该问题后进行求解,如图着色问题,多维背包问题,最大团问题,集合分割问题等等。

同时UBQP 问题是一个多峰值函数问题,在它的函数图像中具有很多山峰一样的极值点。

对这一问题,学者们提出了多种求解的算法,这些算法大致可以归结为两大类:完整算法和启发式算法。

三相短路故障分析与计算的算法设计(1)

三相短路故障分析与计算的算法设计(1)

湖北民族学院“三相短路故障分析与计算的算法设计”电气工程专业课程设计论文题目: 三相短路故障分析与计算(手算或计算机算)组序:第三组指导老师:耿东山专业:电气工程及其自动化日期: 2015年6月摘要本设计主要研究目的是通过手算和计算机程序设计实现三相短路电流的计算。

电力系统发生三相短路故障造成的危害性是最大的。

作为电力系统三大计算之一,分析与计算三相短路故障的参数更为重要。

通过分析与计算三相短路故障的各参数,可以进一步提高短路故障分析与计算的精度和速度,为电力系统的规划设计、安全运行、设备选择、继电保护等提供重要依据。

关键词:三相短路计算电力系统故障分析AbstractThe purpose of this design research is to calculate by hand and computer programming to realize three-phase short-circuit current calculation.In three-phase power system fault caused by the harmfulness is the biggest of all. As one of three power system calculation, analysis and calculates the parameters of three phase short circuit fault is more important.By analyzing and calculating the parameters of the three-phase short-circuit fault, short-circuit fault can be further improved the accuracy and speed of the analysis and calculation, for the safe operation of power system planning and design, and provide important basis equipment selection, relay protection, etc.Keywords: three phase short-circuit calculation power system Failure Analysis目录1、设计背景 (4)1.1电力系统三大计算 (4)1.1.1 潮流计算 (5)1.1.2 短路故障计算 (5)1.1.3稳定性计算 (5)1.2 电力系统短路故障概述 (5)1.2.1 短路原因及危害 (6)2、分析方法 (7)2.1 手算 (7)2.1.1 解析法 (7)2.1.2 Y矩阵法 (7)2.2 用Matlab搭建并仿真 (8)2.3 利用程序语言计算 (8)3、短路电流计算 (8)3.1 参数数据 (8)3.2电抗标幺值定义 (10)3.3短路次暂态电流(功率)标幺值计算 (12)3.4 各元件电抗标幺值 (13)3.4.1 电力系统等值电路 (13)3.4.2各元件电抗标幺值的计算 (14)3.4.3 等值简化电路图 (16)3.5三相短路电流及短路功率 (16)4、程序设计 (17)4.1 计算机算法设计流程图 (17)4.2 计算机算法设计程序清单 (18)4.3 程序结果分析 (22)5、心得 (19)参考文献 (20)1 设计背景1.1电力系统三大计算1.1.1 潮流计算研究电力系统稳态运行情况的一种基本电气计算,常规潮流计算的任务是根据给定的运行条件和网路结构确定整个系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等。

计算机教学论文:聚焦计算思维的算法分析与设计课程教学改革

计算机教学论文:聚焦计算思维的算法分析与设计课程教学改革

计算机教学论文:聚焦计算思维的算法分析与设计课程教学改革0 引言算法是计算机科学中最具方法论性质的核心概念,被誉为计算机学科的灵魂。

图灵奖获得者Niklaus Wirth提出:算法+数据结构=程序,强调了算法在计算机领域的重要性。

在现实生活中,算法、算据和算力组成了人工智能技术的三要素;算法的新颖性和性能决定了学术论文在高水平期刊或会议上发表的可能性;算法能力测试是研究生复试和求职面试等场合常见的环节。

因此,学习并掌握好算法相关知识,对一名本科生的综合能力培养和职业发展来说非常重要。

国内外各大高校计算机专业在培养方案中,普遍开设了算法分析与设计(以下简称算法)课程,该课程以高级程序设计和数据结构为先导课程,又为人工智能等专业课程提供算法支撑,是培养方案的重要枢纽之一。

算法课程既包含抽象的理论,又强调算法的实践,对学生的逻辑思维和计算建模等能力有较高的要求,因此有必要聚焦计算思维,开展面向能力提升的课程教学改革。

1 课程教学和改革现状1.1 共性问题目前,采取小班化策略开展算法课程教学已比较普遍;多数高校选用MIT经典书籍《Introduction to Algorithms》作为教材;依托在线平台开展编程训练取得了良好的教学效果。

但在教学过程中,还存在一些共性问题。

(1)学生在理论学习时普遍存在畏难心理。

算法要求学生不仅掌握算法的实施,更强调对算法原理的理解;一些关键的算法要进行证明,如主方法、最优前缀码等,这需要大量的理论知识,涉及不少数学符号,学生容易感到枯燥和抽象,降低了学习兴趣。

(2)学生难以灵活运用算法解决实际问题。

学生往往能够较好地掌握教材中的经典问题和相应的算法,并完成课后习题和部分在线训练题,但遇到复杂的现实问题或工程问题时,要么没有思路,要么依赖直觉,无法准确构建输入输出间的解析关系。

(3)学生的基础水平和学习需求差异明显。

修读课程的学生水平参差不齐,学习动力和学习方法也各不相同,因此处在两极的学生的学习需求通常难以得到精细满足;另外,创新实验活动和程序设计竞赛吸引了部分学有余力的学生,但课程教学和第二课堂缺乏深度结合。

基于OpenCV的运动目标检测与跟踪算法仿真与分析毕业设计论文

基于OpenCV的运动目标检测与跟踪算法仿真与分析毕业设计论文

摘要在当今社会,安全问题越来越受到人们的关注,而视频监控是保障人民群众生命财产安全的重要技术手段,同时也是目前计算机视觉与模式识别领域的研究热点之一。

视频监控历经了普通监控、网络监控到现在的智能监控三个发展阶段。

近几年来,智能监控在交通、银行、博物馆等安全性要求比较高的场所发挥了举足轻重的作用。

但由于其应用范围的广泛性、应用场景的多样性,就其技术而言仍未达到人们所期望的要求。

其算法实时性、稳定性情况还不甚理想,受雨雪等恶劣天气的影响也比较大,还需要进一步研究出更好的算法,因此它是一个十分有意义的课题。

本文设计了基于opencv的运动目标检测与跟踪系统。

进行了大量的实验,并在实验中通过多次改进系统的结构和相关的算法,达到了提高系统实时性的目的。

该系统能够打开视频文件,并对视频文件中的运动物体进行实时有效检测与跟踪。

本文的主要工作包括:在运动目标检测阶段,本文介绍了目前常用的背景差法、帧间差分法、光流法,并通过实验对其进行了多次改进,最终采用了自适应背景更新算法、以及最经典的混合高斯背景建模算法进行运动检测。

在运动目标跟踪阶段,本文利用了颜色范围和面积大小这两个简单的特性来识别目标,在满足了识别要求的前提下,大大提高了识别的速度,再一次提升了系统的实时性;在目标跟踪阶段采用Meanshift的改进算法Camshift,并根据实验结果对算法中的优缺点进行分析。

关键词:运动目标检测,运动目标跟踪,OpenCV,高斯背景建模算法,Camshift算法。

AbstractToday,security problems are becoming increasingly subject to people’s attention.Video surveillance is the most important technical means to protect people’s lives and property.It is also the most popular problems in the computer vision and pattern recognition research fields. Video Surveillance has developed three stages as the common surveillance,the network surveillance and the intelligent surveillance.In recent years,the intelligent video surveillance has played great importance in the field of Traffic,Bank,Museum and so on which have a high safety requirements.But because of the extensive and diversity of its application,as for the technology,it has not reached the expected requirements of the people.On the other hand,the stability and real-time performance of the algorithms are not so satisfied;the result is still affected by the bad weather as rain and snow.So,better algorithm is needed.Therefore,it is one of the most valuable topics.This article is designed based on the opencv moving target detection and tracking system. Done a lot of experiments and experiments through several improvements in the structure and related algorithms,to improve the system of real-time purposes.The system is able to open video files,and video files in real-time moving object detection and tracking effectively.The main work includes:the moving target detection phase,the paper describes the current common background subtraction,inter-frame difference method,optical flow,and through experiments carried out many improvements,finally adopted adaptive background updating algorithm,and the most classic Gaussian mixture background modeling algorithm for motion detection.In moving target tracking phase,the scope of this paper,the color and size of the size of these two simple features to identify the target,to meet the identification requirements under the premise,greatly improve the recognition rate,once again enhance the system in real time;in Meanshift tracking stage using the improved algorithm Camshift,and the experimental results of the algorithm to analyze the advantages and disadvantages.Key words:Moving target detection,target tracking,OpenCV,Gaussian background modelingalgorithm,Camshift algorithm.目录1绪论......................................................................11.1课题研究的背景和意义...................................................11.2国内外研究现状.........................................................11.3技术发展难点与趋势.....................................................21.4论文结构安排...........................................................32编程工具介绍..............................................................42.1opencv2.4.3简介.......................................................42.2opencv视频处理........................................................42.2.1OpenCV中处理图像Mat类............................................52.2.2OpenCV中读取视频VideoCapture类...................................62.3opencv编程环境配置....................................................62.3.1配置Windows环境变量..............................................62.3.2在VisualStudio2010中建立MFC对话框..............................72.3.3配置OpenCV函数库..................................................73运动目标检测..............................................................93.1概述...................................................................93.1.1帧间差分法.........................................................93.1.2背景差法..........................................................93.1.3光流法...........................................................103.2自适应背景更新算法....................................................113.2.1原理..............................................................113.2.2流程.............................................................113.2.3核心代码.........................................................123.2.4实验结果及分析...................................................133.3混合高斯背景建模算法.................................................153.3.1原理..............................................................153.3.2流程..............................................................163.3.3核心代码.........................................................173.3.4实验结果及分析...................................................174运动目标跟踪.............................................................214.1概述..................................................................214.2均值漂移MeanShift算法...............................................224.2.1原理..............................................................224.2.2流程图............................................................234.3Camshift算法.........................................................234.3.1原理..............................................................234.3.2流程图............................................................254.3.3核心代码.........................................................254.4实验结果及分析........................................................275软件的设计与仿真.........................................................296全文总结与展望...........................................................32参考文献...................................................................33翻译部分...................................................................35英文文献.................................................................35中文译文.................................................................45致谢.....................................................错误!未定义书签。

计算机算法设计与分析

计算机算法设计与分析

中国地质大学研究生课程论文课程名称:算法设计与分析教师姓名:戴光明研究生姓名:研究生学号: ********** 研究生专业: *********** 所在院系:计算机学院类别: A.博士B.硕士√ C.进修生日期: 2017.01.13评语注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

目录第一章算法导引 (4)一、算法及其特性 (4)二、算法分析 (4)第二章分治法 (6)一、一般方法 (6)二、二分检索法 (6)三、归并分类 (7)四、特斯拉森矩阵乘法 (8)五、总结 (8)第三章贪心算法 (9)一、一般方法 (9)二、背包问题 (9)三、最小生成树 (10)四、单源点最短路径 (11)第四章动态规划 (12)一、优化问题 (12)二、一般原理 (12)三、多段图 (12)四、每对结点间的最短路径 (14)五、最优二分检索树 (14)六、0-1背包问题 (16)七、调度问题 (16)八、TSP问题 (17)第五章基本检索与周游算法 (18)一、一般方法 (18)二、双连通图和深度优先检索 (19)三、决策树(博弈树) (21)第六章回溯法 (22)第七章分支限界法 (22)一、一般方法 (22)二、回溯法解0-1背包问题 (22)三、分支限界法解0-1背包问题 (23)第八章总结 (24)第一章 算法导引课前题目: 编写程序:1、 编写两个矩阵相乘的程序;2、 如图,菱形ABCD 中,E 是AD 的中点,EF 垂直于AC 交CB 的延长线于F ,求证四边形AFBE 是平行四边形。

图1-1 平行四边形一、 算法及其特性1、算法是什么?算法是计算的方法。

2、什么是计算?1) 计算是基于规则的符号串的变换; 2) 计算是基于规则的物理信息的变换; 3) 计算是基于规则的信息的变换。

为了使计算机械化,图灵提出了图灵模型,在此基础上将理论进行技术实现,1946年诞生了第一台计算机(读写头、纸带、四元组),在内存条上进行输入输出。

算法设计论文

算法设计论文

算法设计与分析课程论文论文名称 24计算问题学院教育信息技术学院学生姓名莫怡琳、阮淑贞、陈鑫奕学号2014210972、2014210970、2014210946 2017 年 1 月 3日目录一、问题描述 (1)二、前端分析 (1)1、功能需求 (1)2、工具选择 (1)三、详细设计及说明 (1)四、算法设计思想 (4)核心算法 (4)辅助算法 (5)五、问题及解决 (6)六、总结反思 (7)七、小组分工 (7)八、小组互评 (7)九、编程日记 (8)11月29日编程日记 (8)12月6日编程日记 (8)12月7日编程日记 (9)十、源代码 (9)24计算问题一、问题描述24点游戏是指任意输入1-9的四个数,通过加减乘除四则运算连接,使得计算结果为24,而使用计算机模拟该游戏,就是让程序随机产生数字,由用户组合成表达式,交给程序进行结果判断。

二、前端分析1、功能需求(1)模式选择:根据玩家人数选择单人模式或者双人模式(2)用户登录/注册:允许用户登录、注册,确保账号安全(3)随机:自动产生随机数,供用户选择(4)验证:对用户输入的表达式进行判断(5)计算:对随机产生的数字求解,得出符合要求的表达式(6)记录:能够根据玩家的输赢情况,实时更新玩家等级(7)存储:存储并动态更新用户的相关信息,包括用户名、密码、游戏等级2、工具选择工具:DW,语言:php,用本机localhost做服务器和测试端(1)交互性强,用户能够通过鼠标、键盘等输入与网页进行交互(2)界面编写容易,div+css可以实现网页布局(3)数据存储读取方便,能够实时与AppServ自带的数据库链接(4)24点游戏本身适合做成网页版三、详细设计及说明1、模式选择:选择不同的模式将会跳转至不同游戏界面单人模式双人模式帮助:游戏规则:选择单人模式将独自完成任务,每完成一关将会上升一个等级,回答错误将会下降一个等级;选择双人模式胜利者将上升一个等级,失败者将下降一个等级。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南理工学院课程论文论文题目贪心法的应用课程名称算法设计与分析姓名学号专业计算机科学与技术年级学院计算机日期(2014年4月10日)课程论文评价标准贪心法的应用摘要:在解决问题的过程中,通过逐步获得最优解从而获得整体最优解的策略就是贪心策略,在已经学会在解的范围可以确定的情况下,可以采用枚举或递归策略,一一比较它们最后找到最优解;但当解的范围非常大时,枚举和递归的效率会非常低。

这时就可以考虑用贪心策略。

贪心算法没有固定的框架,算法设计的关键是贪心策略的选择,贪心策略要具有无后向性,即某阶段状态一旦确定以后,不受这个状态以后的策略的影响。

当一个问题有好几种解决方法时,贪心法应该是最好的选择之一。

本文讲述了贪心算法的含义、基本思路以及贪心算法在实例中的应用。

关键词:贪心算法;删数问题;最小生成树一、引言在平时解决问题的过程中,当一个问题就有无后向性和贪心选择性质时,贪心算法通常会给出一个简单、直观和高效的解法。

贪心算法通过一系列的选择来得到一个问题的解。

它所做的每一个选择都是当前状态下就有某种意义的最好选择,即贪心选择;并且每次贪心选择都能将问题化解为一个更小的与原问题具有相同形式的子问题。

尽管贪心算法对于很多问题不能总是产生整体最优解,但对于最短路径、最小生成树问题,以及删数问题等却可以获得整体最优解,而且所给出的算法一般比动态规划算法更为简单、直观和高效。

二、贪心算法的含义和特点(一)贪心算法的含义贪心算法是通过一系列的选择来得到问题解的过程。

贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最有的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解算法。

(二)贪心算法的特点1、从全局来看,运用贪心策略解决的问题在程序运行过程中无回溯过程,后面的每一步都是当前看似最佳的选择,这种选择依赖已作出的选择,但并不依赖未作出的选择。

2、不能保证最后求出的解是最佳的。

由于贪心策略总是采用从局部看来是最优的选择,并不从整体上加以考虑。

另外贪心算法只能用来求某些最大或最小解的问题,因为当遇到求解权值最小路径等问题采用贪心算法得到的结果并不是最佳。

二、贪心算法在实例中的应用(一)删数问题给定n位正整数a,去掉其中任意k≤n个数字后,剩下的数字按原次序排列组成一个新的正整数。

对于给定的n位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。

1、算法原理从最高位开始,依次向低位搜索,一旦遇到前一位(高数)的数大于当前位,则删去前一位,直到删除k个数,如果到达末尾还没有删除k个,则说明现在这个数已经是从小到大排列了,则从最低位开始删除要求的位数。

2、过程分析n1="12435863" k=34比3大删除"1235863"8比6大删除"1243563"6比3大删除"1243583"只看这个实例,有可能归纳不出正确的算法,看下一个实例,再进一步解释。

n2="2 31183" k=33比1大删除"2 1183"2比1大删除"1183"8比3大删除"113"由实例n1,相邻数字只需从前向后比较;而从实例n2中可以看出当第i位与第i+1位比较,若删除第i位后,必须向前考虑第i-1位与第i+1位进行比较,才能保真结果的真确性。

(二)最小生成树设G = (V, E)是一个无向连通带权图,即一个网络。

E的每条边(v, w)的权为c[v][w]。

如果G的一个子图G’是一棵包含G的所有顶点的树,则称G’为G的生成树。

生成树的各边的权的总和称为该生成树的耗费。

在G的所有生成树中,耗费最小的生成树称为G的最小(优)生成树。

1、算法原理(1)Prim算法基本思想:在保证连通的前提下依次选出权重较小的n – 1条边。

G=(V, E)为无向连通带权图,令V={1, 2, …, n}。

设置一个集合S ,初始化S = {1},T = Φ。

贪心策略:如果V–S中的顶点j与S中的某个点i连接且(i, j)是E中的权重最小的边,于是就选择j(将j加入S),并将(i, j) 加入T中。

重复执行贪心策略,直至V–S为空。

(2)Kruskal算法基本思想:在保证无回路的前提下依次选出权重较小的n – 1条边。

贪心策略:如果(i, j)是E中尚未被选中的边中权重最小的,并且(i, j)不会与已经选择的边构成回路,于是就选择 (i, j)。

若边(i, j) 的两个端点i和j属于同一个连通分支,则选择(i, j) 会造成回路,反之则不会造成回路。

因此初始时将图的n个顶点看成n个孤立分支。

(3)两种算法的异同两种算法不同之处在于,Prim算法是在在保证连通的前提下依次选出权重较小的n – 1条边。

而Kruskal算法在保证无回路的前提下依次选出权重较小的n – 1条边。

两种算法的相同之处在于都是在各自的前提条件下采取依次取出权值最小n-1条边的贪心策略。

2、分析过程(1)Prim算法给定一个联通带权图如下:初始时S={1},T= Φ;第一次选择:(1,3)权最小, S={1,3}, T= {(1,3)} ;第二次选择:(3,6)权最小, S={1,3,6}, T= {(1,3)(3,6)} ;第三次选择:(4,6)权最小, S={1,3,6,4}, T= {(1,3)(3,6)(6,4)} ;第四次选择:(2, 3)权最小, S={1,3,6,4,2}, T= {(1,3)(3,6)(6,4)(2,3)} ;第五次选择:(2,5)权最小, S={1,3,6,4,2,5}, T= {(1,3)(3,6)(6,4)(2,3)(2,5)} ;(2)Kruskal算法给定一个联通带权图如下:初始时为六个孤立的点,选择了1,于是1、3点合并为同一个集合;选择了2,于是4、6点合并为同一个集合;选择了3,于是2、5点合并为同一个集合;选择了4,于是1、3、4、6点合并为同一个集合;考察边5,因为1、4为同一集合,故被放弃;选择了6,于是1、3、4、6、2、5点合并为同一个集合;选择了1,于是1、3点合并为同一个集合;已经选择边了n–1条边,算法结束。

结果如图所示:3、算法设计(1)Prim算法Prim(int n, Type **c) {int j = 1; s[j] = true;//初始化将节点1放入s并初始化closest[]和lowcost[] for (int i = 2; i <= n; i++){closest[i] = 1; lowcost[i]=c[1][i]; s[i]=false;}for (int i = 1; i < n; i++) { / /执行以下操作n-1次min= inf;for (int k = 2; k <= n; k++) {//依据lowcost[]找出与s最近的点j并放入S if (lowcost[k]<min&&!s[k]){min = lowcost[k]; j = k}s[j] = true; }}for (int k = 2; k <= n; k++) { //调整closest[]和lowcost[]if (c[j][k]< lowcost[k]&&!s[k]){lowcost[k] = c[j][k]; closest[k] = j}}}(2)Kruskal算法Kruskal(int n, **e) {Sort(e, w); //将边按权重从小到大排序initialize(n); //初始时每个顶点为一个集合k = 1; //k累计已选边的数目,j = 1; //j为所选的边在e中的序号while (k < n) //选择n –1条边{a = Find(e[j][u]); b = Find(e[j][v]);//找出第j条边两个端点所在的集合if (a != b) {t[k++] = j; Union(a, b)}//若不同,第j条边放入树中并合并这两个集合j++ }} //继续考察下一条边4、Prim和kruskal算法两者的复杂性Prim算法为两重循环,外层循环为n次,内层循环为O(n),因此其复杂性为O(n2)。

Kruskal算法中,设边数为e,则边排序的时间为O(e),确定边的时间为O(loge),所以整个时间复杂性为O(eloge)。

当e = Ω(n2)时,Kruskal算法要比Prim算法差;当e = ο(n2)时,Kruskal算法比Prim算法好得多。

三、总结与展望(一)总结贪心算法是很常见的算法,贪心策略是最接近人的日常思维的一种解题策略,虽然它不能保证求得的最后解一定是最佳的,但是它可以为某些问题确定一个可行性范围。

贪心算法所作的选择依赖于以往所作过的选择,但决不依赖于将来的选择,这使得算法在编码和执行过程中都有一定的速度优势。

对于一个问题的最优解只能用穷举法得到时,用贪心算法是寻找问题最优解的较好算法。

对一个问题可以同时用几种方法解决,贪心算法并不是对所有的问题都能得到整体最优解或是最理想的近似解时,就需判断贪心性质的正确性了。

与回溯法、动态规划法等比较,它的适用区域相对狭窄许多。

总之,如果一个贪心解决方案存在,就可以使用它。

(二)展望对于贪心算法的应用,如果某个问题具有贪心算法的贪心选择性质和最优子结构性质,那么,它就可以采用贪心策略进行分析,进而求解,贪心算法的应用举例不仅只有本论文中的那几个,他对于背包问题、最优装载问题、硬币找钱问题等都是十分方便有效的算法,贪心算法在科学计算和工程中的应用也越来越广泛,例如用贪心算法进行三角剖分的指纹匹配方法、贪心算法在竞赛中的应用、贪心算法在排课系统中的应用、贪心聚类算法及其在遥感图像分类和压缩中的应用等等,在未来出现的一些问题中,只要符合贪心算法的贪心策略性质,就可以用贪心算法求解,让贪心算法能够应用到更广更多的问题中去吧!【参考文献】[1]吕英国.任瑞征.钱宇华.算法设计与分析[M].北京:清华大学出版社.[2]URL /view/f11d5d2a3169a4517723a341.html.。

相关文档
最新文档