
算法总结
Elin_24
百年云烟只过眼,不为繁华易素心
展开
-
矩阵快速幂在常系数线性递推关系中的应用
先引入一下,知乎上有一个问题 关于斐波拉契数列的一个低级问题 。题主询问了关于求解斐波拉契数列第n项对10007取模的结果。而这个n,可以达到10610^6甚至10910^9 。解法已经在排名第一的回答中给出了,主要思路就是快速幂和矩阵乘法的结合律,亦即矩阵快速幂。具体方法这里也就不再给出。但可以依托此思想,拓展出在O(logn)O(logn) 的时间下计算一个递推关系的第n项。另外要说明原创 2016-09-09 00:34:17 · 2322 阅读 · 0 评论 -
求组合数(取模)的两种方法
概述首先我们要知道什么是组合数。具体可以参考我之前的博客 “排列与组合”笔记 中,集合的组合的部分。这里复述如下: 令r为非负整数。我们把n个元素的集合S的r-组合理解为从S的n个元素中对r个元素的无序选择。换句话说,S的一个r-组合是S的一个子集,该子集由S的n个元素中的r个组成,即S的一个r-元素子集。由此,求解组合数即变成了求式子C(n, r) 的值。法一:Pascal公式打表由Pascal公原创 2016-09-22 23:20:23 · 17265 阅读 · 9 评论 -
卢卡斯(Lucas)定理
引入之前有写过一篇博客是求组合数(取模)的两种方法。那篇文章里介绍的方法其实也还有局限性,Pascal打表由于内存的限制一般只用于求取1000以内的组合数,而使用逆元套公式的方法其实也只适用于求取的组合数 C(n,m)%pC(n, m) \% p 中,n 和 m均不大于要求的模数 p 。这样就导致了一个很尴尬的问题——如果要求取的组合数超过了模数p,这个时候有要怎么办呢。本人之前由于水平限制并没有原创 2016-11-07 11:24:05 · 9493 阅读 · 3 评论 -
字符串算法总结
KMP算法参考: http://www.matrix67.com/blog/archives/115 && 具宗万《算法问题实战策略》1.1 任务 字符串检索问题。确认给定的“草堆”(haystack)字符串 H 中是否包含“缝衣针”(needle)子字符串 N ,如果包含,则找出子字符串N的起始位置。KMP算法的任务就是实现一种能够在线性复杂度内求出一个串在另个一串的所在匹配位置。1.2 说原创 2016-08-17 22:12:27 · 690 阅读 · 0 评论 -
K-Means 文本聚类
信息内容安全的一个作业, 要求用K-means聚类算法对一定量的新闻文本进行分类。为便于总结,同时交作业,以此记之。原创 2017-04-18 12:27:48 · 3714 阅读 · 0 评论