You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于正实平面上P、Q点迭代游戏的终止性分析与验证的技术问询

正实平面上P、Q点迭代游戏的终止性分析与验证的技术问询

我最近碰到了一个让我有点头疼的迭代问题,用常规的数学方法入手感觉难度很大(我本身数学功底不算强),不过意外发现它和物理模型有很强的关联,能帮我得到一个部分解。先把问题完整描述一下:

问题定义

在正实数平面上有两个点P和Q,坐标分别为(Px, Py)和(Qx, Qy)。我们定义一次「步骤」的规则如下:

  • 对P点操作:把P中较大的坐标值减去较小的那个(举个例子,如果Px > Py,那么Px会更新为Px - Py);同时把较小的那个坐标值翻倍(接上面的例子,Py会变成2*Py)
  • 对Q点操作:找到P中较小的坐标对应的坐标轴,将Q在该轴上的坐标更新为(Qx + Qy)/2(还是上面的例子,因为Py < Px,所以Qy会被更新为(Qx+Qy)/2)

整个游戏由一系列这样的步骤组成,当Qx = Qy时游戏终止,问题要求我们求出终止时这个相等的值。

我的测试尝试

为了更好地理解这个问题,我写了一段Python脚本用来随机测试初始坐标:

import random
import time

while True:
    result = []
    Px, Py = random.choice(range(1, 1001)), random.choice(range(1, 1001))
    Qx, Qy = random.choice(range(1, 1001)), random.choice(range(1, 1001))
    result.append([Px, Py, Qx, Qy])
    while Qx != Qy:
        if Px > Py:
            Px -= Py
            Py += Py
            Qy = (Qx+Qy)/2
        else:
            Py -= Px
            Px += Px
            Qx = (Qx+Qy)/2
        result.append([Px, Py, Qx, Qy])
    print(result)
    time.sleep(5)

这段脚本每5秒输出一次测试结果(避免输出太快刷屏)。不过我有个顾虑:有些初始坐标可能会让游戏无限循环下去,但因为Python的浮点数精度限制,脚本会误以为Qx和Qy相等从而终止程序。不过我通过物理模型找到了一个闭合公式,能直接得到正确的最终值:

物理模型带来的闭合解

我把Px和Py看成两个相同材质物体的质量,Qx和Qy看成它们各自的温度。这样一来,每一步操作就对应了热传递和质量转移:温度低的物体“接收”和自身相等的质量(温度高的物体失去对应质量),然后两者接触达到热平衡,新的温度就是原来两个温度的算术平均。

不管游戏的步骤是有限还是无限,最终的平衡温度就相当于把所有质量混合后的最终温度,这是个很经典的物理模型,对应的公式就是:

(Px*Qx + Py*Qy) / (Px + Py)

说白了就是以质量为权重的加权平均温度。不过我还是有个疑问:有没有初始值会让游戏真的无限进行下去?


编辑1

在讨论中,CyclotomicField指出如果初始时Px和Py相等,游戏会进入明显的无限循环。假设规则保持和之前的情况一致,这种对称场景确实会让游戏无限持续下去。现在我想知道:有没有非平凡的无限循环情况?

编辑2

我后来才反应过来一个关键问题:之前那个边缘情况的无限循环原因,其实适用于所有游戏——因为把其中一个值更新为两者的均值时,这个均值不可能等于另一个值(除非初始就相等),而且Q的坐标更新和P的状态无关,也就是说,只要初始Qx≠Qy,游戏就永远不会终止?

现在我也开始试着从数学角度更清晰地理解Q的坐标更新模式,想搞清楚它的变化规律到底是怎样的。


备注:内容来源于stack exchange,提问作者Mathathon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:14:42