算法世界的哲学思考

每每读到一些好的算法都会让人有叹为观止的感觉,巧妙的设计让我们回味起数学,物理等,物理的测万有引力,远古 时代没有任何工具的情况下的测量出地球的半径,人就是这么一个奇妙的动物。想体味下巧妙,你可以看下《啊哈,灵机一动》google黑板报的《数学之美》 系列,微软的《编程之美》等,大道至简,简单的道理抽象到了一定的高度就适应于任何事物,在我看来数学和哲学都是抽象到一定程度的事物,你可以体味下 1+1=2,事物的都是有联系的普遍性。俗话说大道至简。
读计算机以来,自然也学到不少算法,虽然现在搞些web的开发,当初也是软件开发的,总是忘不了学过的那些经典的算法,经常及其老师讲解时候的费力和樯橹灰飞烟灭。自己体味好多计算机里面的算法,定理,思想,更大自然世界很协调。
先举几个简单的小例子:
1 将两只小猫放到足球场的对面,相距100码,他们以每分钟10码的速度相向行走。同时这两只小猫的母亲在足球场的一端,它可以以每分钟100码的速度跑步,猫妈妈从一只小猫跑到另一只小猫,来回轮流跑而速度不减,一直跑到两只小猫在中场相遇,问猫妈妈跑了多远?
2 渔民在池塘放养了大量鱼苗。养到一定程度后,我们要估计现在池塘中有多少鱼?
3 有一根27厘米的细长杆,在第3厘米,7厘米,11厘米,17厘米,23厘米在五个位置各放有一只蚂蚁,木杆很细,不能同时通过两次蚂蚁,开始时,蚂蚁头 朝右还是朝左是任意的,他们只会超前或者调头,当不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时掉头朝反方向走,假设蚂蚁每秒钟可以走一厘米的距离,所 有蚂蚁离开木杆的最短时间和最长时间。
4 棋盘覆盖问题。在一个2k x 2k ( 即:2^k x 2^k )个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨 牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。

5 某一天,一个新研究员向托马斯爱迪生报到。爱迪生要求他计算出一个空灯泡壳的体积。在使用测径仪和微积分进行数小时饿计算后,这个新员工给出了答案150立方厘米,而爱迪生在几秒之内计算就给出了更接近155,他是如何实现的呢?

—————————————-给出部分提示————————–

1 不要用蛮力,首先通过两只小猫可以计算出猫妈妈的跑步的时间,两只小猫相距100米,每分钟20码在接近,故5分钟完成,所以猫妈妈是500米

2 这个牵涉到数学中的概率等的知识,概率统计还是挺实用的一门学科,可以考虑用极大似然估算算法,即捞出一定数量的鱼,不能过少,坐上标记,过一定时间取出看看标记的比例

3 和第一个的思想有点像,碰头后蚂蚁会继续潜行,看做是个体运动就好考虑了

4 第四题图片方格少,还好,如果多了,你就不一定能搞定了,还需保证是4的k次幂,其实可以采用分治的思想,即图上可以上下左右四部分,带黑色宽那个就可以填好了,挨着黑色块的即中心的可以填好了,然后就把其他的搞定,如果更多如何?就行切分,分治,分而治理。

5 想想阿基米德王冠的故事你就明白了

现在可以看到了

一题三给我们一个解决问题的思路用时间求解较容易,摊还分析就是用这样一个思路,一如一个附加变量,位势,

二题,五题也是给我们一种思路转换问题的思路。4题给我们一个解决问题分而治之。

可以看到什么样的哲学思想呢?首先事物是联系的,解决了这个事物,和其关系的别的也就可以相应的解决了,整体和局部的思想,局部解决了,整体也就好了。

看看别的算法

1 递归于分治策略,递归?现实生活中哪里有递归的影子?没想到?那就照照镜子吧,看到了,这个就是递归,事物本身的属性,局部整体的哲学思想

2 动态规划,类似分治递归,当他们的若干个问题不是独立的是联系的,第n个问题和n-1个问题是有关系的,

3 贪心算法很明晰矛盾分主要矛盾和次要矛盾,抓住了主要矛盾就抓住了问题的核心

4 概率算法:事物发展的不确定性,螺旋式发展。舍伍德算法,拉斯维加斯算法,我们经典的抛针算π的算法,蒙特卡洛算法,现在基本都忘记了。

5 线性规划,回溯法,分枝限界法 这些都是通过把问题抽象,合理的布局,解决之,算是事物之间的联系吧。别的暂时没行到。

6np完全性理论和近似算法:图灵机等,应该是事物的发展变化的各个状态,著名的图灵机问题,问题的各个态势的变化,这个算法我不熟。

暂时先想到这里,也算是对自己学过的算法课程的一个回忆。

你可能感兴趣的:(C/C++编程知识,编程成长经历)