算法
文章平均质量分 74
海边的琥珀川
岁月长 衣裳薄
展开
-
C语言-遗传算法(GA)
遗传算法是比较经典的群体智能算法,属于随机搜索算法的一种。遗传算法属于全局性搜索算法,因为存在基因交叉互换和基因突变,因此比较不容易陷入局部最优。遗传算法的本质是随机生成一些合理的解,通过计算代入变量得出的值,优胜劣汰,保存优良解,淘汰不良解,再通过随机地两两交配互换对应变量的值以及改变某解中的某一变量来生成新的解向量,这些过程可以称之为适应度评估,交叉,突变。对于交配对象的分配,本算法使用轮...原创 2018-03-10 23:02:13 · 6462 阅读 · 3 评论 -
C语言-粒子群算法(PSO)
粒子群算法是一种全局随机搜索算法,收敛速度比遗传算法快但容易陷入局部最优,但是可以通过调整权重ω自适应来提升性能。 粒子群最主要的本质是通过综合粒子历史最佳位置和全局最佳位置的影响加上惯性因子ω来生成下一代(下一个位置),计算的公式主要是: vi = ω×vi + c1×r1×(pBesti-xi) +c2×r2×(gBesti-xi) xi = xi +vi 具体代码如下(其他都与GA差不多)v...原创 2018-03-18 09:00:23 · 1311 阅读 · 0 评论 -
《算法导论》学习笔记(一)
今日开始学习《算法导论》这本巨著,记录下一些心得。 以下是第二章:算法基础的内容。 如果从理论上分析一个算法的正确性,其实是一件不容易的事,因为你无法通过穷举所以情况来验证正确性,所以就需要一套理论可以通过合理的逻辑以及使用递推和归纳的手段来验证其正确性。这里有点像高中数学中数列的证明题一样,递推和数学归纳是一种重要的数学(骗分)手段。2.1插入排序先实现一个经典的排序算法,插入排序:vo...原创 2018-03-18 11:13:54 · 802 阅读 · 0 评论 -
《算法导论》学习笔记(二)
第3章 函数的增长 这部分的内容和高中数学的数列部分内容相近,用极限的思想去看待问题,发现两者有惊人相似的本质,这与算法本身处理的数据是离散的这点本质密切相关。算法的时间复杂度用指令或者操作总次数来表述,那么这就涉及到数列的求和问题,其中包括数列的上界和下界,以及上确界和下确界(对应算法分析中的“渐进紧确界”asymptotically bound)。大体的思想和数列证明题相似,O记号和Ω记号表...原创 2018-03-25 23:00:27 · 515 阅读 · 0 评论 -
oj_18.04.19
1.数字三角形问题问题描述:给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。73 88 1 02 7 4 44 5 2 6 5问题分析:该问题的关键是,并非可以随意选择一层中的任意一个数字,路径的意思是层与层之间经过的数字是相邻的,因此不能用从n-1层递归到n层的思想。因此,本题的求解还是暴力求解,不过可以通过保存运算结果...原创 2018-04-20 08:57:27 · 197 阅读 · 0 评论