当前位置:首页 > 每日看点 > 正文内容

有哪些算法惊艳到了你?

卡卷网1年前 (2024-11-30)每日看点263

要论最让我惊艳的算法,莫过于博弈论中的无偏博弈问题的算法。让我们从一个简单的游戏:Nim Game来了解无偏博弈问题与其令人惊叹的简单算法。

Nim Game

什么是Nim Game

考虑现在有两个绝顶聪明的人:丧彪和小美。他们决定玩一个游戏:

  • 丧彪和小美面前有 有哪些算法惊艳到了你?  第1张 堆石头
  • 有哪些算法惊艳到了你?  第1张 堆石头初始有 有哪些算法惊艳到了你?  第1张
  • 每人每轮需要任选一堆石头,从中取走大于0个石头
  • 谁没有石头可以拿,便输了(即上一轮对手拿完了所有石头,或者一开始就没有石头)
  • 丧彪先走

现在请问,给定石堆数量 有哪些算法惊艳到了你?  第1张 与每堆石头的数量 有哪些算法惊艳到了你?  第1张 ,丧彪和小美在采取绝对最优的策略下,谁会胜出。

有哪些算法惊艳到了你?  第6张

一共4堆石头,分别为5,3,2,6

有哪些算法惊艳到了你?  第7张

丧彪先走,每次能选择一堆石头,拿走至少一个石头

有哪些算法惊艳到了你?  第8张

若是轮到自己的时候,面前没有石头可以拿了,则对手赢

让我们思考一下

为了解决这个问题,我们不妨从一些简单的初始情况来讨论。

局面丧彪(先手)小美(后手)策略
开局压根就没有石头小美躺赢
开局只有一堆石头丧彪先手拿完,小美便没有石头可拿
开局有两堆石头,但是两堆石头数量一样小美只需要做丧彪的对称动作,例如丧彪在其中一堆里面拿 x
个石头,小美只需要在另一堆同样拿 x
个石头。那最后一定是丧彪没有石头可拿。
开局有两堆石头,但是两堆石头数量不一样这时候,丧彪只需要瞄准多的那一堆,把多余的石头拿走,使得两堆一样,就回到了上面的局面,但换做了小美先手。所以这种情况下丧彪赢。

显然,我们有废话:每个局面,不是先手胜,就是先手败

观察上面第4个开局,这种局面下,丧彪发现能将局面转换为一个小美先手,但是小美必败的局面,所以丧彪开局必赢。

有哪些算法惊艳到了你?  第9张

第4种开局的例子,丧彪只需要在第一步使得两堆石子一样多,之后就对称小美的动作,就能获胜。

所以如果一个局面:

  • 没有后继局面(例如面前没有石子),那么先手败;
  • 所有可能的后继局面都是先手胜,那么当前局面先手败;
  • 而如果一个局面的后继局面中,有先手败,则当前局面先手胜。

注意,上述对于先手胜败的论断,对后续的分析十分重要,大家伙记住了奥。

有哪些算法惊艳到了你?  第10张

搜索策略

熟悉搜索的小伙伴已经快掏出自己的深度优先搜索跃跃欲试了。没错,此时搜索已经完全能解决丧彪赢还是输的问题。

我们不难得到一个非常暴力的搜索,只需要递归考察每个后继局面是必胜还是必败:

有哪些算法惊艳到了你?  第11张

嗯,很好。我们拿来实验一下。

有哪些算法惊艳到了你?  第12张

有哪些算法惊艳到了你?  第13张

光是计算5,3,6这个简单的开局就用了接近2秒。

而计算5,3,6,2这个局面,就更困难了:

有哪些算法惊艳到了你?  第14张

有小伙伴一定会意识到一个问题,我们在搜索的时候一定有很多重复的局面。例如对于5,3,6这个局面,我先搜索第一堆取2个,第二堆再取1个。和我先搜索第二堆取1个,第一堆再取2个。是一样的。

所以我们可以优化一下,例如通过哈希(这里我们用一种简单的质数哈希的办法),记忆每个局面,搜过了就不用再搜了。

有哪些算法惊艳到了你?  第15张

有哪些算法惊艳到了你?  第16张

嗯快了好多!!但是这就是我们想要的解决方案了吗?我们不妨分析一下复杂度

