一、基本概念:所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性...
分类:
编程语言 时间:
2015-02-05 12:49:21
阅读次数:
255
java
模版方法模式: 算法执行的统一框架,模版方法模式定义了一个操作中的算法骨架,将一些步骤延迟到子类实现,使得子类可以在不改变算法结构的同时就重新定义该算法的某些特定步骤。
适用场景:
A、算法或者操作遵循相似的逻辑
B、重构时(把相同的代码抽取到父类中)
C、重要、复杂的算法,核心算法设计为模板算法
优点:
A、封装性好
B、复用性好
C、屏蔽细节
D、便于维护
缺点:继承...
分类:
编程语言 时间:
2015-02-04 14:45:14
阅读次数:
240
很感谢黄岚老师的帮助,在她的指导下完成了论文的书写工作,现已被Ei检索。之前有过设计五子棋AI的想法,当时想的运用博弈树,一层一层搜索来完成,我的第一版确实也是这么做的。后来看到这个方法已经烂大街,并且衍生出很多变种,改进也很大,于是尝试着创新。无意中看到一篇文章:遗传算法:内存中的进化,生动的.....
分类:
编程语言 时间:
2015-02-04 10:56:01
阅读次数:
147
算法设计与分析基础(第3版)
p16 in-place翻译为‘在位’?‘就地’更合适点p38 amortized应翻译为‘均摊’,‘摊销’这个词简直莫名其妙(可能因为翻译是做算法交易导致的?)p64 迭代优于递归(迭代始终是增量式的,而递归就没办法增量了,除非能够dump整个运行时栈)p73 通过算法可视化得到一个更好的非递归算法(人的图像认知直觉思维?)p79 验证一个拓扑...
分类:
编程语言 时间:
2015-02-02 12:35:58
阅读次数:
239
在无序数组中查找最大或者最小的元素都需要进行n次比较,但是同时查找最大和最小的元素却可以在3n/2次比较内实现。
问题:给定一个长度为n的无序序列,同时查找出这个序列中的最大和最小值。
算法设计:如果只是在无序序列中查找最大或最小值,至少需要n-1次比较,但是同时查找出最大值和最小值却不需要2(n-1)次比较,而只需要3n/2次比较。其策略是:同时保存当前得到的最大值和最小值,之后依次...
分类:
编程语言 时间:
2015-01-28 21:28:17
阅读次数:
283
第一章算法回顾我接触算法设计已经5年了,从一开始零零散散,浅尝辄止,到现在全面学习,深入探究,学到了不少的优秀算法,在这里我想分享一下我这几年来总结的学习方法。1.算法回顾首先我先把看过的算法思想说一下,再介绍几种最近出现的新思想。1.1贪心思想顾名思义,贪心算法总是作出在当前看来最好的选择。也就是...
分类:
编程语言 时间:
2015-01-28 17:43:58
阅读次数:
190
我们在算法设计当中最常见的线性结构列表无非是一下几种:
1.数组:
数组应该是我最常用的一种。他的存储地址是连续的,就是当我们新开辟一个数组时,我们会给他分配一个连续的地址。由于他的地址是连续的,所以在我们知道他下标的时候,查找元素的速度非常快。
2.链表:
链表中的元素的位置不固定...
分类:
编程语言 时间:
2015-01-22 13:28:22
阅读次数:
221
摘要:前几天,看到一篇前辈的博文“程序猿必知的8大排序”,不禁的手痒起来,又一次翻开严蔚敏老师的《数据结构》复习了一遍,然后一一的用java去实现,当中有不足之处,还望各位道友指正出来。先来看看8种排序之间的关系:第一:直接插入排序1.基本思想:在要排序的一组数中,如果前面(n-1) [n>=2] ...
分类:
编程语言 时间:
2015-01-18 22:23:33
阅读次数:
346
通常对于大型的数据中心网络(Data Center Networks, 简称DCN)来说,每一台服务器的使用情况是非常不一样的,而平均使用的情况几乎不存在,大部分的情况都是70%的使用和流量需求会集中在一小部分的服务器上,而这个也是通过LAN网络构建云计算中心所必不可免的问题。
如图是大部分情况下数据中心服务器使用的热点情况:...
分类:
编程语言 时间:
2015-01-11 16:16:15
阅读次数:
230
这里直接给出代码,如果不理解请参考左万历版《计算机操作系统教程》,先在给出四中模拟算法。
1. 设计目的
了解动态分区分配中使用的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解。
2. 设计内容
1)用C语言实现采用首次适应算法的动态分区分配过程alloc()和回收过程free()。其中,空闲分区通过空闲分区链表来管理,在进行内存分配时,系统优先使用空...
分类:
其他好文 时间:
2015-01-11 13:35:33
阅读次数:
356