ZoomToday
笔耕不辍,热血青春。多看多学发现自己会的只是冰山一角
展开
-
【算法学习笔记十四】近似算法
有许多困难的组合优化问题,使用回溯或随机化不能有效地解决。组合优化问题:在有限的可能性中找出最优解。一个近似算法将给出一个合理的解,逼近一个最优解。(大多数)近似算法的标记特征是它们是快速的(多项式时间算法)。然而,人们不应该乐观地寻找一个有效的近似算法,因为有一些困难的问题,即使存在一个合理的近似算法是不可能的,除非NP=P。组合优化问题输入:COP的实例I。可行集:FEAS(1) =实例I的所有可行(或有效)解的集合,通常用一组约束表示。目标成本函数:实例I包括对目标成本函数的描述。原创 2020-07-03 11:24:02 · 1871 阅读 · 0 评论 -
【算法学习笔记十三】随机算法
按照字典中使用的定义,当事件不可预测地发生时,它被认为是随机的。对象在没有任何计划的情况下被创建时称为随机。根本的问题是,随机性是否真的存在,或者我们是否只使用这个术语来建模具有未知规律性的对象和事件。测试串的相等性我们要检查RI和RII是否包含相同的数据。通信协议的复杂性是为了解决这个决策问题而必须在RI和RII之间交换的比特数,我们显然试图将这种复杂性降到最低。可以证明,解决此任务的每个确定性通信协议必须在RI和RII之间交换至少n位发送n = 位,并确保所有数据都安全地...原创 2020-07-03 11:22:37 · 923 阅读 · 0 评论 -
【算法学习笔记十二】回溯法(二)
应用分支限界法的关键问题如何确定合适的限界函数 常见方法是先对整个问题估计出下界(最小化问题)或上界(最大化问题),而限界函数是在部分解的基础上对剩余的未知部分进行界的重新估计如何组织待处理结点表如何确定最优解中的各个分量 分支限界法对问题的解空间树中结点的处理是跳跃式的,回溯也不是单纯地沿着双亲结点一层一层向上回溯,因此,当搜索到某个叶子结点且该叶子结点的目标函数值在表PT中最大时(假设求解最大化问题),求得了问题的最优值,但是,却无法求得该叶子结点对...原创 2020-07-03 11:21:09 · 1100 阅读 · 0 评论 -
【算法学习笔记十二】回溯法(一)
回溯是一种有组织的详尽搜索,它通常避免搜索所有的可能性。它通常适用于需要检查大量但有限数量的解决方案的问题。原创 2020-07-03 11:20:54 · 898 阅读 · 0 评论 -
【算法学习笔记十一】计算复杂性
计算复杂性是指根据解决问题所需的时间、空间或任何其他资源(如处理器数量和通信成本)对问题进行分类。一.图灵机字母是一组有限的符号。语言L是从中选择的所有有限长度的符号字符串集合的子集,用*表示。标准的图灵机只有一个工作带,它被分割成单独的单元。从 . Each 细胞 包含 一 个 符号图灵机具有读取和重写单元中包含的符号的能力。图灵机在任何时刻都处于某种状态。对于工...原创 2020-07-03 11:20:07 · 1166 阅读 · 0 评论 -
【算法学习笔记十】NP问题
NP完全问题,这一类问题含有许许多多的问题,它们都有一个共同的特性,即如果它们中一个是多项式可解的,那么所有其他的问题也是多项式可解的。如判定问题:它的解决方案只有两个结果:是或不是;最优化问题:关心某一数量的最小化或最大化。如果我们有一个求解判定问题的有效算法,那么很容易的把它变成求解与它相对应的最优化问题的算法。我们通常可以将一个给定的优化问题转化为一个相关的决策问题,方法是对要优化...原创 2020-04-25 17:49:10 · 1071 阅读 · 0 评论 -
【算法学习笔记九】贪心算法
贪心算法原创 2020-04-22 17:48:55 · 872 阅读 · 0 评论 -
【算法学习笔记八】动态规划
动态规划原创 2020-04-12 23:07:00 · 714 阅读 · 0 评论 -
【算法学习笔记七】递归之分治法
分治算法把问题实例分成若干子实例(多数情况下分成两个),并分别递归地解决每个子实例,然后把这些子实例的解组合起来,得到原问题实例的解。划分步骤:将输入划分为p≥1部分,每个部分的大小都严格小于原始实例的大小n;治理步骤:如果问题的大小大于某个预定义的阈值n0,这个步骤由执行p个递归调用组成;组合步骤:将p个递归算法的解组合起来,以获得所需的输出。组合步骤对于几乎所有分治算法的性能都...原创 2020-04-09 23:31:15 · 1039 阅读 · 0 评论 -
【算法学习笔记六】递归之归纳法
基于递归的技术对于许多问题,使用递归使得使用简洁、易于理解和高效的算法来解决复杂问题成为可能(从算法的角度来看)递归最简单的形式是将问题分解成一个或多个子问题,这些子问题在结构上与原问题相同,然后将这些子问题的解组合起来,得到原问题的解。递归归纳法或尾部递归法;对于不重叠的子问题可以使用分治法;对于子问题重叠,子问题调用冗余,允许时间交易空间 ,动态规划。归纳法首先证明...原创 2020-03-30 22:32:30 · 1093 阅读 · 0 评论 -
【算法学习笔记五】平摊分析
平摊分析平摊分析是分析一个操作序列以显示每个操作的平均成本很小的任何策略,即使序列中的单个操作可能很昂贵。不同于平均案例分析:1)不涉及概率;2)保证最坏情况下各操作的平均性能。三种常见的平摊方法:聚集方法;会计方法;势能方法。一.聚集方法聚集方法:先求n个操作总共花费的总和T(n),每一步操作的平摊代价T(n)/n,这个成本适用于每个操作,即使在序列中有几种类型的操作。后面两种方...原创 2020-03-24 13:23:50 · 1499 阅读 · 1 评论 -
【算法学习笔记四】数学基础
一.集合、关系和函数当分析算法时,我们认为它的输入是从某个特定范围内(如整数集合)取出的一个集合。可以认为算法是一个函数,它是一个受约束的关系,它映射每一个可能的输入到一个特定的输出,这样,集合和函数就都处于算法分析的核心中。集合用来指任何一批对象,它们成为集合的成员或者元素。集合分为有限集合和无限集合,如果一个无限集合的元素能被一个一个列举出来,则称之为可数的,如整数集,否则不可数的,如...原创 2020-03-22 11:59:51 · 916 阅读 · 0 评论 -
【算法学习笔记一】算法基本概念
在学习算法的过程中始终离不开三个问题:1.如何找到一个有效的算法去解决问题;2.对于解决同样的问题,如何比较不同的算法;3.如何判断算法的优点。基本概念一.算法定义算法就是一个由有限的指令集组成的过程。从可能的输入集中给这个过程一个输入,如果系统地执行该指令集,那么对于这个特定地输入,当输出存在时,就能得到输出;当没有输出时,就什么结果也得不到。可能地输入集是指能让该...原创 2020-03-20 22:17:29 · 1096 阅读 · 0 评论 -
【算法学习笔记三】排序算法及有关证明
一.简单排序原创 2020-03-20 18:32:28 · 954 阅读 · 0 评论 -
【算法学习笔记二】查找搜索算法
一.顺序搜索(Linear search)对于一个n元数组,查找某一元素是否等于x,则需要将数组从头到尾与x做判断,运气好的话,可能比较第一次就找到,运气坏的话可能最后一个元素才找到或者都没找不到,即元素比较次数是1~n之间。输入:n个元素的数组A[1...n]和元素x输出:如果x=A[j],1≤j≤n,则输出j,否则输出0 j<-1 while (j<n)...原创 2020-03-19 22:03:36 · 801 阅读 · 0 评论