Mario Kart 8 中的 Pareto 最优解

Mario Meets Pareto

Mario Kart 8 中的 Pareto 最优解

在 Mario Kart 8 中,选择最佳的驾驶员、车身、轮胎和滑翔翼组合并非仅靠运气。面对成千上万种配置,单纯追求速度或加速往往不是最优解。本文利用经济学家 Vilfredo Pareto 提出的 Pareto front 概念,帮助玩家剔除那些在速度和加速上均被其他选项“支配”的劣势配置。通过构建多维度的 Pareto frontier,我们将 585 种独特组合精简为 14 个高效选项,甚至进一步纳入 mini turbo 指标。最终你会发现,顶级玩家青睐的 Peach 搭配 Teddy Buggy 等组合,恰好位于这个最优前沿上。这不仅是游戏策略,更是解决生活中多目标优化问题的通用智慧。

Pareto 效率是一个客观标准,用于过滤掉次优选择,但你仍需做出最终决定。
  1. jerf

    这是一个对开发者来说非常重要的概念。

    我常看到开发者们断言“如果不牺牲更多的 Y,就无法拥有 X

  2. uzerfcwn

    最常见的说法是“如果不牺牲用户体验,就无法提升安全性”。考虑到帕累托(Pareto)的概念,我们可以看出,这句话只有在系统本身已经处于安全性和用户体验的帕累托前沿(Pareto frontier)时才是真的。

    然而,很多时候,这些自信的断言是在系统显然根本不在帕累托前沿的情况下做出的,事实上你完全可以在不牺牲另一方的情况下获得更多的一方。

    让事情变得更棘手的是,在商业环境中,你绝不能把“金钱”作为一个维度丢弃。除非你在最初的比较中明确将“金钱”作为一个维度,否则它会悄悄混进来。或者,你可以使用“时间/金钱”的复合指标,或是“商业成本”,或其他类似的概念。时间和金钱通常不是正交的,一般不需要被视为两个独立的维度,尽管如果你愿意也可以这么做。这会让你进入三维情况,正如页面所说,这会让前沿面大大增加,这在某些方面是好事,在另一些方面则是坏事。尽管如此,在我看来,即使在这个空间里,我们往往在没有先检查自己是否处于帕累托前沿的情况下,就做出了所谓的“权衡”。

  3. __s

    几年前我曾做过类似的帕累托分析,用于优化《魔兽世界》经典版(WoW classic)中的装备搭配。WoW 的难点在于有大约 15 个装备槽,每个槽有数百种装备选择,因此总的搭配数量远超 100^15。

    我最终采用了一种分治(divide-and-conquer)风格的策略:1) 针对每个槽位,单独剔除那些不在帕累托前沿的装备;2) 选取剔除后剩余装备最少的两个槽位 X 和 Y,通过计算 Z:={x+y|x∈X,y∈Y} 将它们组合;3) 在 Z 中剔除不在帕累托前沿的装备;4) 重复步骤 2-3,直到只剩下一组,即由所有帕累托最优装备搭配组成的完整集合。

    这个方案只需几秒就能运行,而我尝试过的其他解决方案则需要几分钟到几年不等。缺点是,将套装属性(set bonuses)纳入模型需要额外的工作。

  4. moomin

    > 你可能不会选择处于前沿边缘的驾驶员,因为你希望速度和加速之间取得某种平衡

    对于《超级马里奥赛车》(Super Mario Kart)的速度跑(speedruns),请选择 Bowser/DK:https://www.speedrun.com/smk/runs/zp68nr8m

    这在《马里奥赛车 8》(Mario Kart 8)中似乎也适用,选择 Bowser 处于他们帕累托前沿的边缘:https://www.speedrun.com/mk8

    需要加速?那是技术问题(skill issue)。

  5. tgtweak

    当然,我和大多数我认识的爸爸们优化的目标其实是别的:选哪辆车能让我保持竞争力,但又大概率输给孩子们?

  6. a3w

    2020: https://www.civisanalytics.com/resources/the-best-mario-kart...

    原创致谢:Henry Hinnefeld

    2015: https://hinnefe2.github.io/python/tools/2015/09/21/mario-kar...

  7. CobrastanJorji

    我没看懂 https://news.ycombinator.com/item?id=49096439,但我看懂了这个。

  8. cortesoft

    我特别喜欢人们能把复杂的事情解释得如此出色,让人觉得很直观。干得漂亮!这就是技术沟通能力的展示!

同日更多故事

2026-08-06