如何评价2024阿里巴巴数学竞赛预选赛试题?
2024年阿里巴巴全球数学竞赛与2024年4月13日开始预选赛。以下是本次试题
- 203 个点赞 👍
做完了,然后感觉很离谱
一句话就是,抽象但简单。从来没有哪次初赛像这一次我都能做出来。答案在文末。
首先评价一下题目
第一题不说了
第二题不想算,直接拿计算机模拟
第三题我只能说抽象,他题目也没说C是不是绝对常数,但是我想了一下,他不可能是绝对常数于是不管了。只要意识到其实我们是在给最短距离的下界就没啥好说。
第四题是真抽象,算特征方程算了好久,后来干脆直接去找特征向量算了。然后注意到d的特征向量是常数,d-1是一次函数,d-2的就尝试插了个值是二次函数,后面这个题就可以了。听别人说是什么Sylvester-Kac矩阵,不知道。
第五题就是John ellipsoid。。。我觉得直接搬这篇作答有点op了,于是相当于我把他用我的语言重新说了一遍。最后“两个凸体,一个包含另外一个,那么在外面的比在里面的表面积大”我没证明,就是熟知结论。
第六题差不多离散傅立叶变换,不说了,老本行。
第七题写了这么一大堆,其实就是个函数迭代的事情。然后本来在想啊这个分析这方面我该怎么办?结果一看,好家伙在实数上光滑,那没事了。我只想着今年第七题拉了,以前的第七题那种应用数学的都是像什么pde呀,或者是各种什么鬼系统的,完全做不来的那种。
接下来开始骂了。
首先有几个题这个题意是有点离谱,你一个数学考试我还得揣测出题人的意图。
前面说了你第三题这个常数,然后在另一个群里看到第二题还有别的理解方式。之后更恶心的是第七题这么长,真就增加阅读量呗。而且最后一题你初值都不给,你最后的次数答案明显和初值到不动点的距离有关,你问我什么数量级?于是我到底该不该给出一个答案它包括初值?
然后其次这次题目是真的抽象。第二题我真的相信没有什么能够手算的方法,那说句实话,我觉得这就有点歧视不会编程的人了。真的其实今年选择题就这么点,以往挺多的。(后来评论区有人说可以手算,好的,果然是我太菜了。)
第七题他恶就恶心在你把各种什么东西一剥离出来,他就是个函数迭代问题,真的考数学,顺道把语文阅读理解也考了呗?
第五题我真的想说不知道John ellipsoid你还真的不知道有没有第二个证明办法了(可能是我是个傻子,不会做),就纯纯的论文。
第四题我都不知道他为啥要给你这么一个换元的障眼法。我不知道那个障眼法的意义在哪里。拜托,两天时间诶,做出来就能做出来,做不出来就是做不出来,障眼法设的有什么意义呢。起不到增加本质性难度的作用,拖时间也拖不了多长的时间。
顺便po下我的答案(考场的答案直接复制粘贴整理的)
- C
- (1)B (2)A
4.
5.
6.
7.
编辑于 2024-04-15 11:00・IP 属地美国查看全文>>
狗雷布是真的伊 - 148 个点赞 👍
总结:至多错了个5分的选择和5分的大题,这把至少110分
问题1
Proof.答案至多是组合数 {4\choose 2} ,又因为可以构造出最大的情况,所以是6,选C.
问题2(1)
直接写程序
import numpy as np # 初始参数设定 initial_score = 2.0 score_gain = 1.5 hit_probability_decay = 0.85 # 计算小明在不同决策点的期望积分 def expected_score_after_n_fights(n): # 初始积分和击落积分增加 score = initial_score time_cost = 0 # 时间代价计算 for i in range(1, n + 1): hit_probability = hit_probability_decay ** i score += score_gain * hit_probability # 击落敌机获得积分的期望贡献 time_cost += 1 # 每架敌机的出现时间期望为1 # 如果小明被击落,游戏结束,期望积分即为当前计算的积分 if np.random.random() < (1 - hit_probability): break # 时间代价,每单位时间积分减1 final_score = score - time_cost return final_score # 模拟多次以获取平均期望值 def simulate(n, trials=10000): scores = [expected_score_after_n_fights(n) for _ in range(trials)] return np.mean(scores) # 测试 1, 2, 3, 4 架敌机后的情况 n_options = [1, 2, 3, 4] results = {n: simulate(n) for n in n_options} results
根据模拟结果,小明在击落第2架敌机后退出游戏可以期望获得最大的积分,其数学期望大约为2.35分。因此,为了最大化游戏结束时的累积积分,小明应该选择在击落第二架敌机后主动结束游戏。所以正确答案是选项 B.2
问题2(2)
这题没太懂题目,继续写程序
import math def simulate_game_fixed_intervals(): score = 2.0 time = 0.0 enemy_count = 0 scores = [] while score > 0: # Fixed time to next enemy: e^(-n), where n is the enemy_count + 1 time_to_next_enemy = math.exp(-(enemy_count + 1)) time += time_to_next_enemy # Score decreases linearly with time score -= time_to_next_enemy # Check if score drops to zero or below if score <= 0: score = 0 break # Increment enemy counter enemy_count += 1 # Probability of defeating the enemy p_defeat = 0.85 ** enemy_count # Decide if defeated or defeated by the enemy if np.random.rand() <= p_defeat: # Defeated enemy, score increases score += 1.5 # Record score if choosing to exit scores.append(score) else: # Defeated by enemy, game ends score = 0 break return scores # Simulate the game many times to find optimal stopping scores with fixed intervals def find_optimal_score_fixed_intervals(num_simulations=10000): all_scores = [] for _ in range(num_simulations): scores_in_game = simulate_game_fixed_intervals() all_scores.extend(scores_in_game) # Compute the mean score for each possible exit point if all_scores: average_score = np.mean(all_scores) else: average_score = 0 return average_score # Run the simulations with fixed intervals optimal_score_fixed_intervals = find_optimal_score_fixed_intervals() optimal_score_fixed_intervals
跑出来是6,所以猜了个C.
问题3
这题第二问的第二种情况做了17h也没做出来啊啊啊啊......
问题4
高等代数竞赛题
问题5
这题背景肯定是Löwner-John ellipsoid,但是原定理的结论没法解决原题,最多只能把系数做到9而不是3,所以还需要再结合题目里的中心对称性改进定理证明:
问题6
问题7
编辑于 2024-04-16 23:03・IP 属地陕西查看全文>>
Vieta jumping - 84 个点赞 👍
这次是我第四次参加阿里巴巴数学竞赛,其中第4、5届都进了决赛,但预计得分估计只有五六十分.再结合阿里巴巴搞了个抽奖活动,参赛的人估计是变多了,不知道这个分数今年能不能进决赛.
分析一下我的解答过程
问题1
选6个,对于凸四边形 XYEF(其中 X,Y\in\{A,B,C,D\}),直线 XE,YF 的交点记为 S,直线 XF,YE 的交点记为 P,则 S,P 有且只有一个点在凸四边形外,不妨设在外面的点为 P,则站在 P 处 E,F 被 X,Y 挡住.再根据从\{A,B,C,D\}中取2个有 \binom{4}{2}=6 种方法,所以最多有6名不同的同学.
问题2
写程序,我发现我在做这题的时候犯了个致命的错误,下面循环中i+1我写成i了,考试结束后才发现TAT,白给5分.
import numpy as np def simulate(n): #模拟一次n pt = 2.0 #初始有2.0分 for i in range(n): # 第i次击落战机 t = np.random.exponential(1) #随机经过的时间 pt -= t if(pt < 0): #时间用完 pt = 0 break p = np.random.random(1) #生成概率 if(p < np.power(0.85,i+1)): # 致命错误,我在作答的时候把这里的 i+1 写成了 i !!!! # 啊啊啊啊啊啊啊啊啊啊!!!!! pt += 1.5 #击落战机 else: #没能击落 break return pt #最终获得的分数 for n in [1,2,3,4]: #在第n局结束游戏 count_pt = 0 sim_times = 50000 # 模拟次数 for num in range(sim_times): count_pt += simulate(n) count_pt = count_pt / sim_times print('n={:},平均得分={:}'.format(n,count_pt))
输出结果:
n=1,平均得分=2.238079849315912 n=2,平均得分=2.3049842427685636 n=3,平均得分=2.2697263344048046 n=4,平均得分=2.174095382688997
所以应该是选B?
第二个也是写程序,最优值是在2.07左右,所以选A.有一个疑问,本小题“小明也会选择一个最优的时间主动结束游戏”是不是跟题干的“中途不能主动退出”矛盾?
问题3
第一小问可以直接把A^2算出来,然后就可以知道A^n的表达式,然后验证T-稠密的定义,最终可以显式写出常数C.我这里的常数C与A有关.
第二小问的思路又想错了,做了几小时无用功,白给10分.
问题4
第一问提示了f的特征值是-d,-d+1,\cdots,d,把它的矩阵形式记为A.对于每个特征值\lambda\in\{-d,\cdots,d\},可以求出线性方程组
Au=\lambda u \\
的一个解.为了猜测u的一般形式,可以先对比较小的d求出特征向量的表达式,然后再猜测一般的d情形每个特征值的特征向量,然后去验证上述线性方程组确实满足即可.中间会用到对d的数学归纳法.
后面两问没时间想了.
问题5
不会,空白.后面听说跟“John椭球定理”有关.
问题6
第6题就是一个多项式定理.第一问用二项式定理写出两个式子,相减就能把奇数项抵消,从而得到答案.第二问就是把二项式推广到五项式,这题是比较简单的一题.唯一有把握的一题,把答案贴一下吧:
问题7
花的时间比较长的一题,第一小问首先根据题目条件,小红和小绿一定是在树下相遇的,有可能是小红在树下等待小绿相遇,也有可能小绿在树下等待小红相遇,中间有个临界情况就是这题第一问所说的“唯一的例外”.根据题目条件,只需考虑第k次小绿和小红分别到达树下时它们之间的距离,我这里设为了d_k,然后导出了递推关系式.接下来因为K和f的表达式都给出来了,所以只需分析迭代数列的收敛性,变成了一个优化问题.把凸优化那一套搬到这里来就行了.
第二小问我不太确定我有没有做对,我讨论了是小绿等待小红相遇还是小红等待小绿相遇,在相遇的时候他这里的d_k分别接近0和1,于是在第一问导出的k满足的不等式,将μ和M分别换成在0处和在1处的各阶导数值,最终得到的数量级是O(1/b\varepsilon),但是我个人感觉可能真正答案是比这个小一点的,也就是不用绕那么多圈就能相遇,但是我没时间想了.
预计得分
预计得分50~60分,不知道50分能不能进决赛?
这次比赛题目都是比较有意思的,值得花时间探索,比如第5题我在做的时候就觉得应该是有组合或优化背景的,但是我并不了解,我的空间想象能力不太好,参加比赛的时间也有限,于是放弃.
而其它题目也并不简单,用常规的方法难以解决(尤其是第4题,硬算特征多项式很难算出来).第7题是一个很有意思的数学建模应用题,关键是理解好他题目想表达的意思,用数学语言刻画出来,然后再用数学工具去解决.如果时间充足,最后那个数量级应该是可以精确求出来的.
最后再评价一下AI参赛
这次阿里巴巴数学竞赛主打“参赛者不限碳基、硅基”,那我顺便谈谈这次AI参赛.
这次的阿里巴巴数学竞赛的题目很难,也很不常规,AI面对这样的题目估计会手足无措,很可能得到错误的结果.
就比如第5题,AI,或者说大语言模型能从这道题出发联想到John椭球定理吗?
再比如第7题,这道题的题干非常长,AI要想做出这题需要在一大堆文字中提取关键信息,也并不容易,而且证明的方向很多,能证出来的思路却不多.我做这道题大概花了四五个小时,首先很容易分析出下面的递推式:
d_{k+1}=d_k-K(1-d_k)+K(d_k-K(1-d_k)) \\
其中 d_1 是小绿在小红的前方的初始距离,d_k 是小绿第 k 次到达树下后小绿在小红的前方的距离.
我试了不少的思路才勉强想出来需要讨论函数
g(x)=(1-x)-(x-K(1-x)), \\
然后证明 g(x) 有唯一零点 d^*,再去讨论 d_1 与 d^* 的大小关系,得到两种相遇的情形.而当 d_1=d^* 时就是题目所说的“唯一的例外”.
当然AI当然是具备优点的:通常来说AI的训练集具备了普通人所不知道的大部分知识,所以从某种程度上看,一个AI模型就是交叉学科的集大成者.外部学科的知识对本学科的研究往往能带来更多的灵感和启发.
但是,AI和人类都共用这套题,无疑是对AI的一个巨大挑战.AI应用于数学推理领域依然存在许多有待解决的问题,很多东西依然不是很成熟.这次比赛是首届有AI模型参与的比赛,再结合今年的比赛题目,其实并不看好AI能有一个比较满意的结果.所以这次还是更看好人类能战胜AI.
编辑于 2024-04-15 10:45・IP 属地江苏查看全文>>
Fiddie - 76 个点赞 👍
做了三个选择,第一道高代第一问,第二道高代全部小问,还有一个概率论大题,总共70分
第五题第七题没做,查了一下五还是论文题,不会。
七如果翻译成大一数分题我还会想一想,如果要我自己建模和翻译的话......我懒,不想做,不喜欢这种实际应用问题,题干还那么长(
概率论是纯送分啊,不会做鉴定为:没上过高中?
然后来说高代,这次的高代题目出的相当有难度,我也想了挺久的,就当做CMC高等代数考前模拟题了
这是高代第二题
从第一问开始就很难算,后面两问找规律先猜后证更是麻烦的要死,不过我还是采用纯线性代数方法硬撸出来了
听群里一些大佬说有抽象代数还是表示论的方法?咱没学过这些奇奇怪怪的东西,不做评价,我还是喜欢用初等方法解决问题
第一道高代题有两问,第一问不难而且非常直观,因为本质上一般的幂次就是0,1这两种情况,画个图基本就做出来了
第二问与其说是高等代数不如说是数论/组合问题,与密码学关系紧密,不过似乎多项式不可约这个条件是多余的!只要矩阵可逆就行,搬运一个大佬的解答
编辑于 2024-04-15 09:07・IP 属地四川查看全文>>
柯西永远爱你 - 69 个点赞 👍
我好急,我先看的其他回答里的《很简单》《小学生也能理解》《没什么需要注意的》《这把至少一百分》《进决赛问题不大》《献丑》……等描述,然后也去瞅了一眼小明打飞机的问题,然后我就很奇怪,我是不是在这个世界上可有可无?
不要怪我抖机灵,我就是好奇大部分人看这个题目的感觉是什么样的,所以我回答一下,看到的人肯定会多一些,但是,就题目描述里那玩意,你让我正经回答,就是你在抖机灵了,我提高一点点热度肯定也是有贡献的。
所以,你们做做?
发布于 2024-04-15 11:25・IP 属地陕西查看全文>>
红护 - 55 个点赞 👍
《用AI嘎嘎乱杀国际数学大赛,是一种怎样的体验?》
数学,不存在了。
别笑,这就是我用AI做完阿里数学竞赛全部7道题后的第一反应。
昨天,我参加了阿里举办的全球数学竞赛,这也是我第一次参加正式的数学竞赛。
竞赛采取线上形式,任何感兴趣的人都可以注册参与。参赛者需要在2天内解决7道题。这些题目由评委新出,难度较高,虽然不及IMO那样变态,但远超一般的高考或大学高等数学的水平。表面上是开卷,其实题目的难度令人望而生畏。
我的身份比较特殊——我代表AI参赛。我的任务是让AI解决这些问题,而非亲自动手。坦白说,这些题绝大部分我都做不出,有些甚至连题目都看不懂。虽然我多年前学过理论物理,好歹攒了点数学基础,但毕竟不是数学专业出身,也缺乏竞赛经验,在学霸云集的赛场如同炮灰。不过,用AI参赛就完全不同了。我会不会做题不重要,AI会做题才重要。
其实,一开始我怀疑所谓的“AI赛道”只是一个噱头。
如果AI真能达到秒杀国际数学大赛的水平,那为什么我没听说过哪个科学家因为被AI取代而上天台?
如果不能——那我岂不真成炮灰了?
然而,真实情况远比我想象的更加惊心动魄。
我交卷后的总体感觉是,只要找到正确的方法,掌握操控AI的技巧,AI解题就是嘎嘎乱杀。有些题目我甚至还没看完,就丢给AI去解,我只需将结果复制粘贴上去,整个过程不到几分钟。
但这就引出了一个问题:
这是否意味着AI的解题能力已经超过了人类?
其实,现实远比想象复杂。谈到AI的数学能力时,我们往往会泛泛而谈。但通过这次比赛的实操,我对AI的数学水平有了切身体会。我认为,AI在数学方面的优点和缺点同样明显。
我将AI解题的方法分为三类:
第一类是数值模拟题。
这类题目不一定需要逻辑推导,可以通过编程方法进行数值模拟。例如,概率题通常可以通过模拟实验来求解。
为了方便大家(特指不懂数学的人)理解,我先举个低幼的例子。比如抛硬币,只要这个硬币两边对称,当你抛的次数 n趋向于无穷大时,两面出现的概率分别是多少?
如果把这个问题看作一个物理实验,真的找一枚硬币抛一万次,记下的次数差不多就是50:50。
在物理世界中真的抛一万次硬币还是比较费事的。但如果用计算机的随机数发生器模拟抛硬币的过程,所谓抛一万次硬币,也就是一段简单的python代码运行一万次而已,都用不了半秒。
比如,这次比赛中有一道“打飞机”题目。不要误会,是在游戏里打飞机:用你的飞机把敌机击落,得1.5分;如果被对方击落,game over。每过一关,后面的游戏越来越难,敌机把你击落的概率大增。游戏有个扣分机制,你玩游戏的时间越长,扣分越多。所以为了使游戏结束时的积分最大化,你的最佳策略是见好就收:一旦连续击落n架敌机,就主动结束游戏。
问题是,这个n是多少?
我要求GPT4给我用于数值模拟的python代码。不到10秒,GPT就写完了代码,只有40行:
def simulate_game(exit_after):
score = 2 # 初始积分
time = 0 # 游戏时间
n = 0 # 击落敌机数
while True:
# 计算下一架敌机出现的时间
time_to_next_enemy = np.random.exponential(1)
time += time_to_next_enemy
score -= time_to_next_enemy # 积分随时间减少
if score <= 0:
# 积分耗尽,游戏结束
return score
n += 1
# 小明击落敌机的概率
success_probability = 0.85 ** n
if np.random.rand() < success_probability:
# 击落敌机,积分增加
score += 1.5
if n == exit_after:
return score
else:
# 被敌机击落,游戏结束
return score
def estimate_expected_score(exit_after, num_simulations=1000000):
scores = [simulate_game(exit_after) for _ in range(num_simulations)]
return np.mean(scores)
# 测试不同的退出策略
options = [1, 2, 3, 4]
results = {option: estimate_expected_score(option) for option in options}
print("Expected scores for different strategies:")
for option, result in results.items():
print(f"Exit after {option} enemies: Expected Score = {result:.4f}")对于题目的每个选项,各模拟运行100万次,求平均积分。程序输出结果为:
显然,n=2时退出,积分最高。
如果每一道题都是概率选择题,AI肯定100分,因为根本不可能错——假如模拟掷100万次骰子的结果是错的,那数学真的不存在了!
但比赛中还有第二类题型:逻辑推理题。
典型如证明题,结果是已知的,要的是过程。AI必须给出每一步的推理,只要错一步,整个证明就不成立。
没想到,强如GPT4,也在这类题上碰了钉子。
出人意料的是,GPT4能够给出完整的分析思路,却打死也不愿意把题做完。
比如第4题,要求证明f的全部特征值为-d,-d+1,……,d。
以下是GPT的回答,我省略了一些细节:
为了证明线性变换 \( f \) 的全部特征值为 \( -d, -d+1, \ldots, d \),我们首先需要更深入地分析变换 \( f \) 的定义和其作用。
步骤 1: 理解 \( f \) 的作用
步骤 2: 建立 \( f \) 的矩阵表示
步骤 3: 分析 \( f \) 的特征值
步骤 4: 特征多项式和对称性
步骤 5: 考虑特殊情形和归纳法
由于问题的复杂性和特定性,完整的解析解可能需要高级的数学工具(如矩阵理论、特征多项式理论、可能的群论或对称性分析)。
我强烈怀疑GPT4的训练数据有缺陷。OpenAI在数学领域的训练语料可能缺乏具体的推导细节,导致GPT4推理时只能给出大纲式的解题思路,每一条都正确,每一条都没什么卵用。
多次调教GPT无果后,我转向了Claude3。
Claude3出了之后,有人说它比GPT4还强,也有人说感觉差不多。
然而在数学的形式逻辑推理领域,我发现,Claude3有了巨大的进步,进步之大连营销号都吹不出来。
以下是Claude3对第4题第1小问的证明,无任何删节,一字不改:
我们将分步骤进行证明。
步骤1:证明U_j是f的不变子空间,且f在U_j上的特征值是-d+2j。
对于任意向量v∈U_j,可以写成v=∑_{k=j}^{d-j}a_k v_(2k+1),其中a_k是一些复数。那么
f(v) = f(∑_{k=j}^{d-j}a_k v_(2k+1))
= ∑_{k=j}^{d-j}a_k f(v_(2k+1))
= ∑_{k=j}^{d-j}a_k ((2k)(2d-2k+2)/2*v_(2k) + 1/2v_(2k+2))
= ∑_{k=j}^{d-j}a_k (k(2d+1-2k)v_(2k) + v_(2k+2))
= ∑_{k=j}^{d-j-1}(a_k+a_(k+1)(k+1)(2d-2k-1))v_(2k+2) + a_j j(2d+1-2j)v_(2j+1) + a_(d-j)(d-j)(2j+1)v_(2d-2j+1)
观察上式,f(v)的表达式中只包含v_(2j+1),v_(2j+3),…,v_(2d-2j+1),所以f(v)∈U_j。因此,U_j是f的不变子空间。
再看系数a_j j(2d+1-2j)和a_(d-j)(d-j)(2j+1),它们分别是v_(2j+1)和v_(2d-2j+1)的系数。注意到
a_j j(2d+1-2j) = a_j(d-(d-j))(2d+1-2j) = a_j(d(2d+1-2j)-d^2+dj)
= a_j(2d^2+d-2dj-2d^2+2dj) = a_j(-d+2j)
a_(d-j)(d-j)(2j+1) = a_(d-j)((d-j)(2j+1))
= a_(d-j)(2dj-2j^2+d-j) = a_(d-j)(d(2j+1)-2j^2-j)
= a_(d-j)(2dj+d-2j^2-j) = a_(d-j)(-d+2j)
所以,在U_j的基v_(2j+1),v_(2j+3),…,v_(2d-2j+1)下,f的矩阵表示中对角线元素都是-d+2j,其余为0。因此,-d+2j是f在U_j上的特征值。
步骤2:V是U_0,U_1,…,U_⌊d/2⌋的直和。
首先,U_j(0≤j≤⌊d/2⌋)的维数之和等于V的维数:
∑_{j=0}^{⌊d/2⌋} dim U_j = ∑_{j=0}^{⌊d/2⌋}(d-2j+1) = (⌊d/2⌋+1)(d+1)-2*∑_{j=0}^{⌊d/2⌋}j=(⌊d/2⌋+1)(d+1)-⌊d/2⌋(⌊d/2⌋+1)=2d+1
其次,任意两个不同的U_j和U_k(0≤j<k≤⌊d/2⌋)的基是不相交的。因为U_j的基向量的下标是2j+1,2j+3,…,2d-2j+1,而U_k的基向量的下标是2k+1,2k+3,…,2d-2k+1,两组下标没有交集。
因此,V是U_0,U_1,…,U_⌊d/2⌋的直和。
步骤3:f的特征值为-d,-d+2,…,d-2,d。
根据步骤1,f在每个U_j(0≤j≤⌊d/2⌋)上的特征值是-d+2j。
当j从0取到⌊d/2⌋时,-d+2j的值就是-d,-d+2,…,d-2,d(当d为偶数)或-d,-d+2,…,d-1(当d为奇数)。
再根据步骤2,V是U_0,U_1,…,U_⌊d/2⌋的直和,所以f在V上的特征值就是它在所有U_j上的特征值的并集,也就是-d,-d+2,…,d-2,d。
综上所述,我们证明了f的全部特征值为-d,-d+1,…,d-1,d。证毕。虽然做题的不是我,但是当AI一气呵成地吐出答案时,我突然产生了一种不可名状的爽感。
结尾潇洒的“证毕”二字,更是让我梦回当年在满黑板的公式最后,狠狠写下“Q.E.D”、然后扬长而去的峥嵘岁月。
而现在,即使让我返老还童,我也不愿去学数学了。
没关系的,都一样。
这才是Claude3真正超越GPT4的地方。也许Claude团队真的搞到了一批专业数据,也许部分数据是用强化学习生成的——总之,他们必定在数据上下了大功夫,否则无法解释证明过程怎么会写得如此详细。
我还听说过一个案例:有人把显微镜下的医学病理图片发给Claude3,结果它不仅能识别出这是什么标本,甚至能指出这个标本里的哪些特征很可能代表某些病变!
不过我敢说,即使GPT4+Claude3双管齐下,仍然不可能拿满分。
因为两大AI唯一做不出的题,恰恰是本次比赛最简单的题。
这就是我总结的第三类题型:平面几何。
我来用不严谨的科普语言给大家说说第一题:
有6座塔和n个人,塔和人都用一个点表示。当塔和人恰好处在某个位置上时,会产生一个奇特的效果:所有人都能看见4座塔,但所有人都看不见剩下的2座塔,因为所有人望向那2座塔的视线都被其它塔挡住。请问:n最多是几个人,才能保持这种奇特的效果?
就是这道题,让两个AI左右为难。
一开始,GPT和Claude都以为n的上限是无穷大,也就是无论多少人,视线都能被挡住。
这种情况是有可能的,比如所有塔和所有人都在一条直线上。但这恰恰是题设明文排除的,因为题目规定塔不能3点共线,所以两座隐藏的塔不可能被一条视线同时穿过。
当我给AI解释明白之后,它们又开始怀疑,是不是2个塔被围在4个塔内部,所以看不见。我苦口婆心地告诉它们,塔是一个点,围起来也挡不住。但GPT似乎倔强地认为,塔不可能是一个点,而是一个巨大的圆柱体……
最后,无可奈何的我只得祭出数值模拟大法。我要求AI生成一段python代码,画出人和塔的所有位置。人用P1、P2、P3表示,塔用A-F表示。如果人的视线能看到塔,画红线;看不到,画绿线。
经过几次尝试后,GPT4终于给出了正确的代码,画出的图形如下:
这显然不符合题设。图中只有塔E被隐藏,另一座塔F所有人都能看到。
当我把图片传给GPT后,它爽快承认了错误,并按我的要求重新调整了塔和人的位置布局。
然后生成的图片错得越发离谱……
难道这题真的这么难?
凭借多年的做题家经验,我可以肯定地说,不可能。
做题不是打打杀杀,做题是人情世故。
第一题,是评委老师和你交个朋友的,就算不是最简单,也绝不可能难到下不了口。
我在草稿纸上画了几笔,突然发现了一条思路:
五角星表示隐藏塔(看不见),圆圈表示普通塔(看得见),三角表示人,直线代表视线。
假设只有1个人,2座隐藏塔要想不被这个人看见,唯一的方法是有2座普通塔来遮挡视线。
既然挡住1个人需要2座普通塔,那么挡住3个人就需要6座普通塔。
但题目中总共只有4座普通塔!这就意味着,必然有一些塔,能同时挡住2条视线。
顺着这个思路画下去,就是:
题目似乎已经解出:3个人如此排布,可以恰好让所有人都看到4座塔、看不到2座塔。
但多年的做题家经验在隐隐警告我:事情真有这么简单?
做题不是请客吃饭,做题是一群人淘汰另一群人的智力运动。
老师愿意让所有人做出,不代表老师愿意让所有人做对。
我突然发现,我漏掉了一种情况:一座塔可以同时遮挡2个人的视线,只要这两人在一条直线上。
所以,第4个人可以出现在一个妖孽的位置——别人的身后:
还没完。再仔细观察,发现有2座塔如果挪一下位置,还可以塞2个人进去:
我把我的思路告诉AI,它们却仍然做不出。也许就是大语言模型AI的弱点:它们没有真正意义上的空间想象能力!这也难怪,尽管AI具有一定的图像识别能力,但它的思维逻辑仍然基于字符token,难以进行空间想象。而人类却是纯粹的视觉动物,我们看到的文字,其实只是视网膜上的一串光点。当我在草稿纸上画图时,AI脑子里的草稿纸又在哪里呢?
不过,我听说DeepMind最近发表的一篇论文找到了新方向,30道IMO平面几何题AI能做对25道,IMO金牌选手的平均水平也只有25.9道。而这样强大的AI,居然只有1.5亿参数!
其实,早在没有AI的70年代,就有计算机证明平面几何的成功案例了。它的原理是:把几何图形转化为一系列约束条件,比如三角形中两个角相等,然后写成规范的符号形式。因为欧式几何的公设和定理都极为有限,所以把这些定理都试一遍,就能得到一批推导后的等式。
比如,三角形中两个角相等,可以推出两个边也相等。把这些推导出来的等式加入题设,然后不断迭代,直到推不出新的等式为止——那么所有推出的等式,就是这道题所有可能的答案!而出题者要你证明的等式,也必然在其中!
这个方法在上世纪70年代,由吴文俊院士提出,史称“吴方法”。然而,虽然穷举法表面上无敌,真做起题来,IMO 30道只做对5道。原因在于,很多几何难题是需要画辅助线的,而且往往不止一条!画辅助线是一种艺术,简单的穷举式推理做不到——这正是DeepMind用AI模型解决的问题。他们把几百万道几何题及其答案转为符号逻辑形式,输入模型训练,让AI学会画辅助线,从而“吴方法”获得新生。
时间关系,这个新模型我就没空实验了。不过,如果沿着这条路走下去,让AI学会用符号逻辑的方式推理几何题,恐怕也不是难以企及的幻想吧?
我突然想到一个问题:有没有一种可能,这是第一届AI数学竞赛,也是最后一届AI数学竞赛?
如果AI的短板被迅速补上,长板继续加强,会不会超过人类?会不会——
会让一些长期未解的数学问题得到解决,如哥德尔不完备定理中提出的问题,或是各种猜想如黎曼猜想等。这将是数学领域的巨大突破;
会帮助人类发展新的数学理论和模型,推动数学本身的边界;
AI和人类数学家可以形成合作关系,各自发挥优势,共同推动数学和相关领域的发展,激发人类在数学和其他科学领域中的创造性思考。
总之,AI的发展稳中向好,对人类文明有巨大的帮助,我是长期看好的!
——GPT4如是说。
编辑于 2024-04-15 22:48・IP 属地上海查看全文>>
神们自己 - 46 个点赞 👍
更新:81分,p3.2最后一步的不等式放反了
题主来亲自回答这个问题,由于今天早上3点半才搞完,昏昏沉沉睡醒已经8点40了,于是这个问题拖到现在才回答……
这是笔者第一次参加阿赛(高中时因为高等知识接触较少,没有参加),做了大约105分的题(其中第5题只证明了若干引理,估计5分,其余题目均完成作答),估分95分
接下来分享我的解答和考试心得体会
第一题
本题十分容易,如果理解题意,小学生也能很容易解决。但是本题设置了一个坑,首先注意到同学必须和
中的一者和
共线,对于
是同理的,所以可以生成
个这样的点,再除去
自己,答案是
吗?错!如果不能看到,那么只能同时在以
为顶点的射线上,于是对于每一无序点对
,其中分别与
相连,可以通过讨论凸包是三角形还是四边形来证明至多产生一个,于是一共会产生
个这样的同学。
构造也是容易的,如图: