随笔分类 -  数学与算法

摘要:一个100G的文件,内存只有4G,对其进行全排序,如何用普通的java程序编写处理我们一般说的排序算法是内部排序,指的是可以将所有数据一次性的载入内存当中,然后进行排序。但是,当要排序的数据量相当大的时候,无法将全部的数据加载到内存中,这时就需要采用外部排序的方法,采用分而治之的思想,将大的数据文件 阅读全文
posted @ 2022-03-07 09:31 PKICA 阅读(111) 评论(0) 推荐(0)
摘要:这个算法的意思是,对任何一个数 n,n & ( n − 1 ) 的结果是n的比特位最右端的1变为0的结果。例如,n = 12 , n − 1 = 11 , 11 & 12 = 8 n=12,n-1=11,11\&12=8n=12,n−1=11,11&12=8 n & (~n + 1)提取出整数n最后 阅读全文
posted @ 2021-06-24 10:27 PKICA 阅读(64) 评论(0) 推荐(0)
摘要:一、什么是编码解码 编码:利用特定的算法,对原始内容进行处理,生成运算后的内容,形成另一种数据的表现形式,可以根据算法,再还原回来,这种操作称之为编码。 解码:利用编码使用的算法的逆运算,对经过编码的数据进行处理,还原出原始数据,这种操作称之为解码。 二、什么是Base64编码算法 可以将任意的字节 阅读全文
posted @ 2019-03-29 00:34 PKICA 阅读(2291) 评论(0) 推荐(1)
摘要:红黑树的介绍 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。除了具备该特性之外,红黑树还包括许多额外的信息。 红黑树的每个节点上都有存 阅读全文
posted @ 2019-03-27 22:40 PKICA 阅读(47) 评论(0) 推荐(0)
摘要:Prim算法(使用visited数组实现) Prim算法求最小生成树的时候和边数无关,和顶点树有关,所以适合求解稠密网的最小生成树。 Prim算法的步骤包括: 1. 将一个图分为两部分,一部分归为点集U,一部分归为点集V,U的初始集合为{V1},V的初始集合为{ALL-V1}。 2. 针对U开始找U 阅读全文
posted @ 2018-09-27 22:24 PKICA 阅读(824) 评论(0) 推荐(0)
摘要:有限状态机(Finite-state machine)又称有限状态自动机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。常用与:正则表达式引擎,编译器的词法和语法分析,游戏设计,网络协议,企业应用中等方面。 状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对 阅读全文
posted @ 2018-09-09 14:32 PKICA 阅读(1062) 评论(0) 推荐(2)
摘要:据 Drew 所知最短路经算法现在重要的应用有计算机网络路由算法,机器人探路,交通路线导航,人工智能,游戏设计等等。美国火星探测器核心的寻路算法就是采用的D*(D Star)算法。 最短路经计算分静态最短路计算和动态最短路计算。 静态路径最短路径算法是外界环境不变,计算最短路径。主要有Dijkstr 阅读全文
posted @ 2018-09-08 21:57 PKICA 阅读(27360) 评论(3) 推荐(1)
摘要:先了解一下什么是A*算法。 A星算法核心公式: 估价函数: 估价函数f(n)被定义为从初始节点S0出发,约束经过节点n到达目标节点Sg的所有路径中最小路径代价的估计值。它的一般形式为: f(n)=g(n)+h(n) 其中,g(n)是从初始节点S0到节点n的实际代价;h(n)是从节点n到目标节点Sg的 阅读全文
posted @ 2018-09-07 09:01 PKICA 阅读(2706) 评论(0) 推荐(0)
摘要:1971年,斯蒂芬·库克(Stephen A. Cook)发表了 The Complexity of Theorem Proving Procedures(定理证明过程的复杂性)。把以多项式时间解决为衡量标准的问题归成三大类,即NP(nondeterministic poly-nomial),NP完 阅读全文
posted @ 2018-09-03 20:24 PKICA 阅读(463) 评论(0) 推荐(0)
摘要:蝴蝶操作和Rader排序 蝴蝶操作的定义: 雷德(Rader)算法 (Gold Rader bit reversal algorithm) 按自然顺序排列的二进制数,其下面一个数总是比其上面一个数大1,即下面一个数是上面一个数在最低位加1并向高位进位而得到的。而倒位序二进制数的下面一个数是上面一个数 阅读全文
posted @ 2018-08-20 22:30 PKICA 阅读(104) 评论(0) 推荐(0)
摘要:struct Complex { double x,y; Complex(double x1=0.0 ,double y1=0.0) { x=x1; y=y1; } Complex operator -(const Complex &b)const { return Complex(x-b.x,y- 阅读全文
posted @ 2018-08-19 22:01 PKICA 阅读(92) 评论(0) 推荐(0)
摘要:蝴蝶操作 FFT code: #include<cstdio> #include<cstdlib> #include<cmath> #include<algorithm> #include<cstring> #include<complex> using namespace std; typedef 阅读全文
posted @ 2018-08-19 21:03 PKICA 阅读(526) 评论(0) 推荐(0)
摘要:FFTFFT·Fast Fourier TransformationFast Fourier Transformation快速傅立叶变换 P3803 【模板】多项式乘法(FFT) 参考上文 首先介绍, 欧拉公式: 公式描述:公式中e是自然对数的底,i是虚数单位。 快速傅里叶变换(FFT)详解 前言: 阅读全文
posted @ 2018-08-09 22:52 PKICA 阅读(134) 评论(0) 推荐(0)
摘要:1. 欧拉公式的发现 1740年10月8日,欧拉(Leonhard Euler ,1707~1783)写了一封信给他的老师约翰·伯努利(Johann Bernoulli,1667 ~ 1748),信中他提到一个发现,微分方程: 微分方程的解可以用两种方式给出,即: 微分方程的两个解 把两个解带入方程 阅读全文
posted @ 2018-08-08 06:56 PKICA 阅读(5064) 评论(0) 推荐(2)
摘要:并查集(Union-Find) 应用举例 阅读全文
posted @ 2018-07-24 08:57 PKICA 阅读(130) 评论(0) 推荐(0)
摘要:堆是具有下列性质的完全二叉树: 每个结点的值L[i]L[i]都大于或等于其左孩子L[left(i)]L[left(i)]和右孩子L[right(i)]L[right(i)]结点的值,称为大顶堆(最大堆); 每个结点的值L[i]L[i]都小于或等于其左孩子L[left(i)]L[left(i)]和右孩 阅读全文
posted @ 2018-07-22 22:22 PKICA 阅读(176) 评论(0) 推荐(0)
摘要:快速排序(Quicksort),又称划分交换排序(partition-exchange sort),是对冒泡排序算法的改进,最早由东尼·霍尔提出。在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n lo 阅读全文
posted @ 2018-07-22 21:33 PKICA 阅读(231) 评论(0) 推荐(0)
摘要:归并排序:归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。 该算法是采用 阅读全文
posted @ 2018-07-22 21:22 PKICA 阅读(206) 评论(0) 推荐(0)
摘要:next: nextval: 阅读全文
posted @ 2018-07-05 07:27 PKICA 阅读(1790) 评论(0) 推荐(0)
摘要:Knuth-Morris-Pratt三位学者发现的. 2. 模式值数组与最长首尾匹配 可能有读者因上一节的匹配太缭乱而直接跳到这里,那笔者再重复一遍已经得到的结论:我们需要对字符串N进行预处理,得到一个叫做模式值数组的东西。那么我们怎样处理字符串N呢? 这个东西如果我们能思考出来,那我们就可以在KM 阅读全文
posted @ 2018-07-04 07:40 PKICA 阅读(207) 评论(0) 推荐(0)