每个石头都有可能减少任意数值,所以总的局面数是 有哪些算法惊艳到了你?  第1张 。所以复杂度是 有哪些算法惊艳到了你?  第1张 。当 有哪些算法惊艳到了你?  第1张 相当大的时候,或者只要 有哪些算法惊艳到了你?  第1张 稍稍一多,复杂度不可避免爆炸!

想必绝顶聪明的丧彪和小美,脑袋里也不会跑这种,等到大道都磨灭了,都算不出来的算法。

按位异或

我们回顾一下上面的搜索,搜索本身是在刻画我们对先手胜败的论断,而我们对搜索的优化,本质上是在对局面进行编码计算。

那有没有办法把这两者结合一下呢?即,我们能找到一种对局面的计算,使得能够刻画我们先前提到的关于先手胜败的论断。

而这个计算就是:按位异或(bitwise-xor),我们用 有哪些算法惊艳到了你?  第1张 来表示。

什么是异或:异或是简单的0 1计算规则满足:

01
001
110

即相同则返回0,不同则返回1。

什么是按位异或:对于两个 有哪些算法惊艳到了你?  第1张 位(不足 有哪些算法惊艳到了你?  第1张 就补 有哪些算法惊艳到了你?  第1张 )二进制数, 有哪些算法惊艳到了你?  第1张有哪些算法惊艳到了你?  第1张 。我们定义 有哪些算法惊艳到了你?  第1张有哪些算法惊艳到了你?  第1张 的按位异或为 有哪些算法惊艳到了你?  第1张 。也即每一位依次异或。例如 有哪些算法惊艳到了你?  第1张 ,则 有哪些算法惊艳到了你?  第1张

按位异或有什么性质:注意到0 xor 0 = 0 且 1 xor 1 = 0,所以如果 有哪些算法惊艳到了你?  第1张有哪些算法惊艳到了你?  第1张 ;类似的, 有哪些算法惊艳到了你?  第1张

这里我们给出这个神奇的定理。

定理:对于 有哪些算法惊艳到了你?  第1张 堆石堆的Nim Game,若每堆石头的数量为 有哪些算法惊艳到了你?  第1张 ,则先手必胜当且仅当 有哪些算法惊艳到了你?  第1张

证明:

我们通过验证按位异或是否满足我们前面对先手胜败的论断,来证明上述定理。

Case 1:

若场面上没有石头,即, 有哪些算法惊艳到了你?  第1张 ,则 有哪些算法惊艳到了你?  第1张 ,先手败。

Case 2:

有哪些算法惊艳到了你?  第1张 ,且 有哪些算法惊艳到了你?  第41张 。我们修改任意一个 有哪些算法惊艳到了你?  第1张 ,使得其值降低。则接下来的按位异或和必不等于0,同时也是一个合法的Nim Game行动(这是由于我们是在降低值)。即后继局面中,不可能还存在使得按位异或和还等于0的情况,即后继局面都是必胜的。所以当前局面必败。

Case 3:

有哪些算法惊艳到了你?  第1张 ,则我们考虑 有哪些算法惊艳到了你?  第1张 的二进制。其一定有一位是 有哪些算法惊艳到了你?  第1张 。我们把 有哪些算法惊艳到了你?  第1张 最高位的 有哪些算法惊艳到了你?  第1张 给拿出来,这个 有哪些算法惊艳到了你?  第1张 一定来自于某个 有哪些算法惊艳到了你?  第1张 (总不能凭空产生一个 有哪些算法惊艳到了你?  第1张 吧)。接下来,我们把 有哪些算法惊艳到了你?  第1张 中所有对应在 有哪些算法惊艳到了你?  第1张 中是 有哪些算法惊艳到了你?  第1张 的位置全部翻转(这句话有点长,注意是翻转 有哪些算法惊艳到了你?  第1张 )。这会导致两个结果

  • 有哪些算法惊艳到了你?  第1张 变小。这是由于我们之前考虑的是 有哪些算法惊艳到了你?  第1张 的最高位,所以之后翻转的位置一定都低于这个最高位,而这个最高位已经被翻转成 有哪些算法惊艳到了你?  第1张 了,所以 有哪些算法惊艳到了你?  第1张 一定是变小了。
  • 整个按位异或和变成了 有哪些算法惊艳到了你?  第1张 。这是显然的,因为我们通过翻转 有哪些算法惊艳到了你?  第1张有哪些算法惊艳到了你?  第1张 所有是 有哪些算法惊艳到了你?  第1张 的地方也同时翻转了。

