作为已经工作的程序员,我们会面对一些实际问题抽象出来的复杂问题,比如A*算法的优化,有时候用一些简单的方案组合起来并没有很好的效果。
如何通过训练达到解决复杂算法问题的能力?
请问这样能力如何锻炼呢,除了做一些leetcode啊,poj之外。
作为已经工作的程序员,我们会面对一些实际问题抽象出来的复杂问题,比如A*算法的优化,有时候用一些简单的方案组合起来并没有很好的效果。
如何通过训练达到解决复杂算法问题的能力?
请问这样能力如何锻炼呢,除了做一些leetcode啊,poj之外。
如果单纯从优化算法的角度来看,我可能会推荐一些辅助方法:不是通过训练来提升技艺,而是通过可视化、对比的方式来排错。自己想好的某个优化方向对不对?不同的h(n)在不同的数据集下的表现如何,有哪些是有优化的潜力的?单纯用BFS、单纯用Dijkstra和用A star算法的差异是怎么样的?能不能把寻径过程可视化出来,看看究竟在什么样的场景下损耗的性能比较大,针对这一的场景能不能做特异化的处理?
相信你工作的性质已经可以经常接触算法实现/算法优化了。有时候埋头码代码,对着一堆字符调参数、调函数会很闷,会有恶性循环,会对自己的水准产生怀疑。但通常来讲实现算法的能力上下浮动并不会太大,是不是可以考虑用更直观的方式、代码以外的方式来辅助算法优化呢?每次调参数的时候做了什么,带来的结果是什么,处理时间、结果的精度是怎么变化的,把这些记录下来,用数据,用图表来指导下一步的工作可能也是一种可行的办法。