jackyfkc.github.io

教土豆学计算机

Algorithm

最优算法的知识当属科学, 结构的想象则是艺术. 这些算法的细节, 以及编写高效代码实现这些结构的转换, 是编程像手艺活的一面.


摘自 "Programmers at Work", 第 1 篇, Charles Simonyi

无论是采用什么衡量方式, 而且无论怎样衡量, 总有一些可计算函数是非常难以计算的, 需要大量的工作. 因此说明, 固有难度是一个非常有意义的概念, 因为函数或计算的固有难度表现出很大的区分度.


迈克尔 O. 拉宾

对算法运行时间的分析应本着严格, 精确的态度

In my own experience of designing difficult algorithms, I find a certain technique most helpful in expanding my own capabilities. After solving a challenging problem, I solve it again from scratch, retracing only the insight of the earlier solution. I repeat this until the solution is as clear and direct as I can hope for. Then I look for a general rule for attacking similar problems, that would have led me to approach the given problem in the most efficient way the first time 我从设计困难算法的经验中, 发现了一种能有效提升能力的技巧; 在解决完一个具有挑战性的问题后, 再从头开始解一次, 提炼出早期解决方法中的关键点. 不断的重复直到解决方案能如期望的那样清晰与直观. 然后探索解决类似问题的通用方法, 这使得我可以在最初的时候能以一种最有效的方法解决给定问题.


Robert W. Floyd, 'The Paradigms Of Programming'

Topics


每种数据结构都有它自己的特点和惯用模式


Further Readings