0%

前算法竞赛选手深度点评 AI 在 ICPC 2025 中的表现

近两年来 LLM 越来越猛,在 IMO,IOI 等竞赛中屡创佳绩。一直以来,我都是抱着围观的态度,看个热闹也就过去了。但是,最近又传出了 LLM 在算法竞赛 ICPC 2025 中超越了人类的新闻。作为前 ICPC 选手,看着社区里热烈的讨论,我可坐不住了,非得仔细地探一探 AI 的虚实才行。在这篇文章中,我会对 AI 在 ICPC 2025 的解答做深度分析,并给出我对 AI 思考方式以及未来发展趋势的看法。

背景简介

先简单介绍一下 ICPC 的规则,方便圈外人理解。ICPC 是国际大学生算法竞赛(International Collegiate Programming Contest)的缩写。竞赛中,若干支三人小队共用一台电脑,在五小时内尝试用编程解决数道算法难题。解题越多,且解题所花时间越短,则成绩越好。这些算法题的原型都是有着清晰定义的数学题,一般很容易想到朴素的「暴力搜索」解法。然而,算法竞赛要求所有程序必须在数秒内算完,哪怕正确的程序也可能会因为超时而被判定解题失败。算法竞赛的魅力,正在于根据题目的特性(如数据范围),在所有可行算法中找出一个能够在几秒之内快速算完的最快算法。

本次 AI 战胜人类的比赛为 ICPC 2025 世界总决赛。作为全年里最具含金量的比赛,总决赛的参赛队伍都是来自全世界各个赛区的佼佼者。比赛官网为:https://worldfinals.icpc.global/2025/ 。我们可以在 https://worldfinals.icpc.global/problems/2025/finals/index.html 查看所有题目,并在 https://worldfinals.icpc.global/scoreboard/2025/finals/index.html 回顾比赛中各个队伍在比赛中的过题记录及排行榜。

前四名队伍的过题情况及总的过题情况如下图所示。最难的三道题是 B, C, G 题。其中,C 题没有队伍做出来。

本次宣称战胜了人类的公司有两个:OpenAI 和 Google。相关信息来源为 OpenAI 在 X 的发帖:https://x.com/MostafaRohani/status/1968361268475215881 及 Google DeepMind 的博文:https://deepmind.google/discover/blog/gemini-achieves-gold-level-performance-at-the-international-collegiate-programming-contest-world-finals/ 。国内主流媒体报道的内容都是从上面两个信源中整理而成。

简单总结一下 OpenAI 和 Google 的报告内容。OpenAI 使用一个内部推理系统,成功答出了全部 12 题,超越了所有人类选手。值得注意的是,这个推理系统是若干个通用推理模型的集成 (ensemble),没有仅针对 ICPC 竞赛训练。此外,仅用 GPT-5 也能答对 11 题,战平人类最强水平。Google 的 Gemini 则略逊一筹,答对了 10 题,在人类排行榜中能够位居第二。不过,Gemini 也解出了没有人类队伍通过的 C 题,证明其实力也不容小觑。热心的 Google 将 Gemini 的解题代码开源了:https://github.com/google-deepmind/gemini_icpc2025

竞赛题深度分析

以往有 AI 达成某某成就的新闻时,我只能泛泛地分析一下。但在这次 ICPC 中,可以分析的信息多了很多:首先是 Google 开源了他们的解题代码,且有着不俗表现的 GPT-5 是人人可用的,我们能够更加深入地了解 AI 的水平;另外,虽然我的算法竞赛水平不足以解出最难的几道题目,但我能够理解题目的意思,大致看懂题解,并能揣测人类选手的解题思路。基于这些信息,我将深度分析在解答最难的几道题目时,人类和 AI 的区别在哪。

从排行榜可知,对人类来说,最难的题目从难到易依次为 C, G, B,其中无人通过 C 题。而 Gemini 解出了 C 题,却没有解出 B 题和 G 题。我简单扫了遍题,G 题太复杂了懒得想,就去仔细看了 B 题和 C 题。随后,我借助 GPT-5 的帮助,并参考了 Youtube 上的官方视频题解及 GitHub 上某大神的解答 https://github.com/SnapDragon64/ACMFinalsSolutions ,勉强是搞懂了这两题的大致解法。

C 题

