求剧情
算法的乐趣 · 第四节

《算法的乐趣》第四节

本节探讨"程序员是否必须会算法"。作者以网友质疑为例:有人认为遗传算法、蚁群算法才高深,作者用几十行代码的遗传算法求解0-1背包问题、以及不超过100行的井字棋博弈树搜索程序作答……

本节探讨"程序员是否必须会算法"。作者以网友质疑为例:有人认为遗传算法、蚁群算法才高深,作者用几十行代码的遗传算法求解0-1背包问题、以及不超过100行的井字棋博弈树搜索程序作答,说明很多人对算法理解片面,误以为名字带"XX算法"的才算算法,而算法的本质是解决问题。

在"什么是算法"一节,作者列举《算法导论》、Knuth、Weiss的定义,归纳Knuth总结的四大特征:确定性、有穷性、可行性、输入和输出;并指出贪婪法、分治法等只是设计范式,伪代码、流程图是展示形式,递归、迭代是实现方法。作者给出自己的定义:算法是为解决特定问题而精心设计的数学模型及在其上的一系列操作步骤,把输入数据逐步处理转换为确定结果。

在"程序员必须要会算法吗"一节,作者认为计算机本身很笨,创造性工作由程序员完成,算法就是告诉计算机怎么做的技术;大多数程序员不必精通各种专业算法,但要会为自己面临的问题设计算法,因为很多问题没有现成实现。算法与数据结构紧密相连:算法是解决问题的思想,数据结构是思想的载体。作者以自己团队的"EPON业务管理模块"为例:新来的程序员为线卡变更日志设计了1000条记录的数组加阈值批量移动方案,代码签入后导致线卡上线时间比前一天慢约4分钟,性能分析显示大量时间耗在移动记录上;作者指出这类固定长度缓冲区应使用环形队列,用取模运算处理指针回绕,避免整体移动数据。

‹ 上一章目录下一章 ›

全部 76 章