教土豆学计算机
最优算法的知识当属科学, 结构的想象则是艺术. 这些算法的细节, 以及编写高效代码实现这些结构的转换, 是编程像手艺活的一面.
摘自 "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'
Dynamic Programming
Greedy Algorithm
Introduction to Algorithm 算法导论
The Art of Computer Programming 圣经, 汇编描述的算法, 啃不动
Data Structures and Algorithms
Programming Pearls 编程珠玑
The Design and Analysis of Computer Algorithms
C 语言名题精选百则 - 冼镜光
Hacker’s Delight 中文译本: 高效程序的奥秘