算法
Oeljeklaus
python开发,大数据,图数据,数据分析
展开
-
hash算法 (hashmap 实现原理)
Hash ,一般翻译做“ 散列” ,也有直接音译为“ 哈希” 的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不 同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。HAS原创 2017-03-13 17:08:09 · 338 阅读 · 0 评论 -
图算法:最短路径之迪杰斯特拉算法
Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述:在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i原创 2017-12-17 11:04:27 · 1370 阅读 · 0 评论 -
图算法:最小生成树算法之KrusKal
最小生成树算法之KrusKal在上一章中,我们已经介绍了最小生成树的算法之一Prim算法,该算法是一个贪心算法,主要是随机选一个开始点,在找出与这个点相关的最小边,然后加入到生成树中,然后在一次重复上述过程,直到所有的点都遍历完为止。今天要介绍的Kruskal算法,也是一种贪心策略,与Prim不一样的是,这里不是使用点来得到最小生成树,而是采用边来生成最小生成树。该算法的主要思想是,将图中原创 2017-12-16 15:54:24 · 1299 阅读 · 0 评论 -
图算法之最小生成树算法(prim)
一个图的生成树为,该生成树的点集合V等于图的点集合V,树的边E‘是图边集合E的子集,最小生成树是这些边集合的所有边的权值之和最小。这里介绍一种求最小生成树的算法,即prim算法;这是一个贪心算法,这个算法的思想是从一个点开始,找到所有的边,将这个点到所有点的开销,也就是边的权值;利用一个数组存储所有的开销,在查找的过程中更新开销;然后每次遍历点集合,将哪些没有加入最小生成树且权重最小的点加入最原创 2017-12-14 15:03:13 · 1333 阅读 · 0 评论 -
图算法一之广度搜索(bfs)
最近在优化师姐的论文,主要研究大规模图的可达性问题,原本就对图算法很模糊的我,显得更加糊涂。原来就对图的一些遍历算法就不是很了解,在阅读了算法设计手册之后,略有所悟。对于本文章有不足之处,希望各位批评指正。对于每一个算法,数据结构的在算法的实现的过程中显得非常重要。下面就是我写的数据结构,当然是关于图的啦。这里主要是采用链表来存储每一个点的字节点。struct edgenode{原创 2017-12-14 14:35:31 · 1319 阅读 · 0 评论 -
图算法二之深度优先搜索
前面我们已经介绍了广度优先算法,我们这一张介绍深度优先,深度优先不同于广度优先在于,广度优先算法是一层一层的搜索,即搜索一个节点,然后搜索它所有的字节点,而深度优先搜索则是,搜索一个节点后,先搜索其一个节点,然后深度搜索,搜索完了以后,再搜索这个节点的其他兄弟节点。相比于广度优先算法,我们将bfs中的队列改为栈,采用同样的数据结构,实现代码如下void dfs(graph *g,int sta原创 2017-12-14 14:47:05 · 1210 阅读 · 0 评论 -
字符串最长回文算法
Manacher算法算法总结第三弹 manacher算法,前面讲了两个字符串相算法——kmp和拓展kmp,这次来还是来总结一个字符串算法,manacher算法,我习惯叫他 “马拉车”算法。相对于前面介绍的两个算法,Manacher算法的应用范围要狭窄得多,但是它的思想和拓展kmp算法有很多共通支出,所以在这里介绍一下。Manacher算法是查找一个字符串的最长回文子串的线性算法转载 2017-11-02 15:04:18 · 1819 阅读 · 0 评论 -
动态规划:从新手到专家
前言_我们遇到的问题中,有很大一部分可以用动态规划(简称DP)来解。 解决这类问题可以很大地提升你的能力与技巧,我会试着帮助你理解如何使用DP来解题。 这篇文章是基于实例展开来讲的,因为干巴巴的理论实在不好理解。注意:如果你对于其中某一节已经了解并且不想阅读它,没关系,直接跳过它即可。简介(入门)什么是动态规划,我们要如何描述它?动态规划算法通常基于一个递推公式及一个或多个转载 2017-11-02 14:29:05 · 1218 阅读 · 0 评论 -
C++基础---string类的clear/erase/pop_back
1. string类的clear/erase/pop_back1.1 std::string::clear原型:void clear() noexcept;说明:将字符串的内容清空,让源字符串成为一个空字符串(长度为0个字符)。代码示例:#include #include using namespace std;int main (){ stri转载 2017-03-23 20:01:30 · 10107 阅读 · 0 评论 -
fflush函数有什么作用?
先来复习一个简单单词吧:flush(注意只有一个f):冲洗,冲刷,冲掉。 例句:I flushed the toilet and went back to work again. 下面,我们来看看一个简单的函数:fflush(file flush,注意有两个f), 先来看一个简单的程序:[cpp] view plain copy转载 2017-03-23 19:34:50 · 1114 阅读 · 0 评论 -
JVM之JIT优化技术(一)
点击上方蓝字,记得关注我们!JVM之JIT优化技术(一)引言本文是JVM之JIT优化技术的开篇,这个在接下来的几章中将会详细讲解JIT优化技术。关于JVM优化和如何使用JIM编译和不同的优化技术让程序运行的更快有很多争论。其实,有很多优秀的文章是可以被找到的,但是对于我自己来说,我还想看看关于这方面的应用,因此我决定对此去深挖和进行一些简单的测量。01延迟编译 ...原创 2019-03-22 19:52:12 · 1840 阅读 · 0 评论