这意味着,第一,这是一步合法的Nim Game操作;第二,后继局面里存在按位异或和为 有哪些算法惊艳到了你?  第1张 的局面,即后继局面里面有必败的局面。

故当前局面能通过一步合法操作,使得后继局面必败。故当前局面先手必胜。

QED

注意:咱们这里的证明实际上是个归纳证明,即假设更小的局面总是满足定理的。

利用这个性质,我们再重新设计算法就非常简单了:

有哪些算法惊艳到了你?  第64张

有哪些算法惊艳到了你?  第65张

有哪些算法惊艳到了你?  第66张

可以看到,同样计算[5, 3, 6, 2],我们利用异或和,要快很多很多。这时我们的复杂度来到了 有哪些算法惊艳到了你?  第1张

无偏博弈

现在我们来考虑更一般的无偏博弈问题。

什么是无偏博弈

类似Nim Game,无偏博弈(Impartial Game)需满足如下条件:

  • 两个游戏者轮流执行步骤;
  • 当有玩家不能动的时候,即无可执行的步骤时,游戏结束,并选出胜者;
  • 局面和操作必须是有限的;
  • 两个游戏者除开先后手外,没有任何区别;
  • 完全信息,所有游戏者都能看到整个局势;
  • 无随机行动。所有行动都确定性地将目前局势转变到下一个局势。

例如我们常见的象棋围棋等,就不是无偏博弈,因为双方除开先后手区别,所持有的棋子也不一样。

另外像麻将,扑克等桥牌也不是,因为不是完全信息,每个游戏者不能看清整个局势。

那除开Nim Game,有什么其他游戏是无偏博弈的呢?这里给出一些例子。

Chomp:一块 有哪些算法惊艳到了你?  第1张 的巧克力板,左上角那块有毒。丧彪和小美轮流选一块巧克力,选择之后,需要吃掉这块以及其右下方的所有剩余巧克力。谁吃掉有毒那块,谁就输了:

有哪些算法惊艳到了你?  第69张

图来自wiki

Notakto:Notakto是井字棋的变种。考虑有 有哪些算法惊艳到了你?  第1张 个井字棋棋盘,丧彪和小美都使用 有哪些算法惊艳到了你?  第1张 来作为棋子。每人每轮可以再任意一个还没结束的井字棋棋盘里面下一个 有哪些算法惊艳到了你?  第1张 ,当一个井字棋棋盘中出现三连,则此棋盘结束。当没有井字棋棋盘可以下子的时候,输掉。

有哪些算法惊艳到了你?  第73张

图来自wiki

无偏博弈的组合游戏:是的没错,无偏博弈的组合依然是无偏博弈。例如我们可以同时玩Nim Game和Notakto。丧彪和小美,每轮可以选择去拿Nim Game里面的石头,或者是填Notakto里面的井字棋。谁没有操作可以做了,谁就输了。

那这种更一般的无偏博弈问题,我们该如何解决呢?

Sprague–Grundy 定理

类似我们在Nim Game中的处理,我们需要一个指标,来刻画当前局面的输赢。

我们定义函数 有哪些算法惊艳到了你?  第1张 为集合 有哪些算法惊艳到了你?  第1张 中最小的没有出现过的自然数,即:

有哪些算法惊艳到了你?  第1张

例如 有哪些算法惊艳到了你?  第1张有哪些算法惊艳到了你?  第1张

接下来,我们定义一个函数 有哪些算法惊艳到了你?  第1张

对于一个单局游戏(例如Nim Game中的一堆石头,或者Notakto中的一个井字棋)的状态 有哪些算法惊艳到了你?  第1张

  • 若其无后继局面,即无路可走的必输局面,则 有哪些算法惊艳到了你?  第1张
  • 若其后继局面为 有哪些算法惊艳到了你?  第1张 ,则 有哪些算法惊艳到了你?  第1张

