IT技术博客大学习 共学习 共进步

算法的意义

美人她爹 2010-03-01 09:24:05 浏览 4,381 次

    大学时候,学的最差的大概就是算法了。当时总是喜欢多想一步,问一下这个算法到底是为什么。结果老师也答不出。

    同一个学期,学的最高兴的,是操作系统。教课的是当时的系主任,国内的操作系统大牛。听他老人家讲课,总是能深入浅出的理解里面的设计理念。比如进程的调度,以CPU时钟资源的公平分配为原则;比如虚拟内存的大小,是方便和节约的折中;比如缓存的分配,是历史数据向未来的有效预测等等。

    那个时候就开始了解,其实算法,无非是人的决策,在计算机上面的表达。

    后来到了这边读书,导师发明的算法,是解决路由问题里面对稀缺资源的调控。那个算法的精妙,就是引进了经济学的原理,让各个信号去竞争这些资源,稀缺的资源“价格”提高,使得某些信号转而去使用相对“便宜”的资源,从而达到资源调配的目的。

    类似的,当我设计和他的算法相配合的算法的时候,也是把现实生活中的处理方法引进了算法里面,对于一个NP-hard问题,既然不能在多项式时间和空间找到最优解,那么就在处理的过程中,对某些“看似”最有希望的部分结果,进行拓展,最后得到一个相对优化的结果。

    在web领域,因为有人的参与,就有了更多算法改良的空间。pagerank是利用了人多年在web上面积累的url数据作为网页权重的投票;相应的协同过滤,也是利用人的行为数据来提取人的兴趣。

    但是在算法利用免费的人力进行优化的同时,基于这些算法建立的网络应用,也对人的行为产生了不可忽略的影响。在03年google的CEO Eric Schmidt 去系里讲座的时候,就有学生问他,如果将来大家都依赖google,不在网页上面添加链接了,google怎么办。Eric略一迟疑,说估计不会的。事实上,当google把AdWords引入以后,巨大的流量瞬间转变成了钱,人们不仅没有停止添加链接,反而变本加厉的建立起link farm以求在SRP上面占据首位。Google也不得不针对这些link spam进行算法的修改。

    同样的,协同过滤虽然为Amazon带来了无数的新销售,同时也使用户的行为趋同。

建议继续学习

  1. 为什么算法这么难? (阅读 12,242)
  2. 15道使用频率极高的基础算法题 (阅读 6,841)
  3. Fastbit中的bitmap索引算法 (阅读 5,143)
  4. 一些有意思的算法代码 (阅读 5,043)
  5. 基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制 (阅读 4,422)
  6. 研发面试最常用的10大算法 (阅读 4,284)
  7. 生成特定分布随机数的方法 (阅读 3,902)
  8. 机器学习算法之LightGBM (阅读 3,546)
  9. 算法收集 (阅读 3,221)
  10. 聚类算法之ISODATA (阅读 3,182)