AI会毁掉我的“算法一百天”吗?
八年前,作者开始了“算法一百天”挑战,通过手写代码学习算法。如今回顾,项目存在诸多缺陷,如最大流算法不完整、图算法错误等。作者反思,若当年有AI辅助,可能会促进学习但也可能导致走捷径。最终决定保留代码作为历史记录,并更新README。
八年前,作者 Daniel Sada 启动了一项名为“算法一百天”的个人挑战。他的目标是通过亲手实现算法来加深对计算机科学课程中算法概念的理解,为此他选修了普林斯顿大学 Robert Sedgewick 教授的《算法I》和《算法II》课程。项目涵盖从并查集到红黑树等广泛主题,并在 GitHub 上进行了完整的日常记录。
如今回看,作者坦言这个项目花费了比预期更长的时间——从开始到完成“一百天”实际上跨越了八年。他最初期望每天花一到两小时,但实际投入常常更多。尽管如此,他珍视这段经历,认为手写代码(而非使用现代LLM工具)让他对算法有了更深刻的理解。
在挑战的最后一天,作者请 GPT-5.6(一个AI模型)对整个项目进行了审查。AI的评估相当严厉:指出最大流实现仅为存根,测试只通过无条件 True;广度优先搜索(BFS)表现出深度优先的行为,无法保证最短路径;无向图循环检测陷入无限递归;二叉搜索树(BST)存在大小错误、遍历问题和根删除缺陷;红黑树缺少大小簿记;Kruskal算法因导入错误而失败;二进制I/O使用了错误的数据类型;选择排序在特定输入下失败;三向基数排序在重复字符串上出错;以及机器学习脚本依赖已过时的TensorFlow 1 API。
面对这一长串问题,作者并未急于修复。他选择将代码作为历史文物保留,这些代码反映了当时的编程水平。他计划在 README 中诚实标注哪些实现是完整的、哪些只是探索性的、哪些仍然有问题。
作者反思了AI对学习过程的影响。他认为,如果八年前就有这样的工具,他可能会更频繁地用提问来验证自己的理解(例如:“我的实现符合最佳实践吗?”、“这是Python风格的吗?”)。但同时,他也警惕AI可能诱使学生走捷径,跳过必要的挣扎与探索。他乐观地认为,只要学习者保持诚实,新工具可以成为学习的增强剂,而非替代品。
最终,作者强调项目的真正价值不在于代码库的完美,而在于每天坚持学习和记录的过程。他鼓励读者利用AI作为辅助,但不要放弃亲手实现和深入理解算法的机会。