Sprague–Grundy 定理:对于一个有 有哪些算法惊艳到了你?  第1张 个单独游戏组合而成的局面 有哪些算法惊艳到了你?  第1张 ,若其每个游戏的状态为 有哪些算法惊艳到了你?  第1张 ,则局面 有哪些算法惊艳到了你?  第1张有哪些算法惊艳到了你?  第1张 值为: 有哪些算法惊艳到了你?  第1张 。且局面 有哪些算法惊艳到了你?  第1张 先手必胜当且仅当 有哪些算法惊艳到了你?  第1张

有点绕是不是?我们举些例子:

比较容易观察到,对于Nim Game而言,每一堆石头的 有哪些算法惊艳到了你?  第1张 函数应当等于这堆石头本身的数量,例如下图所示:

有哪些算法惊艳到了你?  第93张

三个石头的石头堆,SG函数等于3,因其后继为0,1,2,未出现的最小自然数为3

我们再给出一个Notakto的例子:

有哪些算法惊艳到了你?  第94张

终止局面,SG=0,往上推导可知,初始局面SG=2

对于组合的游戏:

有哪些算法惊艳到了你?  第95张

场面的SG值为0,先手败,所以丧彪输,小美赢

证明这里就不详细展开了,可以留作小伙伴们自己思考,聪明的小伙伴可以在评论区留下自己的想法。这里给出一些提示:

SG函数的构造,使得任何一个无偏博弈问题,可以转换为一个Nim Game

算法

依靠Sprague–Grundy 定理,判定一个无偏博弈问题是否为先手必胜,我们只需要:

  • 找到每个单独游戏的后继状态集合
  • 递归,用mex函数计算每个单独游戏的SG值
  • 若当前局面为若干个独立的单独游戏的组合,则利用按位异或计算SG值
  • 最终计算出初始局面的SG值,若其大于0,则先手必胜,否则先手必败。

写在后面

Nim Game的巧妙在于其通过引入二进制按位异或,来解决一个看起来和二进制毫无关系的问题。

求个点赞!关注!收藏!

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/11/2220.html

分享给朋友:

相关文章

OZON平台什么产品好卖?

ozon选品的核心重点我不说 你们全网也不见说的这么干的教学了你信我就按照我说的思路去走 不信的出去买课去 一时间消化不了的先点赞收藏起来 真不中了下载也行 因为最近总有坏人给我使诈 平台已经下了我八个视频了 还都是实操教学不废话的那种 气...

为什么我们一直在给B站充大会员但B站却一直处于亏损状态?

我讲一下离谱的真相吧,欢迎喷我。很多人都觉得B站在赶走人才,赶走优秀的长视频创作者,也觉得知乎在这么做,是没错的。确实在这么做。而原因很简单。只有影响力很大的KOL才有商业价值。(KOL是指“关键意见领袖”)而你说你是人才?对不起,人才不赚...

抖音和快手最大的区别是什么?

1、目标人群定位不同抖音:一二线城市,占比52%,大专学历以上,女性偏多。抖音以年轻群体居多。快手:三四线城市,占比64%,高中学历以下,男女更均衡。快手所覆盖的年龄段范围更广。2、内容创作的形式和深度不同抖音:偏深层,内容的装饰及表达更高...

如何看待台积电,三星相继停供大陆7nm及更先进芯片?

在这个事出来之前,我就看到过一个说法,两家Foundry可以在中东建厂,让中东的Fab去干“脏活”。本质上是国内企业搞几个中东的代理人,装作是中东的初创Fabless企业去下单,人家Foundry大概率睁一只眼闭一只眼,只管数钱。然而,紧接...

阿里云服务器续费价格好贵,想换一家云服务厂商,该怎么选择?

阿里云服务器续费价格好贵,想换一家云服务厂商,该怎么选择?

最近一台买了3年时间的腾讯云轻量服务器到期了,还有5天时间。当时买的价格是3年198元。配置是2核CPU、4GB内存,80GB SSD云硬盘,1200GB 流量包,然后中途给免费升级了CPU,从2核变成了4核。平均下来一年的费用70元不到,...

你怎么看待软件测试这个工作的?

你怎么看待软件测试这个工作的?

先说一个插曲:上个月我有同学在深圳被裁员了,和我一样都是软件测试,不过他是平安外包,所以整个组都撤了,他工资和我差不多都是14K。现在IT互联网已经比较寒冬,特别是软件测试,裁员先裁测试,这几乎都是定律。我最近看了某音很多应届生以及去年毕业...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。