AIは私の「アルゴリズム100日間」を台無しにしただろうか?
8年前、著者は「アルゴリズム100日間」チャレンジを開始し、手書きコードでアルゴリズムを学習した。現在、GPT-5.6によるレビューで多くの欠陥(不完全な最大流、バグのあるグラフアルゴリズム、壊れたBSTなど)が明らかになり、AIが学習を助けたか妨げたかを考察。コードを歴史的遺物として保存し、READMEを誠実に更新する決断。
8年前、著者のDaniel Sadaは「アルゴリズム100日間」という個人的な挑戦を始めました。目標は、プリンストン大学のRobert Sedgewick教授による『アルゴリズムI』と『アルゴリズムII』の講義を基に、自らアルゴリズムを実装することで理解を深めることでした。このプロジェクトは、Union-Findから赤黒木に至るまで幅広いトピックをカバーし、GitHubで日々の進捗が記録されました。
今振り返ると、著者はこのプロジェクトに予想以上の時間がかかったことを認めています。「100日」の挑戦が実際には8年かかりました。当初は1日1〜2時間を想定していましたが、実際にはそれ以上の時間を費やすことがよくありました。それでも著者は、現代のLLMツールを使わずに手書きでコードを書いたことで、アルゴリズムに対するより深い理解が得られたと述べています。
挑戦の最終日、著者はGPT-5.6(AIモデル)にプロジェクト全体のレビューを依頼しました。AIの評価は非常に厳しいものでした:最大流実装はスタブであり、テストは無条件のTrueをアサートするのみ;幅優先探索(BFS)が深さ優先的に振る舞い、最短経路を保証しない;無向グラフの閉路検出が無限ループに陥る;二分探索木(BST)にサイズ誤り、トラバース問題、ルート削除の欠陥がある;赤黒木にサイズ管理がない;Kruskalアルゴリズムがインポートエラーで動作しない;バイナリI/Oが誤ったデータ型を使用;選択ソートが特定の入力で失敗;三方向基数ソートが重複文字列でエラー;機械学習スクリプトは廃止されたTensorFlow 1 APIに依存。
これらの問題に対して、著者はすぐに修正することを選びませんでした。彼はコードを当時のプログラミングスキルを示す歴史的遺物として保存することを決め、READMEでどの実装が完全で、どの部分が探索的で、どこに問題が残っているかを正直に明記する予定です。
著者はAIが学習プロセスに与える影響について考察しました。もし8年前にこのようなツールがあれば、実装の正しさやPythonらしさを問い合わせるためにもっと頻繁に利用しただろうと述べています。しかし同時に、AIが学生に近道を促し、必要な試行錯誤を省略させる危険性も認識しています。彼は、学習者が誠実さを保つ限り、新しいツールは学習の強化剤として機能するという楽観的な見方を示しています。
最終的に、著者はこのプロジェクトの真の価値は完全なコードベースではなく、毎日学習し記録し続けたプロセスにあると強調します。彼は読者に対して、AIを補助として活用しつつも、自ら手を動かしてアルゴリズムを実装し深く理解する努力を放棄しないように奨励しています。