
算法
文章平均质量分 54
Reacubeth
imperfect but true
展开
-
对比学习Python实现
对比学习是一种通过对比正反两个例子来学习表征的自监督学习方法。对于自监督对比学习,下一个等式是对比损失:Li,j=−logexp(zi⋅zj/τ)∑k=1,k≠i2Nexp(zi⋅zk/τ) \mathcal{L}_{i,j} = - \log \frac{exp(\textbf{z}_i \cdot \textbf{z}_j / \tau)}{\sum_{k=1,k\neq i}^{2N}exp(\textbf{z}_i \cdot \textbf{z}_k / \tau)}Li,j=−log∑原创 2022-01-13 18:19:12 · 6339 阅读 · 0 评论 -
Leetcode1293.网格中的最短路径
给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物)。每一步,您都可以在空白单元格中上、下、左、右移动。如果您 最多 可以消除 k 个障碍物,请找出从左上角 (0, 0) 到右下角 (m-1, n-1) 的最短路径,并返回通过该路径所需的步数。如果找不到这样的路径,则返回 -1。示例 1:输入:grid =[[0,0,0],[1,1,0],[0,0,0],[0,1,1],[0,0,0]],k = 1输出:6解释:不消除任何障碍的最短路径是 10。消除位置原创 2020-10-24 00:04:11 · 1142 阅读 · 0 评论 -
速读-A3基于注意力机制的神经网络处理器
论文:Ham, Tae Jun, et al. “A^ 3: Accelerating Attention Mechanisms in Neural Networks with Approximation.” 2020 IEEE International Symposium on High Performance Computer Architecture (HPCA). IEEE, 2020.SJTU-CS7331-高级计算机系统架构 阅读材料HPCA,CCF-A体系结构顶会。随着神经网络计算需原创 2020-10-16 20:51:43 · 1669 阅读 · 0 评论 -
GCC图神经网络预训练概述
PaperGCC: Graph Contrastive Coding for Graph Neural Network Pre-TrainingConference: KDDKeywords: Contrastive Learning, Instance Discrimination, Transferability, Pre-trainingRecent WorkHowever, most representation learning work on graphs has thus far f原创 2020-09-30 12:28:50 · 958 阅读 · 0 评论 -
可视化图布局算法简介
Fruchterman Reingold (FR)FR算法将所有的结点看做是电子,每个结点收到两个力的作用:其他结点的库伦力(斥力)fa(d)=d2kf_{a}(d)=\frac{d^{2}}{k}fa(d)=kd2边对点的胡克力(引力)。fr(d)=−k2df_{r}(d)=\frac{-k^{2}}{d}fr(d)=d−k2该算法遵循两个简单的原则:有边连接的节...原创 2020-02-01 17:02:22 · 7349 阅读 · 0 评论 -
用户身份链接方法——DeepLink
论文:DeepLink: A Deep Learning Approach for User Identity Linkage**UIL(User Identity Linkage):**用户身份链接,通过方法发现跨社交平台上同一用户或者实体。即跨社交平台的同对象识别,UIL在用户行为预测、身份识别和隐私保护方面有很大的作用。摘要目前为了处理用户身份链接采用了依赖多社交平台相关特征提取的基...原创 2020-01-27 20:00:33 · 2073 阅读 · 0 评论 -
基于稀疏大规模矩阵的多目标进化算法简介
简介可以看到本文的特色图片是个极度稀疏连接的神经网络,它是由我们即将介绍论文中的算法SparseEA得到的。此篇论文是BIMK的田野、张兴义等人发表在IEEE Transactions on Evolutionary Computation(SCI 一区)期刊上的,时间2019.4。论文提出了一种解决大规模稀疏问题的多目标算法,大规模稀疏存在于许多领域:机器学习、数据挖掘、神经网络。作...原创 2019-06-02 08:50:18 · 2262 阅读 · 6 评论 -
FatMouse’ Trade
简介贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。FatMouse’ TradeFatMouse’ TradeTime Limit:...原创 2019-04-18 10:09:43 · 482 阅读 · 0 评论 -
三路快排C++实现与应用
本文共467个字,预计阅读时间需要2分钟。三路快排是快速排序算法的升级版,用来处理有大量重复数据的数组。主要思想是选取一个key,小于key的丢到左边,大于key的丢到右边,递归实现即可。具体操作过程参考:https://blog.youkuaiyun.com/k_koris/article/details/80585979C++代码:#include<iostream> usin...原创 2019-04-06 12:29:57 · 1319 阅读 · 0 评论 -
动态规划——最大整除子集C++
来自LeetCode 368描述给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0。如果有多个目标子集,返回其中任何一个均可。此题类似于求最长递增子序列http://www.omegaxyz.com/2017/05/12/longest_ascending_sequence/class...原创 2019-04-06 12:24:47 · 795 阅读 · 0 评论 -
DBSCAN聚类算法Python实现
原理DBSCAN是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。通过将紧密相连的样本划为一类,这样就得到了一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别,则我们就得到了最终的所有聚类类别结果。一些概念x1是核心对象,x2由x1密度直达,x...原创 2019-03-30 20:26:54 · 35862 阅读 · 19 评论 -
算法复杂度与NP问题
引言美剧《基本演绎法》S2E2中,两位研究 NP 问题的数学家被谋杀了,凶手是同行,因为被害者即将证明“P=NP 问题”。假设人类证明了P=NP 是真的,那么就会有一个算法,能够很快算出某个帐号的密码。《基本演绎法》里面所想象的可能就要成真了,所有的加密系统都会失去效果——应该说,所有会把密码变成数字信息的系统都会失去效果。一大批耳熟能详的游戏,如扫雷、俄罗斯方块、超级玛丽等,人们将为它们编写...原创 2019-05-02 19:14:51 · 4427 阅读 · 1 评论 -
素数筛C++
埃拉托斯特尼筛法(sieve of Eratosthenes ) 是古希腊数学家埃拉托斯特尼发明的计算素数的方法。对于求解不大于n的所有素数,我们先找出sqrt(n)内的所有素数p1到pk,其中k = sqrt(n),依次剔除Pi的倍数,剩下的所有数都是素数。具体操作如上述 图片所示。C++实现#include<iostream>#include<vector>u...原创 2019-05-02 19:17:11 · 1165 阅读 · 0 评论 -
Levenshtein编辑距离C++实现
简介Levenshtein Distance是1965年由苏联数学家Vladimir Levenshtein发明的。Levenshtein Distance也被称为编辑距离(Edit Distance)。在信息论和计算机科学中,Levenshtein Distance是一个度量两个字符序列之间差异的字符串度量标准,两个单词之间的Levenshtein Distance是将一个单词转换为另一个单...原创 2019-05-02 19:23:32 · 2905 阅读 · 0 评论 -
回溯法——素数环C++实现
本文共928个字,预计阅读时间需要3分钟。回溯法简介回溯法按深度优先策略搜索问题的解空间树。首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利用剪枝函数判断该节点是否可行(即能得到问题的解)。如果不可行,则跳过对该节点为根的子树的搜索,逐层向其祖先节点回溯;否则,进入该子树,继续按深度优先策略搜索。回溯法的基本行为是搜索,搜索过程使用剪枝函数来为了避免无效的搜索。剪枝函数包...原创 2019-06-02 08:53:55 · 4231 阅读 · 0 评论 -
Prime Path素数筛与BFS动态规划
本文共2053个字,预计阅读时间需要6分钟。BFSBFS,其英文全称是Breadth First Search。 BFS并不使用经验法则算法。从算法的观点,所有因为展开节点而得到的子节点都会被加进一个先进先出的队列中。一般的实验里,其邻居节点尚未被检验过的节点会被放置在一个被称为 open 的容器中(例如队列或是链表),而被检验过的节点则被放置在被称为 closed 的容器中。(open-cl...原创 2019-06-02 08:56:45 · 310 阅读 · 0 评论 -
并查集应用——PAT甲级2019春季
并查集适用问题举例1、已知,有n个人和m对好友关系2、如果两个人是直接的或者间接的好友(好友的好友的好友。。。),那么他们属于一个集合,就是一个朋友圈中3、写出程序,求这n个人中一共有多少个朋友圈更详细请查看http://www.omegaxyz.com/2019/02/25/union-find/PAT-2019年春季考试-甲级-3Telefraud(电信诈骗) remains a...原创 2019-07-24 10:07:07 · 423 阅读 · 0 评论 -
动态规划-最大的正方形面积
题目表述Given a 2D binary matrix filled with 0’s and 1’s, find the largest square containing only 1’s and return its area.For example, given the following matrix:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0...原创 2019-09-14 14:27:13 · 614 阅读 · 0 评论 -
数据结构Huffman树及编码
一、 实验目的构造一个哈夫曼树,并根据所构造的哈夫曼树求其哈夫曼树的编码; 二、 基本思路将每个英文字母依照出现频率由小排到大,最小在左,组成一个序列每个字母都代表一个终端节点(叶节点),比较每个字母的出现频率,将最小的两个字母频率相加合成一个新的节点,将两个字母从序列中删除,将生成的节点加入到字母队列中重复前面两步,直到序列中没有字母为止 进行编码:给霍夫曼树的所有左链结’0’与右链结原创 2017-06-16 23:42:56 · 2191 阅读 · 2 评论 -
NSGA2算法中文详解与MATLAB实现整理
NSGA2算法NSGA-II多目标遗传算法概述http://www.omegaxyz.com/2017/04/14/nsga-iiintro/NSGA2算法MATLAB实现(能够自定义优化函数)http://www.omegaxyz.com/2018/01/22/new_nsga2/NSGA2算法特征选择MATLAB实现(多目标)http://www.omegaxyz.co...原创 2019-03-07 20:55:25 · 20847 阅读 · 12 评论 -
经典蝙蝠算法MATLAB实现
为什么会有这么多基于群智能的算法,蚁群、粒子群、鱼群、烟花、炮竹、猪群、牛群、马群、羊群、猴群、鸡群。。。算法。??????黑人问号.jpg蝙蝠算法( BA) 是 Yang 教授于 2010 年基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。该算法是一种基于迭代的优化技术,初始化为一组随机解,然后 通过迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强了局部搜索。...原创 2019-02-24 21:19:42 · 24005 阅读 · 50 评论 -
二叉树遍历的转换C++实现
二叉树的遍历分为以下三种:先序遍历:遍历顺序规则为【根左右】中序遍历:遍历顺序规则为【左根右】后序遍历:遍历顺序规则为【左右根】什么是【根左右】就是先遍历根,再遍历左节点,最后遍历右节点。举例来说:先序遍历:ABCDEFGHK中序遍历:BDCAEHGKF后序遍历:DCBHKGFEA在转换过程中要注意:先序遍历根节点在首项中序遍历根节点在中间后序遍历根节点在最后因...原创 2019-02-01 15:53:42 · 1451 阅读 · 0 评论 -
稳定排序和不稳定排序
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后原创 2017-08-07 11:27:47 · 441 阅读 · 0 评论 -
课程设计哈夫曼编/译码系统
更多内容访问:omegaxyz.com 问题描述:利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(解码)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站设计一个哈夫曼编译码系统。1.基本要求(1)初始化(Initialzation)。原创 2017-07-03 10:29:01 · 4785 阅读 · 21 评论 -
课程设计旅游景点咨询系统
欢迎访问我的网站:omegaxyz.com 问题描述:创建一个至少有15个点的有向网表示的某个旅游景点的导游图。顶点代表景点,类型为字符串(例如,泰山导游图:“天地广场门”,“十八盘”,“冯玉祥墓”,“桃花峪门”,“中天门”,“南天门”,“玉皇顶”等),弧表示两个景点之间可以直达,弧上的权值表示两个景点之间的路程(公里数),弧上还有到达方法的信息(有步行和索道两种)。建立一个游客咨询系统。1.基本原创 2017-07-22 09:36:33 · 3318 阅读 · 2 评论 -
迷宫问题的通用解法C语言数据结构实现
1.1问题描述 以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。1.2基本要求 输入的形式和范围: 非递归:行列为整型,坐标为整型递归:迷宫以整型二维数组形式输入输出的形式:非递归输出三元组通路和方阵通路; 递归以方阵输出迷宫和所有通路;1、非递归算法,求一条通路输出三元组形式如:(1,1,1)原创 2017-06-19 23:20:02 · 7290 阅读 · 1 评论 -
求n!的位数以及求n!具体的值(C or C++)
首先我们先求n!位数 可以将n!表示成10的次幂,即n!=10^M(10的M次方)则不小于M的最小整数就是 n!的位数,对该式两边取对数,有 M =log10^n! 即: M = log10^1+log10^2+log10^3…+log10^n 循环求和,就能算得M值,该M是n!的精确位数。#include<iostream>#include<cmath>原创 2017-03-05 15:30:37 · 4102 阅读 · 0 评论 -
AOJ-759 会绕圈的数
会绕圈的数Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB Total Submission: 29 Submission Accepted: 16 Description 任意一个正整数,把它的每一位数字都平方后相加得到一个数;将这个数的每一位数字再平方相加;依次进行就会产生循环现象。 例如:1原创 2017-03-18 15:33:25 · 670 阅读 · 0 评论 -
AOJ-776 马的走法 动态规划
马的走法Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB Total Submission: 14 Submission Accepted: 10 Description 在一个4×5的棋盘上,输入马的起始位置坐标(纵,横)位置,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日原创 2017-03-18 15:29:17 · 806 阅读 · 0 评论 -
计算24点程序代码
如何计算二十四点#include<stdio.h>char mark[4]={'+','-','*','/'};float cal(float x,float y,int mark){ switch(mark) { case 0:return x+y; case 1:return x-y; case 2:return x*y; case 3:return原创 2017-01-24 17:23:48 · 20529 阅读 · 7 评论 -
数据结构串的基本操作及KMP算法
将串的基本操作C语言实现,实现KMP算法算出NEXT函数和NEXTVAL的值。SqString.h的基本内容typedef int Status;typedef struct{ unsigned char data[MAXSTRLEN+1]; int length;}SString;Status StrInput(SString &S);void StrAssign(SStr原创 2017-08-07 11:35:24 · 1500 阅读 · 0 评论 -
NSGA2算法中文版详细介绍
NSGA2主要是对NSGA算法的改进。NSGA是N. Srinivas 和 K. Deb在1995年发表的一篇名为《Multiobjective function optimization using nondominated sorting genetic algorithms》的论文中提出的。该算法在快速找到Pareto前沿和保持种群多样性方面都有很好的效果,不过在这么多年的应用中也出现了如下的原创 2017-09-01 15:14:31 · 45402 阅读 · 11 评论 -
遗传算法解决TSP问题MATLAB实现(详细)
问题定义:巡回旅行商问题给定一组n个城市和俩俩之间的直达距离,寻找一条闭合的旅程,使得每个城市刚好经过一次且总的旅行距离最短。TSP问题也称为货郎担问题,是一个古老的问题。最早可以追溯到1759年Euler提出的骑士旅行的问题。1948年,由美国兰德公司推动,TSP成为近代组合优化领域的典型难题。TSP是一个具有广泛的应用背景和重要理论价值的组合优化问题。 近年来,有很多解决该问题的较为有效...原创 2019-02-01 15:49:05 · 84215 阅读 · 69 评论 -
蚁群算法最短路径规划多出口情况及问题答疑
最近好多人问我蚁群算法最短路径规划如何设置多出口情况,原来2019年美赛D题“拯救卢浮宫”需要用到。本人没有看过美赛的题目,下面给出一些不成熟的代码。蚁群算法简介:蚁群算法最早是由Marco Dorigo等人在1991年提出,他们在研究新型算法的过程中,发现蚁群在寻找食物时,通过分泌一种称为信息素的生物激素交流觅食信息从而能快速的找到目标,据此提出了基于信息正反馈原理的蚁群算法。单出口情况:...原创 2019-02-01 15:26:26 · 3278 阅读 · 4 评论 -
基于WMD(词移距离)的句子相似度分析简介
word2vecword2vec是只有一个隐层的全连接神经网络,对语料中的所有词汇进行训练并生成相应的词向量(Word Embedding)WI 的大小是VxN, V是单词字典的大小, 每次输入是一个单词, N是设定的隐层大小。word2vec的模型通过一种神经网络语言模型(Neural Network Language Model)word2vec详解:http://www.omegaxy...原创 2018-12-09 11:43:54 · 3324 阅读 · 1 评论 -
进化计算中基于分类的预处理代理模型
问题提出代理模型的构造较复杂,作者希望构造一个更为简单的廉价(cheap)的代理模型来评估子集的质量。因此作者提出了一个叫做CPS(classification based preselection)算法。预选择(preselection)在进化算法中,预选择是一种分类问题。准确地说,是将子代解作为外部数据集进行二分类,分为promising和unpromissing的解。CPS的主要...原创 2018-11-29 08:46:49 · 1832 阅读 · 0 评论 -
Python支持向量机(SVM)实例
SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。Matlab中有林智仁编写的libsvm工具包可以很好地进行进行SVM训练。Python中我们有sklearn工具包来进行机器学习算法训练,Scikit-Learn库已经实现了所有基本机器学习的算法。以下内容参考自ht原创 2018-01-13 17:04:41 · 11654 阅读 · 0 评论 -
变邻域搜索算法(Variable Neighborhood Search,VNS)
先说一下局部搜索:局部搜索是解决最优化问题的一种启发式算法。对于某些计算起来非常复杂的最优化问题,比如各种NP完全问题,要找到最优解需要的时间随问题规模呈指数增长,因此诞生了各种启发式算法来退而求其次寻找次优解,是一种近似算法(Approximate algorithms),以时间换精度的思想。局部搜索就是其中的一种方法。变邻域搜索算法的主要思想是:采用多个不同的邻域进行系统搜索。首先采用最小的邻域原创 2017-11-27 17:47:37 · 18620 阅读 · 3 评论 -
合作协同进化算法概述(Cooperative Coevolution)
合作协同进化(Cooperative Coevolution)是求解大规模优化算法一个有效的方法。将大规模问题分解为一组组较小的子问题。而合作协同进化的关键是分解策略。分解策略的分类:①随机分解:随机选择基因的顺序,但是用户要决定组的数量和组的大小。②扰动:使用若干方法扰动决策变量尝试对变量进行分组。③模型建构:基于个体数量s的概率模型,在进化过程中迭代更新。下面是CC算法不同的分解策略体现的论文:原创 2017-10-15 22:37:32 · 13250 阅读 · 0 评论 -
特征选择算法综述
特征选择(feature selection)作为一种常见的降维方法是模式识别的研究热点之一。 它是指从原始特征集中选择使某种评估标准最优的特征子集。 其目的是使选出的最优特征子集所构建的分类或回归模型达到和特征选择前近似甚至更 好的预测精度,这不但提高了模型的泛化能力、可理解性和计算效率,同时可降低“维度灾难”的发生频率。在机器学习领域中,特征选择被认为是跟学习算法紧密联系的一个问题,可表述为:原创 2017-09-01 15:23:08 · 7934 阅读 · 0 评论