
DataStructure&Algorithm
文章平均质量分 60
-眭-
这个作者很懒,什么都没留下…
展开
-
__遗传算法__手工计算实例__
遗传算法的手工模拟计算示例为更好地理解遗传算法的运算过程,下面用手工计算来简单地模拟遗传算法的各 个主要执行步骤。 例:求下述二元函数的最大值: (1) 个体编码 遗传算法的运算对象是表示个体的符号串,所以必须把变量 x1, x2 编码为一种 符号串。本题中,用无符号二进制整数来表示。转载 2015-05-11 09:16:04 · 827 阅读 · 1 评论 -
遗传算法 解决TSP问题 C++实现(一)
最近学习人工智能刚好学到了遗传算法,虽然我们的老师就让我们down一个就ok了,不过出于对于研究算法的爱好,就花了一天的功夫整了一下,感觉效率还可以,就记录一下coding的思路,和大家分享一下。遗传算法介绍 遗传算法(Genetic Algorithm,简称GA)是一种启发式搜索算法,它模拟的是达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,通过不断的进化和遗传来搜索最优解。原创 2015-05-16 10:20:36 · 9325 阅读 · 3 评论 -
遗传算法 TSP问题 C++实现 (二)
在上一篇我们介绍了Genome类的一大堆函数,大家不要慌,所谓需求驱动进步,我们就着遗传算法的流程图中的三大关键算子(selection,copulation,heteromorphosis)来看,这样我们就会很自然的思考出来思路而不必陷入一大堆函数里不知所措。注意!!! 一些很简单的函数,比如某变量的get(),set(),作者就不在赘述,避免篇幅膨胀。初始化在所有的函数开始之前我们要初始化我们即原创 2015-05-16 11:41:54 · 2956 阅读 · 3 评论 -
遗传算法 TSP问题 C++实现 (三)
话不多说,进入主题,作者为了写这三篇已经要饿死了。交叉算法交叉算法其实说起来很简单,就是将两个选择的个体的随机DNA片段交换。 简单吧,但是在具体实现起来还是有一些细节问题。比如新过来的DNA片段可能有重复.个体1DNA: | 1 | 2 | 3 | 4 | 5 | 6 |个体2DNA: | 2 | 3 | 5 | 1 | 6 | 4 | 假设两个个体的第3,4位DNA片段要交换(上述加粗部原创 2015-05-16 13:15:01 · 3049 阅读 · 5 评论 -
STL map find_if
事出有因,今天刷leetcode的时候需要用到用一个map来记录每一个字母出现的下标映射。(Isomorphic Strings) 一开始考虑使用了: map< char, vector<int> >但是会遇到一个问题,就是map在存储元素的时候会自动调整内部的顺序,导致最后存储的字母的顺序变化,映射匹配的时候出错。所以只能使用vector< char, vector<int> >但是这样的一个问原创 2015-05-29 18:00:54 · 649 阅读 · 2 评论 -
LeetCode - NimGame
开始刷算法题了,尽量一天一道。 一、分析拿到一道题目,首先我们要冷静分析,千万不要一上来就直接搞代码,那样纯粹是浪费时间。偏偏这是我这种初级程序员最喜欢干的。这个题最初的意思是:两个人拿石头,每一次只能拿1~3块石头,“我”先拿,最后拿的人胜利,且我和对手都是聪明且想赢的。翻译成中文之后我们需要抽象这道题的意思,把它再翻译成数学语言。两个人拿石头,其实就是对一个数字做减法。我先拿,其原创 2016-02-14 22:43:45 · 738 阅读 · 0 评论 -
Leetcode -Delete Node in a Linked List !
多坚持了一天。多亏今天还有一道easy的题。。 一、分析这题就是说: 删除一个单向链表的某个节点,但是只给你要删的这个节点,没有头结点。一看这题,给人第一个感觉估计就是没头绪,这单向链表,你不给我前面的节点,怎么能删除这个节点呢。其实这都是这个题的名字作怪:Delete Node in a Linked List,它一上来就告诉你,我是删了这个节点了,你肯定会想删节点我要找前面的节点,然后原创 2016-02-15 21:07:21 · 516 阅读 · 0 评论