- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法读书报告讲述
算法读书笔记学生姓名:学号:院系:信息科学与技术学院专业:软件工程年级:2015级引言算法是规则的有限集合,是为解决特定问题而规定的一系列操作。算法设计的优劣决定着软件系统的性能,对算法进行研究使我们深刻理解问题的本质以及可能的求解技术。评价算法性能的标准主要从算法执行时间和存储空间两方面考虑,即算法执行所需的时间T和存储空间S来判断一个算法的优劣,他们都与问题规模有关,可以说算法效率是问题规模的函数。算法分析是对一个算法所需时间和空间所做的定量分析。需要一定的准则和方法来分析算法的优劣,主要考虑算法的正确定、可读性、健壮性、高效率和低存储量这几个方面。算法分析是对一种算法所消耗资源的估算。我们可依据此对解决同一问题的多种算法的代价加以比较。算法的复杂性就是算法所需的计算机资源,常用到复杂度函数表示算法的复杂性。使用渐进分析法对算法复杂性进行分析,在渐进形态中高阶、低阶、等阶之分。在算法设计阶段,主要是如何设计解决给定的问题的有效算法也就是构造问题的解,算法设计的任务就是对各类具体的问题设计高质量的算法,以及研究算法的一般规律和方法。常用的算法设计方法主要有分治法、动态规划法、贪心算法和回溯法等。算法设计是一个构造专用工具的过程,永远不会存在一种能解决所有问题的万能方法;算法设计是一个复杂的、创造性的劳动,要求设计者能运用已有的知识和抽象思维,逐步形成算法的基本思想,构造出算法的具体步骤,以正确解决问题。算法的设计和分析有密切的联系,它们相互影响。算法需要检验和评价,反过来,算法评价的结果也可影响算法设计,以便改进算法的性能。摘要P和NP问题是Steve Cook于1971年首次提出。“P/NP问题”,这里的P指多项式时间(Polynomial),一个复杂问题如果能在多项式时间内解决,那么它便被称为P问题,这意味着计算机可以在有限时间内完成计算;NP指非确定性多项式时间(nondeterministic polynomial),一个复杂问题不能确定在多项式时间内解决。先来介绍一下P问题和NP问题的定义。P类语言={L | L是一个能在多项式时间内能被一个DTM所接收的语言};NP类语言={L| L是一个能在多项式时间内被一个NDTM所接收的语言}。知道了NP问题,再来看看NPC问题。NPC问题的定义非常简单。同时满足下面两个条件的问题就是NPC问题。首先,它得是一个NP问题;然后,所有的NP问题都可以约化到它。证明一个问题是 NPC问题也很简单。先证明它至少是一个NP问题,再证明其中一个已知的NPC问题能约化到它,这样就可以说它是NPC问题了。接下来要讨论的顶点覆盖问题就是NPC问题。顶点覆盖的定义是这样的:给定一个无向图G=(V, E)和一个正整数k,若存在,∣V’∣=k使得对任意的(u,v)∈E,都有u∈V’或v∈V’,则V’称为图G的一个大小为k的顶点覆盖。用通俗的话来说,顶点覆盖至少包含无向图中边的一个顶点。对于顶点覆盖问题的NPC的证明主要分了两步。第一步是证明其NP性,第二步是证明其完全性。NP性的证明:对给定的无向图G=(V, E),若顶点是图G的一个大小为k的顶点覆盖,则可以构造一个确定性的算法,以多项式的时间验证∣V’∣=k,及对所有的(u,v)∈E,是否有u∈V’或v∈V’,因此顶点覆盖问题是一个NP问题。完全性的证明:已知团集问题是一个NP完全问题,若团集问题归约与顶点覆盖问题,则顶点覆盖问题就是一个NP完全问题。书中的解决方案顶点覆盖的优化问题是找出图中的最小顶点覆盖。为了用近似算法解决这个问题,假设顶点用编号,并用下面的邻接表来存放顶点与顶点之间的关联边:Struct adj_list{/*邻接表结点的数据结构*/ int v_num; /*邻接结点的编号*/ struct adj_list * next; /*下一个邻接顶点*/ };typedef struct adj_list NODE;NODE *V[n]; /*图的邻接表头结点*/则顶点覆盖问题的近似算法的求解步骤可以叙述如下:步骤1. 顶点的初始编号u=0;步骤2. 如果顶点u存在关联边,转到步骤3,否则,转到步骤5;步骤3. 令关联边为(u,v),把顶点u和顶点v登记到顶点覆盖中;步骤4. 删去与顶点u和顶点v关联的所有边;步骤5.,u=u+1, 如果,un, 则转到步骤2,否则,算法结束。该算发的缺点就是没有对算法做优化,在某些情况下,求得的顶点几乎包含了无向图中全部的顶点。因为该算法的思想是把边中的所有顶点都放到顶点集中。但是该算法的思想是比较好的。我的想法由于课本上的算法没有优化,我的解决办法主要是对算法进行优化。主要的思想是:尽量只把变边中的一个顶点放到顶点覆盖集里面。该算法的实现是基于图的邻接矩阵的。顶点的数据结
文档评论(0)