2013年/10月/10日

首页回退

用形来解答数的问题

在互联网上广为流传的《数学之美》中有一段: 我是一名科学研究人员 ,我在工作中经常惊叹于数学语言应用于解决实际问题上时的神奇。我也希望把这种神奇讲解给大家听。当然,归根结底,不管什么样的科学方法、无论多么奇妙的解决手段都是为人服务的。我希望 Google 多努力一分,用户就多一分搜索的喜悦。

数学是研究现实世界的空间形式与数量关系的科学.数和形是客观事物不可分离的两个数学表象,两者既是对立的又是统一的.数学家华罗庚曾说过:“数缺形时少直观,形少数时难入微.”数与形的对立统一主要表现在数与形的互相转化和互相结合上。

数学是上帝语言吗?还是说数学本身只是人类智慧结晶?

借形解数的意思就是用形的角度来解数的问题,相当普遍的两个案例就是余弦定理用于相似度分析和排序算法的最高效率分析。

当笛卡尔发明坐标那一刻起,数和形算正真修成正果了。

(1) 余弦定理判断帖子相似度

余弦定理描述了三角形中任何一个夹角和三个边的关系,换句话说,给定三角形的三条边,我们可以用余弦定理求出三角形各个角的角度,假定三角形的三条边为 a, b 和 c,对应的三个角为 A, B 和 C,那么角 A 的余弦

cos 如果我们将三角形的两边 b 和 c 看成是两个向量,那么上述公式等价于

cos

如果要判断两个帖子的相似度,我们先切词,然后计算词汇的权重,最后会得到两个多维向量,也就是把这个量放到多维坐标系中,然后从坐标原点画两条线到这两个向量,这两条线的夹角越小就表示两个帖子越相似,如图:

cos

(2) 排序算法的最大效率分析

基于比较的排序算法有冒泡,插入,快速,希尔等等,他们的时间复杂度最好的就是线性对数,也就是nlogn,难道就没有比nlogn好的排序算法了吗?还有天才能够发明一个比nlogn增长还慢的排序算法吗? 答案是不可能的,我们可以来证明,这里又用到了借型解数的思想,比如3个互不相等的数k1,k2,k3,它们会存在6种序列状态,其实n个互不相等的数会有n!种初始序列,因为计算机是比较笨的,它在排序三个数的时候有可能6个序列状态都算过去一次,这就是最坏情况 我们可以根据这个最坏最笨算法指令画一个二叉判定树,如图:

cos

这6个状态就是树的叶子节点,根据二叉树的性质,n!个叶子节点的二叉树其高度至少为log n! + 1,也就是必然存在一条长为log n!的路径,这也是排序算法最坏情况的下界,log n!的大O表示就是nlogn。