问题的广度与深度

来源:互联网 发布:网络个人信息泄漏 编辑:程序博客网 时间:2024/06/07 13:47

广度与深度,实际上是思考问题的两个视角。

我们在思考问题时,经常使用分治法,将一个复杂的问题分解为几个子问题,以图将问题化简。

对于子问题们的性质,我们可以这样思考。虽然不能说它们在任何问题下都是性质相近的,但是在某些情况下却是相近的。我们可以从广度与深度这两个视角来看。

当子问题在广度上呈现性质相近时,我们就以此为依据将它们进行划分,于是原问题的规模可以化为原来的1/n。当子问题们在其各自的广度的深度方向上呈现相同的递归性质时,我们以此为依据将它们递归处理,于是这些子问题的规模将进一步缩小。

我们知道分层的思想是在软件工程领域,甚至可以说是在计算机领域广泛存在的,在算法层面更是如此。只有掌握了这些精髓,才能成为一个真正有所建树的人。

差点忘了说,上面讲到了怎样分解,将大化小,将一化多,将繁化简,竟忘了谈组合,分解过后必然要面临组合的问题,将从子问题们得到的结果合成一个整体,这样才能得到最终想要的结果,否则之前做的一切都将失去意义。

广而分之,深而分之,广而合之,深而何之。如此往复。

至于这些对人生有何启示,似乎已经是哲学上的范畴了。这里就不谈了。

补:最近考虑了不少问题,发觉有时候想问题太想靠个人发挥了,我说的是算法问题。虽然书上有一些知识可供参考借鉴,当然也有不少例子,但是一开始对它们的理解还是很肤浅的。一旦遇到新问题,总想先用自己的方法解决,当然这些方法都不是已经成为体系的,经过长时间检验的,只不过是根据题目的描述,以及自己对它的思考所尝试的一种方式而已。有时候因为问题很复杂,所以一时半会儿只能看清一点,于是顺着这往下做,结果遇到越来越多的问题,发现想解决这个,就得修补这一部分的bug,然后继续往下,结果bug越来越多,最终陷入一个泥淖中,不能自拔。付出的时间成本无法收回,只留下遗憾与痛苦,最后只好总结教训,去参考别人的经验以及重新审视书上的内容。

有时候发觉递归与循环根本很难一起使用,有时候发觉自己原先的思路存在重大漏洞,而且难以挽回,有时候发觉递归根本无法描述清楚问题,有时候……

经验,教训,这些究竟要等到什么时候才够用,似乎永远也不够用……

为什么无法在一开始就能预见到所有潜在的风险?这么多年来,一直都是这样。探索,碰壁,起来,再找其他路,再碰壁……似乎永远如此。

我知道,有些事情,只有亲身经历过,才能留下深刻印象,但是,这个代价太大了,时间,生命,一去不复返……前人的经验,前人的教训,前人的覆辙……

0 0
原创粉丝点击