神奇宝贝围棋效率

这个谜题是关于一个许多人都很喜欢的话题:神奇宝贝!

你家附近的公园里到处都是神奇宝贝站,你可以在那里重新储备神奇宝贝,当然,还可以抓更多的神奇宝贝!你现在在其中一家,想去拜访他们所有人。Pokéstops位于公园固定坐标系中(x,y)坐标为整数的点上。

对于公园中任何给定的一对波凯停车点,都可以沿着一条路径从一个波凯停车站走到另一个,该路径总是从一个波凯停车点到相邻的另一个波凯停车点

你是一位雄心勃勃、效率很高的神奇宝贝教练,也是一位有点居家气息的人:你希望在旅行最短的总距离时,参观每个神奇宝贝站并返回起点。在这个开放的公园里,你可以从任何一点直线走到其他任何一点——你不局限于坐标系的网格。事实证明,这是一个非常困难的问题,所以你可以寻求一个近似的解决方案。

如果总共有N个Pokéstops,找到最优行走总长度的上下限。(您的目标是找到比率尽可能接近1的边界。)

高级额外学分:对于喜欢使用此主题的数字问题的解算者,假设Pokéstops位于坐标(x,y)的每个点,其中x和y是相对小于或等于1000的素数正整数。找到最佳步行长度的上限和下限,再次寻找比例尽可能接近1的边界。

访问一组地点同时最小化总行程的问题被称为旅行推销员问题(TSP),这确实是计算机科学中一个著名且众所周知的难题。话虽如此,边界如果我们利用其结构,特定TSP实例的解决方案可能很容易。

以下是我对第一部分的解决方案:
[显示解决方案]

下面是我对第二部分的解决方案:
[显示解决方案]

关于“神奇宝贝围棋效率”的六点思考

  1. 在没有计算机的情况下评估这一点并不容易,但获得更高下限的一种方法是将所有对到其最近两个邻居的距离的平均值相加(因为每个点都需要连接到另外两个不同的点)。我这里没有确切的数字,但这让我达到了70.9万。

    对于上限,任何实际路径都可以。一个与上面的LB相当接近的示例是从(1,1)开始,向上移动第一列,然后向下移动和向上移动成对的交替列(例如向下列2/3、向上4/5、向下列6/7等,然后一起向下移动998/999/1000),但不包括底行,最后沿着最下面一行返回。由于许多列相当稀疏,因此成对上下移动所需的距离远小于每个列上下移动的距离(但由3个或更多列组成的组似乎在水平方向上进行了过大的权衡)。这让我达到了735公里的上限。

    如果不使用更多的计算能力,我想不出还有什么办法能比这更进一步,但我很想看看你能想出什么!感谢您提供另一个好的解决方案。

    (另外,作为一个小小的麻烦,我认为你用错误的方法得到了L*(M)的边界不等式!)

    1. 很不错的!我的上限没有你的好,但我认为我的下限更好。我还在写报告。应该很快完成。你介意再核对一下你的号码吗?当我尝试你的建议,平均每个节点的两个最近邻居时,我得到了643811,而不是709k。我将把你的解和我的解都包括在报告中,因为这样可以得到尽可能好的近似比。

      1. 啊,真遗憾……我觉得边界看起来非常接近,我想我应该意识到这太接近了!我手头没有原始文件,但是的,当我重新运行它时,我得到了LB(643811.507)的值。感谢您的双重检查!

  2. 谢谢你做了这些工作!如果使用M^2作为轴,曲线是直的吗?我想,除了M在100以下稍微变陡之外,它们的互质变得更稠密了。

    M=50的最佳值为1773.05,使用MAOS可以在几秒钟内计算得出:

    https://github.com/wiomax/MAOS-TSP

    因此,一个合理的赌注是1000的最佳值略低于400倍(709220)。稍微少一点,因为M=50的互质比M=1000的互质密度大1%左右。

    我的电脑用光了8G的内存(M=100),但要计算并拼接400条50×50的路径(或者用一台更宽敞的电脑拼接100条100×100的路径)来得到一个相当紧凑的上限并不难。

留下回复

您的电子邮件地址将不会被发布。 已标记必填字段*