我们先看一下人类没解出来但 AI 通过的 C 题。这道题的题意可以对着下面的样例图解释。一些水会从 1 号水站流入下游的水库。水站中间还有一些分水管。水站、分水管、水库构成一张图,其中,水站用绿色表示,水库用蓝色表示,分水管用灰色表示。水站和分水管都会以一定比例将上游的水分流。不过,分水管的分流比例是固定,且可能会存在损耗(分流比例已在图中标出)。作为水站管理人员,我们可以任意指定每个水站的分流比例,因此水站的分流比例没有在图中标出。现在,我们要决定每个水站的分流比例,使得最终所有水库的最少水量尽可能大。假设 1 号水站流出了 1 单位的水,程序只需输出最优情况下上述问题的解,不需输出方案。

比如,在示例中,如果我们让 1 号水站的分流比例为 50% : 50%,则我们可以逐步计算每个管道及每个分水管的流量,最终算出三个水库的水量分别为 0.4, 0.2, 0.2。我们要求解所有水库的最少水量,因此我们这个方案的价值是 0.2。我们要从所有这样的方案中,选择一个价值最高的方案。

这道题的主要数据范围如下:水站、分水管约有 $10^4$ 个,但水库至多有 3 个。

这题看得我一头雾水,我只好向万能的 GPT-5 请教了这道题。结果它淡然地回答我,这个问题其实和另一个更简单的子问题相关:假设三个水库都向水库买水,出价分别为 $a, b, c$, 且满足 $a+b+c=1$。这时,该怎么设置每个水站的分流比例,最大化利润呢?这个问题就简单很多了,由于一开始已经知道了底部水库的价值,我们这次自底向顶计算,算出每个水管和分水管的价值。在每个水站处,我们只需要贪心地让 100% 的水流向价值最高的分水管即可。对于多数竞赛选手来说,这个子问题并不难解。

之后,GPT-5 又告诉我若干个炸裂的结论:如果将此时的可选方案变成指定三个水库的比例 $a:b:c$,而不必再考虑水库的分流方案,那么上面这个子问题的最小值等价于我们求原问题的最大值。并且,这个子问题的解是一个凸函数。针对输入变量数小于等于 3 的凸函数,有十分成熟的三分算法可以求解这个问题。

GPT-5 给我说了一大堆内容,我都被绕晕了。过了一会儿后,我才整理出了这题的解题逻辑:

  1. 原来指定水站分流比例的问题和一个指定水库价值比例的问题相关。题目里问的原问题的最大值,等于子问题的最小值。
  2. 方案已知时,一个子问题可以用动态规划(DP)算法求解。
  3. 不同方案的子问题的解构成凸函数。
  4. 凸函数最优值的问题可以用三分算法求解。

为什么人类选手没能在比赛中做出 C 题呢?对于顶级竞赛选手来说,做到第二、第四步都是轻而易举的事。但是,第一步这个问题转化实在是太难想了,本来求最大值的,怎么会联想到一个要求解最小值的任务。此外,哪怕想到了第一步这个子问题,也猜不到这个子问题的具有第三步中的凸函数性质。

那为什么 AI 如此漂亮地解出了这道题呢?我询问 GPT-5 是怎么想出最关键的那一步问题转化的,它则煞有介事地回复了我一堆数学定理,看起来似乎很有道理。但以我浅薄的积累,这些数学定理全都不能在短期内看懂。我又问它是否这道题用到的知识在数学竞赛中很常见,而在算法竞赛中不常见。它告诉我这些知识在算法竞赛中很常见,但又好像完全没有理解这些知识一样,给了我一份不太相关的「相关题目表」,和这道 C 题用到的核心解法完全无关。最终,GPT-5 并没有教会我它是怎么想的。我只能猜测它的数学知识确实很渊博,比顶级竞赛选手们更快地找到了解决此问题的相关知识。

B 题

我们再来看 B 题。赛场上有 8 支队伍通过了此题,且最快的队伍在第一个小时里就解决了此题。但是,Gemini 并没有通过这道题。我问了 GPT-5,它装模做样地给了一个解答,虽然方向对了,但显然它的解法会超时。

这道题是这样说的:两个人在黑板上写下了 $1 \sim N$ 所有数字。随后,二人轮流选择数字。第一个人在第一步必须选一个偶数。随后,每一步中,每个人必须选上一个数乘以一个质数,或者上一个数除以一个质数(必须保证能整除),随后擦掉上一个数。如果有人选不了下一个数,则这个人就输掉了。题目输入 $N$ $(2 \leq N \leq 10^7)$,输出先手胜利还是后手胜利。如果先手胜利,还要输出先手应该第一步选哪个数。

