送小桐上兴趣班,在图书馆看了一会儿安全的书,稍微有点困,找了这本书翻一下。
本书内容没有什么新意,最后一章不错。《如何设计算法》。
算法设计的关键是通过提问来引导思维的不断深入。通过不断的提问来找到一个最终的解决方案。回答“我能这样做吗”的答案不能是“不能”,而应该是“不能,因为……”。
战略和战术的问题。把问题归结为哪一方面是战略问题,用什么具体算法解决,只是战术问题。
算法工程师的“真本事”:
1.我真的理解这个问题了吗?
输入是什么?期待的输出是什么?有没有例子?规模有多大?计算时间要求是?我要解决的是一个数值问题,图的问题,几何问题,字符串问题还是集合问题?
2.是否可以找到一个简单的算法或启发式方法?(遍历算法?)
3.这个问题算法库里有没有?百度有没有?
4.这个问题有没有特殊解?
5.有没有哪个标准算法设计范式和我的问题相关?
6.花钱找人解决或者从头把问题再捋一捋。
算法,不仅仅是编程的事情,生活也是这样的。很多时候,都不用什么套路,框架,单单是想一想“问题到底是什么”就足以解决大部分问题。