算法
ztono
某大厂后端工程师
展开
-
MPI实现A-star算法
MPI实现A-star算法(六角格地图) A-star算法 A星算法这里就不再赘述了,可以参考这篇文章: https://blog.csdn.net/qq_36946274/article/details/81982691 六角格 六角格的入门可以参考这篇: https://www.cnblogs.com/hoodlum1980/archive/2009/08/10/1542629.html 这里...原创 2020-04-12 21:47:06 · 482 阅读 · 1 评论 -
字符串匹配:kmp,bm和sunday算法
1.KMP算法先了解一下KMP的核心,跳转表: 跳转表是对于模式字符串而言,即你需要在目标字符串匹配到的内容。例如你想在ababdbccbababcd中匹配到baba,那么baba就是模式字符串。 下面介绍跳转表的实现方法: 跳转表的匹配是匹配前后缀,匹配目标是永远从第一个字符开始的字符串的字串,例如baba这个字符串: 匹配目标 前缀 后缀 跳转值 ba b a原创 2017-08-28 18:46:23 · 557 阅读 · 0 评论 -
布隆过滤器
布隆过滤器布隆过滤器的原理是通过一个将要存储的元素用k个哈希函数总计进行k次哈希映射,并在具有m个bit的数组上标出。 一般我们把这m个字节初始化为0,然后当存入一个元素时,把对应的k个bit变为1。 这样要查找一个元素,只要看看对应的bit是否为1就行,如果对应的k个bit不全为1,那么这个元素一定不存在;但是要注意,就算全为1,并不代表这个元素一定存在,原因也是很容易想到,当某个元素的对应的原创 2017-08-28 19:47:20 · 315 阅读 · 0 评论 -
素数筛法以及其并行优化(MPI)
1.素数筛法1.创建一个自然数列表2,3,4……n 2.令k=2,把在列表内的所有k的倍数删去 3.然后找出最小的那个比k大的数 重复2.3步骤,知道k^2>=n2.并行思想1.交叉数据分解 即把数组元素进行分解,例如: 进程0负责2+k,2+2k,2+3k 进程1负责3+k,3+2k,3+3k 这个很容易确定哪个进程负责哪个下标,但是他的缺点也是显而易见的,最后还是需要规约化和广播操原创 2017-10-07 15:13:27 · 3626 阅读 · 4 评论 -
开始学算法1
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i],并且从第i个加油站前往第i+1个加油站需要消耗汽油cost[i]。你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。public class Solution { /* * @param gas: An ar原创 2017-10-29 19:26:24 · 231 阅读 · 0 评论 -
分治法求最大连续和的问题
分治法求最大连续和题目给出一个长为n的序列,求最大连续和解析对整个序列进行对半拆分,发现其就只有两种情况,第一种是最大序列完全在左半边或者右半边,第二种情况是左右半边都有,由此我们可以写出代码。//a stands for the input array,d stands for the lower bound,h snads for the higher bound int maxsum(int原创 2017-08-15 20:53:48 · 496 阅读 · 0 评论