这个问题很容易用数学模型表达:我们可以把每个 $1 \sim N$ 里的数字看成图里的节点,把 「能从数字 a 选到数字 b」 看成数字 a 和数字 b 之间连了一条边。根据题目,如果当前在数字 $x$,我们就能向 $x \cdot p$ 或者 $x / p$ ($p$ 是质数)连边。这样,我们就能画出一张无向图。那么,从黑板上擦掉数字,等于从图中删掉一个点。所以,问题就变成,两个人在无向图上轮流走一步,并删去上一步所在节点。谁不能动了谁就输了。

下面是 $N=5$ 对应的图。这个情况下,先手必输,后手必赢。假如先手选 2,则后手选 4,先手无路可走;如果先手选 4,则后手选 2,先手选 1,后手选 5,先手同样失败。由于先手只能从偶数,而无论从 2 开始还是从 4 开始都是输,所以先手必输。

GPT-5 告诉我,这个在地图上走路的博弈问题已经在学术界被研究过了,叫什么 Dulmage–Mendelsohn。研究的结论是,把图看成二分图,如果设置 $s$ 为起点,$s$ 在某个最大匹配里不被匹配,则先手必胜……。讲了一大堆我啥也听不懂,能得到的结论是,这道题的数学模型已经被人研究过了,早就有了明确的算法。

可问题是,这个算法要求的计算量很大。在 $N$ 为 $10^7$ 这个量级时,用已知算法求解一定会超时。有没有办法能够绕过这些复杂的计算呢?

解法就出在这个图的构造方法上。上述通用解法是针对一般的地图博弈问题。但在这道题中,这个图是根据「乘除素数」得到的。想必这种构造方法一定存在某些能够简化问题的特性。官方题解讲到,当 N 足够大(大于 80 多)时,我们总能找到三个满足条件的素数 p, q, r,它们能构成一张子图。在这张子图上,有着简单的策略让先手必胜。

所以,这道题的解法分两块:

  1. 如果 N 很小,用现有的成熟算法求解。
  2. 如果 N 较大,只需要输出先手必胜,再轻松找到那个符合条件的起点即可。

这道题属于算法竞赛里那一类解法十分巧妙的题目:用常规做法显然会超时,但如果灵机一动,发现题目在某些情况下有一个很直观的解,那这道题一下子就做出来了。甚至我都敢说,如果我知道这道题用到的成熟算法,连我都很可能在几个小时里把这道题的第二步想出来。当然,从某种角度来说,这道题的第一步也是很难的:如果你从来没有学过类似的定理,在赛场上是难以自己把定理重新发现一遍的。

在我看来,B 题的难度是远小于 C 题的。首先,这题涉及的数学定理不是那么冷门,不少人都知道;其次,第二步那个巧妙的想法对于选手们来说并不难想。可 AI 有着和人类不一样的表现。在我的测试中,GPT-5 确实给出了第一步的正确思路,但它完全没思考清楚是否会超时,也没有发现第二步那个巧妙解法。

人类与 AI 在算法竞赛的对比

如果耐心看完了上一节,相信完全没接触过算法竞赛的读者也能对人类和 AI 解答算法题的方式略知一二。在这一节,我会基于上一节提供的信息,详细对比人类和目前 AI 思考方式上的区别。

在分析之前,我想先给出我看待这个问题的方式。很多人看到 AI 在算法竞赛中战胜了人类,会把「在算法竞赛中表现更好」当成一件完整的事来分析,或许会因感觉 AI 比人类更聪明了而感到焦虑,又或许会以算法竞赛本身意义不大为由认为其不足为虑。而在我看来,解答算法竞赛是一个由若干步骤组成的复杂思维过程,详细地探究其中每一步中人类和 AI 的思维区别,才能帮我们更清晰地认识当前 AI 的实力。

在我看来,算法竞赛选手解题时需要经过以下思维过程:

  1. 读懂自然语言,将其转换成脑中的数学语言。
  2. 回忆自己学过的算法原型,思考这道题的数学语言所表示的模型能够被哪种算法原型解决。
  3. 写出正确的程序并提交。

