+ 算法
使用于开发人员的算法
youaresherlock
江湖人称狗哥!
展开
-
如何检测文件内容是否改变?
如:python解释器解释pyc文件是否过:在生成pyc文件的同时,写入了一个Long型的变量,用于记录最近修改的时间,每次载入都会检查py文件和pyc文件修改日期是否一致,不一致则生成新的文件校验:比如下载一些文件,包之类的会有md5或sha256校验值文件(文件名.sha256,文件名.md5等等),里面是校验值,我们可以将下载的文件用算法签名后与之对比来检测文件内容是否被篡改git status判断文件内容是否被改变:大概原理是先会比较文件的修改时间,文件大小等一些文件元数据原创 2021-07-09 11:47:19 · 2579 阅读 · 0 评论 -
辗转相除法求最大公约数
欧几里得的GCD算法也称为辗转相除法,定理是这样子的: gcd(a, b) = gcd(b, a mod b) (a > b 且 a mod b 不为0)两个整数的最大公约数是能够同时整除他们的最大正整数。并且有两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数.下面是求最大公约数的简单示意图我们简单证明一下这个定理: 我们假设a > b, a可以表示成a =...原创 2018-03-22 18:54:24 · 604 阅读 · 0 评论 -
蓄水池抽样问题
在阅读编程珠玑12章出现了这个算法,所以特地看了一个博客如何在事先不知道文本文件行数n的情况下读取该文件,从中随机选择并输出一行?(事先不知道n的大小,但是一次可以看到这n个对象)即蓄水池抽样(Reservoir Sampling)问题证明如下: 问题: 证明当前任意一行为取出行的概率为1/i,i为当前扫描到的行号,也即每一行取出的概率相等 我们用数学归纳法来证明,当i=1时,当前只浏览...转载 2018-06-29 18:06:19 · 376 阅读 · 0 评论 -
Python实现二叉树的7种遍历方式
使用Python实现二叉树的构造,以及各种递归和非递归的遍历方法,具体可以看我的github,会有后续的更新,一般的一些代码可能不会写成博客。https://github.com/youaresherlock/TreeTraversing# -*- coding: utf-8 -*-# @Author: xiweibo# @Date: 2018-08-21 12:26:38# ...原创 2018-08-21 15:24:43 · 441 阅读 · 2 评论 -
粒子群算法(PSO,gbest与lbest)
github: 智能算法的课件和参考资料以及实验代码 粒子群算法的原理:粒子群算法是一种群体智能算法,通过追随当前搜索到的最优值来寻找全局最优。该算法实现容易、精度高、收敛快,在解决实际问题中具有很大的优越性。主要步骤可描述如下:1、初始化粒子群位置和速度。2、计算每个粒子的适应度,确定全局最优粒子gbest和个体最优粒子pbest。3、判断算法收敛准则是否满足,若满足,...原创 2018-10-28 23:38:48 · 9009 阅读 · 0 评论 -
粒子群算法和遗传算法的比较
粒子群算法(PSO)和遗传算法(GA)都是优化算法,都力图在自然特性的基础上模拟个体种群的适应性,它们都采用一定的变换规则通过搜索空间求解。 PSO和GA的相同点: (1)都属于仿生算法。PSO主要模拟鸟类觅食、人类认知等社会行为而提出;GA主要借用生物进化中“适者生存”的规律。 (2)都属于全局优化方法。两种算法都是在解空间随机产生初始种群,因而算法在全局的解空间进行搜索,...转载 2018-11-22 10:31:51 · 34537 阅读 · 0 评论 -
求第n个质数
如果要求第10万个素数,求第1000万个素数,有什么好的算法可以优化性能?这里我给出求小质数的python代码#!usr/bin/python# -*- coding:utf8 -*-import timefrom math import sqrtPW = 100000def is_prime(n): for i in range(3, int(sqrt(n)) ...原创 2019-05-15 10:18:06 · 3638 阅读 · 0 评论