
C/C++
Sonihr
现于南京理工大学自动化学院攻读控制理论与控制工程硕士研究生。
展开
-
粒子群算法(初步)
本文参照:http://blog.youkuaiyun.com/liangyixin19800304/article/details/12361165给出了一种C++解决的方法,非常简单,希望与大家共同交流。目前我的疑惑是,在粒子群算法中的那些参数应该如何选取?1.惯性系数采用了线性变化的形式,在一开始注重大范围搜索,w值比较大为0.9,最后注重局部走索,w为0.4。(论文上说0.9到0.4)。2.通过查阅论...原创 2018-03-11 12:28:12 · 1081 阅读 · 0 评论 -
遗传算法(初步)
试求函数:x + 10 * sin(5 * x) + 7 * cos(4 * x)在0到9之间的最大值。如何通俗易懂地解释遗传算法?有什么例子? - 赵志强的回答 - 知乎https://www.zhihu.com/question/23293449/answer/120102627题目和一些解释就在上面,下面直接给出代码。//遗传算法#include "iostream"#include "...原创 2018-03-12 21:55:04 · 1222 阅读 · 2 评论 -
模拟退火算法(初步)
关于模拟退火算法的介绍在知乎,优快云都有很多前辈给出了自己的介绍,我认为都讲得很好。其实模拟退火算法应用于一维搜索的话,以概率为1收敛于最优,而且早熟收敛发生的概率很低。和粒子群相比,收敛速度慢,依赖于降温的速度,但是粒子群实在是太容易收敛到局部最优了,而且一旦到了局部最优就跳不出来了,因为粒子群算法是没有变异的。综合下来,我觉得遗传算法和模拟退火算法都比较优秀,在一维搜索的表现都比较好。当然,...原创 2018-03-12 22:03:00 · 3207 阅读 · 0 评论 -
一维搜索(斐波拉契法和黄金分割法)
看完了粒子群算法,模拟退火算法和遗传算法,那么,传统的一维搜索方法应该怎么样呢?我们来看看斐波拉契算法和黄金分割算法,大概20次以内就能算出来#include <stdio.h>#include <time.h>#include <math.h>#define f(x) (-(x + 10*sin(5*x) + 7*cos(4*x))) #defin...原创 2018-03-12 22:29:50 · 3780 阅读 · 0 评论 -
<LeetCode>695. 岛屿的最大面积
本题主要复习的是图的DFS。首先如何用递归去完成DFS呢?思路是这样的,首先找到目标点,然后从目标点发散开来。怎么发散?那就要有一个方向。没错,那我们需要实现方向,怎么实现?数组增减1咯,在后面的样例中我们用一个数组来表示方向。然后当我们到达新的方向之后怎么办?继续DFS,没错。怎么实现?那就是递归咯。等等,每次到达新的地方都要DFS么?当然不是,如果那个值是你要找的,那你就继续扩原创 2018-04-16 22:44:08 · 3921 阅读 · 1 评论 -
<LeetCode>49. 字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], [&qu原创 2018-06-30 13:35:48 · 442 阅读 · 0 评论 -
<LeetCode>96. 不同的二叉搜索树
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / ...原创 2018-06-30 14:25:14 · 460 阅读 · 0 评论 -
<LeetCode>24. 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。/** * Definition for singly-linked list. * struct ListNode { * ...原创 2018-07-12 16:36:59 · 283 阅读 · 0 评论