算法描述:检查每个基因解决问题的能力,并量化此能力值选出当前记忆库中的基因作为父代。选择原则是:解决能力越强的别选到的概率越大。将选出的两者根据杂交率进行杂交,生成子代根据变异率对子代进行变异重复2、3、4,直到新的世代产生完毕现在要使用这个算法来解决下列寻路问题:有一个如图所示的随机生成的迷宫,在...
分类:
编程语言 时间:
2015-02-27 20:02:53
阅读次数:
154
//排序10个0-100之间数字 //定义int数组 //这里生成包含101个个数数组是以为要对应输入的值 到对应到数组的index 譬如输入10 对应a[10] int a[101]; //数组赋值 生成 fo...
分类:
编程语言 时间:
2015-02-27 16:50:14
阅读次数:
142
算法基础知识算法的五大要素
有穷性:算法必须能够在有限个步骤内完成。
确定性:算法的每一步必须有确定的定义。
输入
输出
可行性:算法的每个步骤都必须能分解为基本的可执行操作,每个步骤都必须能在有限时间内完成
循环不变式循环中的循环不变式可以帮助我们理解算法的正确性。为了证明算法的正确,必须证明循环不变式的三个性质:
1. 初始化:循环不变式在循环开始之前是正确的。
2. 保持:循环不变式在循环...
分类:
编程语言 时间:
2015-02-25 19:56:35
阅读次数:
163
图
之前学了链表,队列,堆栈等~
然后学树,二叉树~
现在学图,实际上就是结构看起来复杂了一点,点与点之间关系更多了。
图表示
图有两种表示方法:
邻接表邻接链表
这两种表示方法都可以表示所有图,他们之间的区别是所用的空间不一样。邻接表就是用二维数组来表示一个图。所需空间为O(N^2)。(M为边数量, N为点数量)。而邻接链表的表示方法更适合稀疏图(就是边比较少的...
分类:
编程语言 时间:
2015-02-04 00:38:28
阅读次数:
273
学习机器学习算法真的是一件令人头疼的事,我们有那么多的论文、书籍、网站可以参考,它们或是精炼的数学描述(mathematically),或是一步一步的文本介绍(textually)。如果你足够幸运,可能还会找到一些伪代码。如果人品爆发,甚至会被告知如何安装。但是,全靠人品毕竟不是长久之计,详尽的算法...
分类:
编程语言 时间:
2015-01-28 13:00:38
阅读次数:
219
排序的目的就是对一组无序的元素按照一定的次序排列起来。那么总的来说排序要做到事情就只有两件,找到各个元素按照一定次序排列后的位置并把各个元素移动到其所对应的位置。由此看出决定一个排序算法效率的因素也就是这两个:
寻找元素位置所消耗的时间
移动元素到其对应位置所消耗的时间
下面是一些常用的排序算法:
...
分类:
编程语言 时间:
2015-01-26 18:54:24
阅读次数:
245
算法思想:基本的思想为分治算法,也就是将一个问题分成多个更小的部分递归解决。具体到合并排序,就是将待排序序列分为小的序列,递归进行排序,然后合并。步骤:1、分解:将n个元素分成各含n/2个元素的子序列2、解决:用合并排序对两个子序列递归排序3、合并:合并两个已排序的子序列以得到排序结果在对子序列排序...
分类:
编程语言 时间:
2015-01-23 21:24:23
阅读次数:
225
基本思想:二分法的一个前提是序列已经是有序的,然后将待查找值与序列的中点比较。根据比较结果,选择下一步比较的部分。二分查找(binary search)就是一个不断重复这一查找过程,直到找到这个值。算法复杂度:O(lgn)算法实现:一:迭代法int bin_search_iteration(int ...
分类:
编程语言 时间:
2015-01-23 21:23:08
阅读次数:
201
基本原理:比较相邻的元素。每一轮选出一个最大的元素,重复这个过程算法复杂度:O(n2)算法实现:void Bubblesort(int array[],int n){ int temp; for (int j = 0; j != n-1;++j) { for (int...
分类:
编程语言 时间:
2015-01-23 21:20:54
阅读次数:
220
算法思想:A[i]插入到已排序好的A[0,1,2,...i-1]的过程为将A[i]与已排序好的元素比较,找到其应插入的位置,将其后的元素后移一位。循环这一过程即可完成排序⒈ 从第一个元素开始,该元素可以认为已经被排序⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描⒊ 如果该元素(已排序)大于新...
分类:
编程语言 时间:
2015-01-23 21:20:47
阅读次数:
168