算法
MathThinker
http://www.maththinker.cn/caijp
展开
-
关于被3个搞物理的“颠覆”了且数学天才陶哲轩“开始压根不相信”的数学常识的算法实现与理解
近日,网上公布了一篇关于根据子矩阵的特征值求得平方赋范特征向量的一篇文章“Eigenvectors from Eigenvalues”[1]。据网上推文描述,该文章是三位物理学家Peter Denton、Stephen Parke和张西宁在做中微子研究时意外发现的一项成果。该推文名为《3个搞物理的颠覆了数学常识,数学天才陶哲轩:我开始压根不相信》,并于2019.11.15被发布于微...原创 2019-11-16 19:05:02 · 3010 阅读 · 1 评论 -
基于距离积分的交通轨迹聚类算法
为了做好城市规划和交通管理工作,对车辆运动轨迹的分析和研究是必不可少的一项工作。然而,现实中每时每刻都有成千上万的车辆在城市中,短时间内的车辆轨迹采集即可形成大量数据。数据的极度庞大和错综复杂使得人们难以直接通过所采集的轨迹数据获取任何有效信息。而对交通轨迹数据的聚类则可以有效地将数据约简,并从中挖掘出轨迹信息潜藏的规律,为进一步的决策工作提供有价值的参考。为此,本文提出一种实现轨迹聚类的...原创 2017-12-31 17:00:37 · 8922 阅读 · 2 评论 -
马尔科夫的词性分析三部曲
在自然语言处理(NLP)领域,单词除了其本身的含义可以用来传递信息外,单词的词性属性也包含也包含了非常重要的信息。根据单词的词性,人们可以对文本的单词进行过滤筛选,以筛选掉那些信息含量较少的单词,从而提升处理的文本质量。而如何从文本中有效地甄别每个单词的词性并非是一个简单的问题,原因在于中文单词很多是多词性的,而实际人眼去识别单词词性往往是根据单词的上下文来判断的。但是,如何让机器...原创 2016-07-08 20:08:12 · 3634 阅读 · 0 评论 -
大数据下的多维TopK算法
在数周前所发表的博文《大数据下的TopK算法》中介绍了求解大数据时代中几乎是最为经典的TopK的过程。虽然大数据技术使得大规模数据下的TopK问题得到了有效的解决,但是对于一些该问题的拓展,单单靠大数据技术是无法获得令人满意的解决方案。本文所述的多维数据下的TopK问题就是这一类问题。如果该算法直接采用现有的TopK解决方案,那么一次又一次的运行大数据的过程将会使算法的求解变得令人感...原创 2016-06-19 11:25:29 · 2682 阅读 · 0 评论 -
老板/员工流式并行计算模型
随着大数据时代的到来,人们越来越频繁地需要处理越来越大规模的数据。传统的单线程处理模式已经远远不能满足人们的需要,于是各种分布式计算系统如雨后春笋般不断涌现,其中包括了基于Map-Reduce并行计算的Spark,Hadoop等系统,以及Hdfs,HBase之类的基于分布式存储系统。不过这些系统固然能够处理人们难以想象的海量数据,但由于这类系统考虑了方方面面的繁琐问题,导致这些分布...原创 2016-06-25 21:15:24 · 2347 阅读 · 0 评论 -
基于树状数组的高效轮盘赌算法
在许多经典的遗传算法、蚁群算法的实现过程中,常常需要根据每个对象的生存能力在进行优胜劣汰从而获得尽可能最优的个体。该过程人们一般采用轮盘赌算法来实现。这是一种经典的随机选择算法,在网上只要搜索相关词条就有不少关于该算法的实现。然而,这些算法实现随机选择的过程往往是先生成一个0到1之间的随机值,然后用这个随机值对集合中的对象进行累计遍历,直到选出该随机值对应的对象。显然,该算法在最坏情...原创 2016-06-03 20:19:10 · 4278 阅读 · 0 评论 -
大数据下的TopK算法
在大数据背景下,TopK问题是一个很常见的问题。常见到这类问题基本在任何从事大数据相关的工作中都会用到。而我以前面试和大数据相关的岗位时也基本每次都会被问及这一问题或者这一问题的简单变种。因此,写本文详细介绍一下在大数据背景下TopK问题的解决方法,供大伙学习学习,尤其是让即将面临找工作面试的同学在面对这类问题时心里有个底。 该问题的求解目标很简单,即从一堆数据中挑出...原创 2016-05-27 20:30:57 · 6601 阅读 · 0 评论 -
KMP中Next值和NextVal值的定义
在KMP算法中,有两个重要的步骤就是需要对模式串求解其Next数组和NextVal数组。 网络上的文章有许多关于求解这两个数组的文章。然而,绝大多数文章都是告诉你这两个数组是怎么求解的,而且这些文章由于实现的标准不同。对于同样的字符串,他们求解出的Next数组和NextVal数组往往是不相同的,尽管它们都是对的。 这样的文章不仅看起来非常费劲,而且在花了很多功夫看原创 2015-08-20 13:18:02 · 3978 阅读 · 0 评论 -
编程之美1.13 威佐夫(NIM)博奕(Wythoff Game)涉及的数学定理论证
威佐夫博奕的问题描述如下:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。问给定两堆物品的数量,谁会赢得这个游戏。 这一问题是一个很有趣的问题,而且解法也是十分的巧妙。该题目的解法就是找出奇异局势(即先手必输)。其奇异局势形如:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,1原创 2015-08-16 10:11:12 · 2458 阅读 · 4 评论 -
《编程之美》1.6 饮料供货——贪心解法证明
向世界分享科学之美,让科学流行起来问题描述: 在微软亚洲研究院上班,大家早上来的第一件事是干啥呢?查看邮件? No, 是去水房拿饮料:酸奶,豆浆,绿茶、王老吉、咖啡、可口可乐……(当然,还是有很多同事把拿饮料当做第二件事)。管理水房的阿姨们每天都会准备很多的饮料给大家,为了提高服务质量,她们会统计大家对每种饮料的满意度。一段时间后,阿姨们已经有了大批的数据。某天早上,当实习生小飞第原创 2015-08-15 11:37:00 · 2006 阅读 · 1 评论 -
最小生成树(Prim算法和Kruskal算法)—理解与论证
向世界分享科学之美,让科学流行起来 对于一个给定的连通无向图G=(V,E),其最小生成树被定义如下:取边集E中的子集E‘构成连通树,同时满足,其中表示边(集)的权值。 关于最小生成树的算法,有两个非常经典的算法Prim算法和Kruskal算法。这两种算法非常常见,同时实现也比较简单,具体实现过程可以通过百度等方式轻易获取,这里就不再赘述原创 2015-08-23 17:16:18 · 3845 阅读 · 0 评论 -
编程之美1.12 尼姆博弈拓展的分析与论证
在书籍《编程之美》中,总共讲述了三个关于取石子博弈的问题。书中对这三个博弈问题的本身都有详细的解答。然而,看懂这些解答本身并不是一件难事。我们学知识呢,应该学会举一反三,这样才算是真正掌握了知识,同时也才能真正体会到解决问题的乐趣。本文写作的目的就是从这三个问题出发,然后对一系列与之相关的拓展问题,并给予相应的分析与论证。 与其他类型的问题不同的是,博弈论的问题只要稍做修改,其解答原创 2015-08-18 19:41:08 · 1918 阅读 · 0 评论