其中,最具挑战性的是第二步。在不同的题目中,执行第二步思考的方式也不同。以前面的 C 题为例,为了想出正确答案,选手或许需要经过以下思考过程:

  1. 由于这道题的数学模型和「网络流」模型很像,选手会仔细思考网络流算法是否能够解决这道题。但稍微想了一下发现网络流算法解不了这题。
  2. 选手突然灵光一闪,发现这道题可以转化成一个子问题。不同子问题的最小值就是答案。
  3. 找到不同子问题的最优解可以用三分算法,没问题。
  4. 解决单个子问题可以用动态规划算法,没问题。这个问题最后就解出来了。

解答 B 题也会经过这样的思考过程:

  1. 通过回忆与比对,选手发现这道题的本质是一道地图博弈问题,可以用成熟算法解决。
  2. 但题目数据范围太大,套用算法只能解决部分问题。
  3. 根据以往解题经验,这种博弈题在数据大的时候可能有一个很简单的解。简单尝试一下后,果然,选手发现了一个简单解法。
  4. 合并数据量大时的简单解法和数据量小时的成熟算法,得到最终解法。

虽然每道题的思考过程都不同,但我们可以总结出选手解题时共通的思考过程:

  1. 在平时学习时,选手记忆了足够多的算法原型。我们不妨把每个算法原型看成一块「拼图」。
  2. 看完题目后,选手会在记忆中搜索与题目的数学模型最像的那些算法原型。
  3. 接着,选手会判断当前想到的这块「拼图」能不能和数学模型对齐,或者多块「拼图」拼在一起能不能凑出这个数学模型。
  4. 如果当前想到的算法原型不对,那就重新尝试新的算法原型。选手既可能灵光一闪地顿悟出解答,也可能根据套路推理出解答的方向。

在这些加粗的动作中,「顿悟」的原理比较复杂,这里不详细展开。剩下的动作可以清晰地分析两类:

  • 「非理性」的记忆和搜索:我们无法讲清楚我们在脑子里是怎么记东西的,又是怎么搜索出与眼前事物最契合的抽象概念的。

  • 「理性」的判断和推理:我们能够讲清楚为什么一个算法是对的,又或者为什么一个算法会超时。如果碰到了一个套路类似的题目,我们可以直接根据套路不经搜索直接推理出正确解答方法(尽管识别套路时用到了搜索)。此外,知晓一个题目由几个子算法组成,也算是理性思维的一种。

将思考时的动作分成非理性和理性后,再回头看 AI 的解题过程,我们能发现 AI 明显在非理性功能上远胜人类。

  • 在做 C 题时,AI 能够将数学知识融会贯通,一眼看出这道题可以变换成另一个更好解的问题。而人类选手没怎么见过把这种数学知识用到算法题里的先例,在比赛中没能想出来。(如果见过一次这种套路的话,我相信顶级选手是能够在比赛里做出这道题的)
  • 在做 B 题时,AI 轻松找到了正确的算法。

而在理性思考上,我觉得 AI 做得还不够好。比如在做 B 题时,AI 没有注意到直接套用算法会超时,更不用谈思考该如何针对超时做优化了。这对于一个能做出 C 题的同水平的人类选手来说是不可能的事。在人类视角来看,B 题远比 C 题简单。

我们再来讨论一下 AI 和人类的思考方式之间为什么会有这样的差异。所谓非理性思考,其实就是统计学习的结果:从大量的经验中学习,碰到问题时直接凭直觉得出结论。人类在学习语言、重复生活习惯时,其实都用到了这种思考方式。然而,相比之下,现在的 AI 模型都是基于统计学习的,学过的数据比人类多得多,在非理性思考上优于人类也无可厚非。

既然 AI 在学习时只用到了统计学习,它就不能进行需要推理的理性思考了吗?当然不是。现在的 LLM 是用 CoT (思维链)的方式学习推理的。具体来说,思考的过程,比如数学公式的每一步推导过程,被当成了一种文本数据,和其他死知识混在一起,供 AI 学习。这样,仅使用统计学习的方式,AI 既能记住知识,也能输出推理的过程。我们不能说 AI 不会理性思考,正确的说法是只有人类会将思考区别成理性的和非理性的,而 AI 自始至终都是在用同一种方式思考。不管是记忆、搜索,还是判断、推理,在 AI 看来都是大量数据中存在的规律而已。

当下,我们难以断言 AI 的这种统一的思考方式是否最终能够全面超过人类。但可以确定的是,理性思考目前还是人类独属的利器,使得人类能够用相比之下更少的脑容量高效地完成复杂任务。

AI 的下一步

攻克算法竞赛这一项具有挑战性的任务后,AI 下一步要解决的问题是什么呢?如前所述,我认为当前 AI 在算法竞赛中的表现并不能说明它有和人类一样的理性思考水平,即在需要大量推理、严谨关联抽象概念的任务上的水平比不过人类。我将分享三个有价值的任务,它们对现在 AI 来说有望在一两年内有所突破,不至于太难,且能够反映 AI 的理性思考水平。

第一个任务是科研。在我们的认知里,创造新知识的科研是难度最高的思考任务。但直接让 AI 创造新知识恐怕太难了,我觉得一个更简单的科研任务是审稿——清楚认知现有的知识体系,并准确判断一篇新论文的创新性有多少。现在确实有不少辅助审稿、辅助解读论文的 AI。但在我看来,它们都只是从浅层的文本方面分析文章,没有对知识的深刻认识。但如果是稍有科研训练的人类研究者,他们能很快剥开论文表面那些精美的外壳,迅速理解文章究竟提出了哪些新的内容。如果哪一天 AI 也能给出犀利且正确的审稿意见,那就能证明现在的 AI 不是死记硬背,而是确实深刻理解了知识并且知道新论文的知识和现有知识的关联。

第二个任务是实现长思考链。深度学习时代的棋类 AI 一般由两大模块组成:判断网络,用于粗浅判断当前局势及下一步棋怎么下更好;搜索算法,用于模拟下完了几步棋以后的结果,以进一步确认当前每一步棋的好坏。也就是说,第一部分的网络只是凭借棋感大致想出了怎么下棋,而要严谨地确认哪步棋更好,需要搜索算法的帮助。棋感的部分其实是非理性思考,AI 能从大量数据里学会;而搜索算法代表了理性思考的部分,它用严密的程序逻辑告诉 AI 该怎么得到更正确的判断结果。那么,现在的 LLM 能否不靠人类编写的算法,自行领悟出这种思考过程呢?通过 CoT 技术,AI 确实会输出一些中间结果来帮助后续思考。但显然,它们的效率比不过预定义的算法,难以执行非常长的思考。研究仅由 LLM 构成的下棋 AI 同样很有价值。今年其实出了一个叫 InternThinker 的围棋 LLM,和我描述的任务一致,但我觉得这个产品还有很大的提升空间。

第三个任务是输出人类可理解的思考过程。很多时候,知道过程比知道答案更有价值。比如,要检查一个学生是不是在抄答案,我们会问他的解题过程。同理,对于给出了比人类更好的答案的 AI,我们也希望它输出思考过程,反过来教育人类。现在的 AI 可以输出一些思考过程,但做得还不够好。如前文所述,我曾让 GPT-5 教我做 C 题,并告诉我它的思考过程。但 GPT-5 只是列了一些知识点,然后像一本枯燥的数学教材一样,一板一眼地讲着推导过程,根本做不到用三言两语就能快速教会我。从这里也能看出,AI 能输出思考过程,其实只是把训练集里的思考过程,即数学教材的推导方法学了过来。而我认为,真正有价值的思考过程,是把非理性思考的结果用理性思考严谨复述的内容。一旦能做到这一点,AI 就能把从大量数据里学到的新知识教给人类。当然,如何把这种更加复杂的思考过程与现在 LLM 能输出的思考过程做区分,且用一个具体的任务表现出来,同样比较困难。我认为这个任务可以和上一个任务结合起来。如果一个 LLM 的围棋水平很高,且能准确讲出自己每一步棋的想法以指导人类,那这样的 AI 在其他领域一定会有更加亮眼的表现。

总结

通过深度分析 AI 在 ICPC 2025 的解答结果,我们发现 AI 还是在非理性思考,即从大量数据中寻找规律这一点上远胜人类,而在推理、判断等理性思考上不如人类。在我看来,当前 AI 的本质并没有发生什么变化。它取得的一系列成就,只能进一步说明统计学习的有效性——如果 AI 的能力不受内存、算力等资源的限制,学过了世界上所有可能的数据,它就能在一切事情上超过人类。但在资源有限的前提下,人类的理性思考能力还是一项非常高效率的功能。

欢迎关注我的其它发布渠道